迭彩流年 發表於 2017-7-3 08:35:00

百亿互金平台技术栈大起底

<p>技术栈(technology stack)就是一个公司的透视镜,从某些程度上可以展示出公司的技术实力。从技术桟也可以看出整个平台的技术要素,平台大小规模等,今天来给大家分享我司的技术全家桶。</p>
<p><img src="http://www.ityouknow.com/assets/images/2017/architecture/programming-languages.jpg" alt="" loading="lazy"></p>
<h2 id="总览">总览</h2>
<p>闲来无事就想着还可以总结总结什么,平台架构、事故解决方案等以前都写过了,这次就主要写写我们都用过那些技术吧。我分了五块内容来介绍我们的技术栈:前端、后端、中间件、运维和工具。画了一个思维导图方便大家整体预览。</p>
<p><img src="http://www.ityouknow.com/assets/images/2017/architecture/technology-stack.png" alt="" loading="lazy"><br>
点击这里看大图</p>
<p>接下来就展开来说</p>
<h2 id="前端">前端</h2>
<p><img src="http://www.ityouknow.com/assets/images/2017/architecture/frontend.png" alt="" loading="lazy"></p>
<p>我司的前端比较简单主要分为了三大块:PC前端、移动端、模板引擎。</p>
<ul>
<li>PC前端 主要使用了H5、JS,还有很多其它的组件,但以前两者为主。少量的使用过angularjs,最后效果不是特别好,放弃了</li>
<li>移动端 分了三块:安卓、IOS、WAP。安卓前期主要以Java语言为主,现在慢慢在考虑kotlin;IOS以Objective-c为主,少量使用Swift;WAP又称H5,用于微信或者手机浏览器,也是使用Html5、js、少量使用了VUE,H5端的一些JS组件和PC会有不同,一般都有对应的替代品比如:使用zepto替代jquery。</li>
<li>模板引擎 前期一直使用的是Beetle,大量使用springboot后替换为Thymeleaf,Thymeleaf使用体验很不错。</li>
</ul>
<h2 id="后端">后端</h2>
<p>后端以开发语言的角度给大家介绍</p>
<p><img src="http://www.ityouknow.com/assets/images/2017/architecture/backend.png" alt="" loading="lazy"></p>
<p>后端使用的开发语言有:php、golang、python和Java。</p>
<ul>
<li>php 我们公司的前端的网站都是使用php开发,框架主要使用了thinkphp,小项目试验性的用了laravel。</li>
<li>golang 主要用于大数据,使用gin框架,用beego做过一个后台。</li>
<li>python 没有在公司用过,自己写小爬虫玩。</li>
<li>java公司最主要的开发语言,核心系统、支撑系统、服务组件均使用Java开发,下面详细介绍一下。</li>
</ul>
<p>Java技术栈比较多,这里挑选了几个具有代表性的来讲:</p>
<ul>
<li>spring 做Java开发的,几乎离不开spring全家桶了,不需要多介绍。</li>
<li>alibaba 阿里这两年非常牛逼,也开源了不少的东西,主要使用过dubbo和druid,都很优秀。</li>
<li>apache 如果说搞Java的离不开spring,那么搞开发的就离不开apache,我们主要使用了commons、cxf、zookepper等。</li>
<li>orm框架 基本以mybatis为主,hibernate和jpa为辅的模式。</li>
<li>quartz 定时任务使用的quartz</li>
</ul>
<h2 id="中间件">中间件</h2>
<p>这里面是比较泛的中间件集合,把相关的组件也都包含进来,主要分为:数据库、web容器、消息、缓存、文件服务器和安全。</p>
<p><img src="http://www.ityouknow.com/assets/images/2017/architecture/middleware.png" alt="" loading="lazy"></p>
<ul>
<li>数据库 业务主要使用mysql,需要跑批统计的离线数据由tungsten replicator同步到mongodb。</li>
<li>web容器php使用的apache,Java使用的tomcat,静态资源代理使用的是nginx</li>
<li>消息最开始使用activemq,后来架构升级全面替换为rabbitmq</li>
<li>缓存 满标控制使用memcached,后端业务缓存使用redis</li>
<li>文件服务器最开始使用nginx做图片服务器,后来上线合同就全面使用了fastdfs</li>
<li>安全 https证书保证传输安全,shiro做权限控制,oauth做登录认证。</li>
</ul>
<h2 id="运维">运维</h2>
<p>运维是平台的生命线,主要分为六部分:监控、负载均衡、CI(持续集成)、服务器、自动化部署和网络</p>
<p><img src="http://www.ityouknow.com/assets/images/2017/architecture/ops.png" alt="" loading="lazy"></p>
<ul>
<li>监控 主要使用了zabbix来监控服务器的各项指标,少量使用shell脚本和crontab</li>
<li>负载 使用VIP来做均衡负载,也就是LVS。</li>
<li>CI 持续集成工具主要使用了jenkins。Java依赖使用maven为主,gradle少量使用,版本控制svn为主,少量使用git</li>
<li>服务器 线上服务器大多使用的是centos 6.5。少量使用7.0。测试环境使用vsphere来虚拟化</li>
<li>自动化部署这块还在研究,备选有:puppet、ansible、saltstack。</li>
<li>网络 使用Wireshark做网络分析</li>
</ul>
<h2 id="工具">工具</h2>
<p>优秀的工具可以让工作事半功倍,节省很多时间。这里分开发、测试、数据库、画图和运维五个维度来介绍</p>
<p><img src="http://www.ityouknow.com/assets/images/2017/architecture/tools.png" alt="" loading="lazy"></p>
<ul>
<li>开发 Java常用的开发工具:eclipse和idea。前两年一直使用的是eclipse,但eclipse对spring boot支持的不够友好,后来就全面使用了idea;php开发工具比较多,我司开发人员主要使用phpstorm和zend,集成环境使用upupw;前端使用WebStorm和sublime3;golang开发工具liteide,IOS使用xcode。</li>
<li>测试自动化测试工具selenjum,性能测试使用jmeter或者loadrunner,开发人员一般使用jmeter。接口测试使用postman;移动端测试使用 appiumforandroid和appiumforIOS;抓包工具使用 firebug、MIniSniffer、Fiddler。</li>
<li>数据库mysql数据库可视化工具常用navicat,生产使用Workbench,少部分开发人员使用sqlyog和phpMyAdmin。mongodb使用MongoVUE,表设计用PowerDesigner。</li>
<li>画图 架构图设计使用Visio,也尝试过processon;思维导图使用Xmind。</li>
<li>运维 运维工具使用xftp或者SecureCRT</li>
</ul>
<blockquote>
<p>本文所有示例图均使用xmind,需要原图的同学请在公众号回复:xmind。</p>
</blockquote>
<p><em>互金文章系列:</em></p>
<ul>
<li>从零到百亿互联网金融架构发展史</li>
<li>一次生产事故的优化经历</li>
<li>一次dns缓存引发的惨案</li>
<li>一个脚本引发的血案</li>
<li>互联网金融大战黑客</li>
<li>百亿互金平台救火故事</li>
<li>如何做一个对账系统</li>
</ul>


</div>
<div id="MySignature" role="contentinfo">
    <div>
      <p style="border-top: #e0e0e0 1px dashed; border-right: #e0e0e0 1px dashed; border-bottom: #e0e0e0 1px dashed; border-left: #e0e0e0 1px dashed; padding-top: 5px; padding-right: 10px; padding-bottom: 10px; padding-left: 150px; background: url(&quot;https://images.cnblogs.com/cnblogs_com/ityouknow/914073/o_keep.jpg&quot;) #e5f1f4 no-repeat 1% 50%; font-family: 微软雅黑; font-size: 11px" id="PSignature">
            <br>
            作者:<span style="font-weight: bold; font-size: large">纯洁的微笑</span>
            <br>
            出处:www.ityouknow.com
            <br>
            资源:微信搜<strong>【纯洁的微笑】</strong>关注我,回复 <strong>【程序员】【面试】【架构师】</strong>有我准备的一线程序必备计算机书籍、大厂面试资料和免费电子书。 <strong>一共1024G的资料,希望可以帮助大家提升技术和能力。</strong>
            <br>
            <br>
            <span style="font-size: large; color: #F00; display: none">
            本文如对您有帮助,还请多帮 【推荐】 下此文。
</span><br>
            <span style="font-size: large; color: #F00">点我了解:Cxy521-程序员一站式导航网站
      </span>
         <br>
      </p>
    </div><br><br>
来源:https://www.cnblogs.com/ityouknow/p/7109417.html
頁: [1]
查看完整版本: 百亿互金平台技术栈大起底