1. 程式人生 > >挖財後端架構簡介

挖財後端架構簡介

挖財後端技術用的主要是比較大眾的東西,Web容器用Tomcat,框架主要是Spring MVC,也有少量的Play,中間服務層是Dubbo,微容器用Spring Boot,服務註冊這一塊是用ZooKeeper,核心業務開發方式還是圍繞著Spring和Mybatis等;資料的儲存這塊是MySQL和Hbase,分佈儲存這塊是用阿里巴巴之前開源的一箇中間件Cobar。訊息和實時計算這塊主要是Kafka, Storm,日誌以及監控系統則是用典型的ELK和Zabbix另外我們將要放棄MongoDB和Memcached,並不是這些產品自身的問題,而是人的因素,最早的架構師對MongoDB很熟,後來因為他離開,這塊的一些問題缺乏強有力的人把控,就放棄了。其他人對MySQL和Hbase更熟悉,並且這兩種組合基本滿足我們的需求了。Memcached則是被Redis替代。總的來說,我們裁剪掉了一些之前使用的相似產品,減少為一種,主要是基於自身運維能力考慮的,不在於這些技術是否足夠好或者是否符合團隊的特性和遇到的問題,而是你能不能把它維護的好,或者說風險控制好。

業務上面我們大概也是比較典型的。基礎設施是一塊,然後中間是服務,上面是日常的應用。基礎設施就包括典型的儲存、訊息、框架,還有釋出、運維、監控等等。中間就是現在典型的SOA服務,使用者的資產、服務、流水、交易等等,所有的服務採用Spring Boot打包部署,主要便於運維上的統一和方便做一些切面層的事情。最上面是應用,包括社群、記帳、錢管家、理財。而安全和風控會切入在每一個環節。

其實作為一個網際網路的金融公司,很多時候我們對金融會有一點點陌生,在我們看來做一個理財產品或者一個理財業務其實和電商業務有很大的相似之處。主要就是理財產品,他也是一個商品,這個商品可能有高的回報,最初形成這個商品的時候背後有一套綜合系統或者說有一套邏輯。並且購買這個商品之後,這個商品是有歷史的,他的收益是在變化的,所以簡化之後,我們發現跟電商系統是相似的。

這就是典型的架構,前面是Web或Gateway,中間是Service,中間層協議是Dubbo預設方式或者是HTTP。

資料儲存這一塊主要是MySQL和Hbase,當前還有小部分資料使用的Mongo,ORMapping這塊我們用了MyBatis。資料的水平擴充套件主要是基於剛才提到的Cobar,它是阿里比較成功的開源產品之一。Cobar支援資料的二維擴充套件,能滿足我們的場景,比如說幾千萬使用者的流水記錄可以按使用者加時間的維度來劃分。如果單純按時間的維度分割槽,在查詢使用者的流水時要散落到各個分割槽上,對各個分割槽的壓力都較大。而按使用者的維度則可能導致這個分割槽在一定時間後達到我們預設的容量上線,因為一天有幾百萬甚至上千萬的流水進入。二維的方式可以解決這些問題。儘管我們後來發現使用者的資料大多在最近一段時間內較熱,時間比較早的資料相對較冷,只用了Cobar的一維擴充套件方式,將冷資料歸檔到Hbase叢集來解決。在資料的線上處理這塊,有很多用Akka框架的程式,比如計息系統主要是運算的,所以Akka很適合幹這個事情。

自動記帳這塊主要是錢管家這款產品,他會根據銀行的帳單把這些資料彙總到這個產品裡面,主要是從其他系統匯聚出原始的資料,根據這些資料我們會進行分類,進行加工和抽取,最後彙總到database,這個過程的思路就是command+pipeline下面這套組合,只不過是分散式命令和管道,分散式裡面命令是Akka所承擔的角色。

資料分析這塊,Canal會把binlog資料丟到Kafka然後同步到其他系統。線上分析主要通過Storm進行,資料分析過程中快取用了豌豆莢的Codis。離線分析目前用Hadoop/Spark的方式,資料分析之後,一部分存到Hbase,另一部分在通過Cober儲存到MySQL裡面。

https://www.cnblogs.com/linjiqin/p/6406853.html