百億互金平臺技術棧大起底

純潔的微笑發表於2017-07-03

技術棧(technology stack)就是一個公司的透視鏡,從某些程度上可以展示出公司的技術實力。從技術桟也可以看出整個平臺的技術要素,平臺大小規模等,今天來給大家分享我司的技術全家桶。

總覽

閒來無事就想著還可以總結總結什麼,平臺架構、事故解決方案等以前都寫過了,這次就主要寫寫我們都用過那些技術吧。我分了五塊內容來介紹我們的技術棧:前端、後端、中介軟體、運維和工具。畫了一個思維導圖方便大家整體預覽。


點選這裡看大圖

接下來就展開來說

前端

我司的前端比較簡單主要分為了三大塊:PC前端、移動端、模板引擎。

  • PC前端 主要使用了H5、JS,還有很多其它的元件,但以前兩者為主。少量的使用過angularjs,最後效果不是特別好,放棄了
  • 移動端 分了三塊:安卓、IOS、WAP。安卓前期主要以Java語言為主,現在慢慢在考慮kotlin;IOS以Objective-c為主,少量使用Swift;WAP又稱H5,用於微信或者手機瀏覽器,也是使用Html5、js、少量使用了VUE,H5端的一些JS元件和PC會有不同,一般都有對應的替代品比如:使用zepto替代jquery。
  • 模板引擎 前期一直使用的是Beetle,大量使用springboot後替換為Thymeleaf,Thymeleaf使用體驗很不錯。

後端

後端以開發語言的角度給大家介紹

後端使用的開發語言有:php、golang、python和Java。

  • php 我們公司的前端的網站都是使用php開發,框架主要使用了thinkphp,小專案試驗性的用了laravel。
  • golang 主要用於大資料,使用gin框架,用beego做過一個後臺。
  • python 沒有在公司用過,自己寫小爬蟲玩。
  • java 公司最主要的開發語言,核心系統、支撐系統、服務元件均使用Java開發,下面詳細介紹一下。

Java技術棧比較多,這裡挑選了幾個具有代表性的來講:

  • spring 做Java開發的,幾乎離不開spring全家桶了,不需要多介紹。
  • alibaba 阿里這兩年非常牛逼,也開源了不少的東西,主要使用過dubbo和druid,都很優秀。
  • apache 如果說搞Java的離不開spring,那麼搞開發的就離不開apache,我們主要使用了commons、cxf、zookepper等。
  • orm框架 基本以mybatis為主,hibernate和jpa為輔的模式。
  • quartz 定時任務使用的quartz

中介軟體

這裡面是比較泛的中介軟體集合,把相關的元件也都包含進來,主要分為:資料庫、web容器、訊息、快取、檔案伺服器和安全。

  • 資料庫 業務主要使用mysql,需要跑批統計的離線資料由tungsten replicator同步到mongodb。
  • web容器 php使用的apache,Java使用的tomcat,靜態資源代理使用的是nginx
  • 訊息 最開始使用activemq,後來架構升級全面替換為rabbitmq
  • 快取 滿標控制使用memcached,後端業務快取使用redis
  • 檔案伺服器 最開始使用nginx做圖片伺服器,後來上線合同就全面使用了fastdfs
  • 安全 https證照保證傳輸安全,shiro做許可權控制,oauth做登入認證。

運維

運維是平臺的生命線,主要分為六部分:監控、負載均衡、CI(持續整合)、伺服器、自動化部署和網路

  • 監控 主要使用了zabbix來監控伺服器的各項指標,少量使用shell指令碼和crontab
  • 負載 使用VIP來做均衡負載,也就是LVS。
  • CI 持續整合工具主要使用了jenkins。Java依賴使用maven為主,gradle少量使用,版本控制svn為主,少量使用git
  • 伺服器 線上伺服器大多使用的是centos 6.5。少量使用7.0。測試環境使用vsphere來虛擬化
  • 自動化部署 這塊還在研究,備選有:puppet、ansible、saltstack。
  • 網路 使用Wireshark做網路分析

工具

優秀的工具可以讓工作事半功倍,節省很多時間。這裡分開發、測試、資料庫、畫圖和運維五個維度來介紹

  • 開發 Java常用的開發工具:eclipse和idea。前兩年一直使用的是eclipse,但eclipse對spring boot支援的不夠友好,後來就全面使用了idea;php開發工具比較多,我司開發人員主要使用phpstorm和zend,整合環境使用upupw;前端使用WebStorm和sublime3;golang開發工具liteide,IOS使用xcode。
  • 測試 自動化測試工具selenjum,效能測試使用jmeter或者loadrunner,開發人員一般使用jmeter。介面測試使用postman;移動端測試使用 appiumforandroid和appiumforIOS;抓包工具使用 firebug、MIniSniffer、Fiddler。
  • 資料庫 mysql資料庫視覺化工具常用navicat,生產使用Workbench,少部分開發人員使用sqlyog和phpMyAdmin。mongodb使用MongoVUE,表設計用PowerDesigner。
  • 畫圖 架構圖設計使用Visio,也嘗試過processon;思維導圖使用Xmind。
  • 運維 運維工具使用xftp或者SecureCRT

本文所有示例圖均使用xmind,需要原圖的同學請在公眾號回覆:xmind。

互金文章系列:


喜歡我的文章,請關注我的公眾號

相關文章