电竞比分网-中国电竞赛事及体育赛事平台

分享

余額寶技術(shù)架構(gòu)及演進(jìn)

 long16 2016-07-15

余額寶技術(shù)架構(gòu)及演進(jìn)陳雨,具有 8 年的軟件研發(fā)和技術(shù)管理工作經(jīng)驗(yàn),專注于互聯(lián)網(wǎng)金融、云計(jì)算、大數(shù)據(jù)等領(lǐng)域的發(fā)展動(dòng)態(tài)和創(chuàng)新,目前在天弘基金負(fù)責(zé)基金注冊登記系統(tǒng)架構(gòu)和研發(fā)工作。

余額寶總結(jié)起來包括這樣幾個(gè)屬性,第一它是一個(gè)傳統(tǒng)的貨幣基金,但它把 T + 0 做到極致,另外他管理大量的用戶資產(chǎn)。同時(shí)他具備極簡的用戶體驗(yàn),符合互聯(lián)網(wǎng)精神。我們在網(wǎng)頁、支付寶 APP 或者其他途徑能快速方便的進(jìn)行基金申贖,它的應(yīng)用渠道也非常多和廣。

可以說從余額寶開始,真正的進(jìn)入一個(gè)全民理財(cái)?shù)臅r(shí)代,接下來給大家分享一下幾個(gè)數(shù)字。余額寶用戶數(shù)可以說達(dá)到了接近于 1/4 國人數(shù)量,日交易峰值可以達(dá)到兩億筆,最大并發(fā)數(shù)可以達(dá)到每秒五千筆。截止 2016 年上一季度公開披露信息,規(guī)模已經(jīng)達(dá)到六千億以上。

余額寶技術(shù)架構(gòu)及演進(jìn)

從余額寶的創(chuàng)新來說可以從兩個(gè)方面去講它,一是業(yè)務(wù)上的創(chuàng)新,他對(duì) T + 0 發(fā)揮到極致,是現(xiàn)金管理工具,是底層帳戶。還有就是嵌入式直銷,把貨幣基金嫁接到支付寶上去。當(dāng)時(shí)來講應(yīng)該是一個(gè)在行業(yè)內(nèi)是具有非常大的一個(gè)開創(chuàng)意義的一件事情。

技術(shù)上創(chuàng)新是今天重點(diǎn)要說的事情:

  1. 基金直銷和 TA 清算的整合。傳統(tǒng)的基金系統(tǒng)直銷和清算是分開。直銷系統(tǒng)每天要把數(shù)據(jù)以文件形式導(dǎo)入清算系統(tǒng)里去。這件事情我們做了很大的改進(jìn),這么大體量數(shù)據(jù)來說,每天導(dǎo)入導(dǎo)出這個(gè)數(shù)據(jù)不可想象,在這里做了一個(gè)直銷和 TA 融合,后面我會(huì)有一個(gè)詳細(xì)的介紹。

  2. 交易的簡化,監(jiān)管大的框架下,滿足監(jiān)管要求的基礎(chǔ)上,我們對(duì)交易邏輯做了很大的一個(gè)簡化。

  3. 余額寶是核心業(yè)務(wù)在云上運(yùn)行的系統(tǒng)。這是余額寶技術(shù)方面的創(chuàng)新。

架構(gòu)演進(jìn)歷史

一期 IOE 架構(gòu)

下面介紹一下一期的架構(gòu),很明顯看到就是傳統(tǒng)的 IOE 架構(gòu)。底層存儲(chǔ)是 EMC 存儲(chǔ)。中間層就是采用小型機(jī),其中 KCXP 和 KCBP 是金證公司的消息中間件和業(yè)務(wù)中間件。往上前端是前置解析是用的 WebLogic,負(fù)載均衡用的硬件負(fù)載均衡。

余額寶技術(shù)架構(gòu)及演進(jìn)

這個(gè)架構(gòu)對(duì)它的定位滿足需求首先是支持千萬級(jí)用戶,傳統(tǒng)基金銷售模式是走代銷機(jī)構(gòu)的方式,投資基金用戶也是以理財(cái)為目的。所以每天可能處理的帳戶的開戶可能也就是幾萬到幾十萬的規(guī)模。由于余額寶對(duì)接是支付寶,支付寶有龐大的用戶群,在用戶規(guī)模上要達(dá)到千萬級(jí),這是當(dāng)時(shí)對(duì)需求的定位。

第二點(diǎn)就是剛才提到把直銷系統(tǒng)和 TA 清算系統(tǒng)做了融合,在數(shù)據(jù)庫層面是共享的,避免數(shù)據(jù)再做一次導(dǎo)出和導(dǎo)入,對(duì)清算也節(jié)省了很多時(shí)間。

另外一點(diǎn)是傳統(tǒng)基金的互聯(lián)網(wǎng)化。傳統(tǒng)基金只需要做到系統(tǒng)的 5 × 8 可用性,對(duì)接支付寶以后,要做 7 × 24 小時(shí)可用性。

2013 年 6 月,一期系統(tǒng)如期上線,業(yè)務(wù)規(guī)模遠(yuǎn)遠(yuǎn)超出我們想象。運(yùn)營和運(yùn)維人員反饋清算時(shí)間太長,基本上要從凌晨開始到早上八點(diǎn),每天都是這樣,我們感受到巨大的壓力。另外當(dāng)年要參加支付寶這邊的雙 11 活動(dòng),以當(dāng)時(shí)的系統(tǒng)處理能力來講,肯定是做不到的。

二期云端架構(gòu)

基于這些原因,需要對(duì)一期的系統(tǒng)做優(yōu)化,怎么優(yōu)化?二期架構(gòu)用一個(gè)詞概括就是上云,充分利用云計(jì)算的計(jì)算能力,包括云計(jì)算對(duì)存儲(chǔ)的處理能力。

余額寶技術(shù)架構(gòu)及演進(jìn)

整個(gè)架構(gòu)進(jìn)行了水平拆分。前面一期架構(gòu)實(shí)際上就是一路的處理,到了二期把它分成多路。

從數(shù)據(jù)庫層面分成多個(gè) RDS(阿里云一款基于MySQL的關(guān)系型數(shù)據(jù)庫產(chǎn)品)。另外一個(gè)就是去Oracle,很多利用數(shù)據(jù)庫存儲(chǔ)過程計(jì)算的部分,移到計(jì)算單元完成。

第三點(diǎn)是把直銷和 TA 再次在計(jì)算資源層面分離。余額寶系統(tǒng)的數(shù)據(jù)處理,包括實(shí)時(shí)處理和批量處理。過去在一期架構(gòu)的時(shí)候發(fā)現(xiàn)清算時(shí),數(shù)據(jù)庫負(fù)荷非常高,嚴(yán)重影響實(shí)時(shí)請求體驗(yàn)。所以在上云之后,在計(jì)算資源這塊再次對(duì)它進(jìn)行了分離,主要目的是提升客戶體驗(yàn)。上云之后,當(dāng)然充分利用了云計(jì)算的優(yōu)勢,其中很主要一個(gè)優(yōu)勢就是可擴(kuò)展性。

水平拆分

接下來詳細(xì)介紹一下是怎么來做水平拆分。

第一點(diǎn)如何來分,以什么維度來分?最后確定以用戶維度,這樣最終處理時(shí)間與用戶交易的均衡程度有關(guān)。確定以用戶維度進(jìn)行拆分之后,確定哪些點(diǎn)來進(jìn)行拆分,同樣還是從用戶角度出發(fā),帳戶、交易、份額、份額明細(xì)、份額變動(dòng)等等。對(duì)于歷史表直接合到倉庫里去了,因?yàn)槊咳涨逅阃曛?,?dāng)日數(shù)據(jù)直接把它歸檔掉。

拆分之后,涉及到這樣一個(gè)問題,TA 系統(tǒng)因?yàn)檫€要與周邊的系統(tǒng)進(jìn)行交互,交互的接口同樣還是文件,數(shù)據(jù)導(dǎo)入需要先把文件拆成多份,再把每一份導(dǎo)入 TA,數(shù)據(jù)導(dǎo)出時(shí)系統(tǒng)要導(dǎo)出多份文件,再合并為一份。

總控

拆分最大的難點(diǎn)是在總控節(jié)點(diǎn)的處理,剛才說了 worker 節(jié)點(diǎn)能夠保持松耦合,但仍需要通過總控節(jié)點(diǎn)進(jìn)行統(tǒng)一協(xié)調(diào),保持事務(wù)一致性。

最后數(shù)據(jù)核對(duì)階段,也是要由總控匯總節(jié)點(diǎn)上的數(shù)據(jù),按照清算規(guī)則對(duì)數(shù)據(jù)進(jìn)行核對(duì)。還有很重要的收益分配部分,采用兩個(gè)階段來做,第一階段由總控節(jié)點(diǎn)分配到每個(gè)節(jié)點(diǎn)上去。,然后在節(jié)點(diǎn)范圍分配到用戶粒度。

下圖是上云前后指標(biāo)上的一個(gè)對(duì)比,上云前基本上核心清算工作要做八個(gè)小時(shí),上云之后在千秒以內(nèi)可以完成。所以二期上云以后,IT 終于可以喘口氣。目前來講應(yīng)對(duì)春節(jié)、雙11、國慶長假等場景,系統(tǒng)都能穩(wěn)定應(yīng)對(duì)這些。

余額寶技術(shù)架構(gòu)及演進(jìn)

這是上云前后投入產(chǎn)出對(duì)比情況,傳統(tǒng)的 IOE 架構(gòu)特點(diǎn)成本很高,硬件成本給企業(yè)帶來的壓力非常大,云計(jì)算的好處就是在成本上是可以做到很細(xì)的,并且方便按需增加,這是一個(gè)非常大的成本上的優(yōu)勢。過去投入四百萬只能支持一千萬的帳戶的量級(jí),現(xiàn)在在投入上可能只是增長一倍,支持用戶數(shù)已經(jīng)遠(yuǎn)遠(yuǎn)不止一倍了。

余額寶技術(shù)架構(gòu)及演進(jìn)

數(shù)據(jù)架構(gòu)

二期架構(gòu)可以滿足核心交易之后,還要考慮余額寶目前這么大的數(shù)據(jù)量,怎么把這個(gè)數(shù)據(jù)用好。

近一年來很多工作都是考慮數(shù)據(jù)后處理這塊。其中數(shù)據(jù)來源于業(yè)務(wù)數(shù)據(jù)、日志數(shù)據(jù)和其他數(shù)據(jù)。我們推進(jìn)數(shù)據(jù)倉庫的建設(shè)和數(shù)據(jù)的產(chǎn)出。工具方面我們有很多自主開發(fā)的,同時(shí)也采用了阿里采云間,以及其他外采工具,具體支撐業(yè)務(wù)包括生產(chǎn)數(shù)據(jù)分析、資金預(yù)測、數(shù)據(jù)監(jiān)控、運(yùn)營支持,合規(guī)風(fēng)控支持等等。開篇也提到了金融系統(tǒng)數(shù)據(jù)安全是重中之重,所以這塊我們也會(huì)有相關(guān)的數(shù)據(jù)安全方面的管理。

余額寶技術(shù)架構(gòu)及演進(jìn)

二期架構(gòu)的問題

二期架構(gòu)解決很多問題,但并不是盡善盡美,總結(jié)一下還是有幾個(gè)可以提高的點(diǎn):

  • 耦合。首先計(jì)算和數(shù)據(jù)的耦合還是存在的。這實(shí)際上是對(duì)系統(tǒng)的擴(kuò)展是不利的。另外,單個(gè)計(jì)算節(jié)點(diǎn)上,在業(yè)務(wù)上還是存在耦合,我們很多業(yè)務(wù)上的東西還是存在拆分的可能。

  • 數(shù)據(jù)流轉(zhuǎn),我們現(xiàn)在數(shù)據(jù)庫層面也是分布式,所以數(shù)據(jù)的抽取、同步和流轉(zhuǎn)會(huì)遇到很多現(xiàn)實(shí)的問題。

  • 運(yùn)維。在運(yùn)維方面除了遇到的傳統(tǒng)分布式系統(tǒng)的運(yùn)維遇到的一些難題之外,我們還在業(yè)務(wù)層面的運(yùn)維也會(huì)遇到一些現(xiàn)實(shí)問題。

未來演進(jìn)思考

對(duì)系統(tǒng)未來演進(jìn)思考,主要分這么幾個(gè)方面。

  1. 從大的方面來講是全局通盤考慮。我們要把核心和輔助系統(tǒng)通盤考慮,降低數(shù)據(jù)的冗余,降低數(shù)據(jù)維護(hù)成本。

  2. 數(shù)據(jù)方面要用多不同的存儲(chǔ)來解決不同場景的需求,還有剛才提到計(jì)算和存儲(chǔ)的徹底解耦,做到計(jì)算和存儲(chǔ)的獨(dú)立可擴(kuò)展。

  3. 計(jì)算方面盡量做到業(yè)務(wù)上的拆分和輕量化,化繁為簡,拆分之后把應(yīng)用服務(wù)化。

數(shù)據(jù)驅(qū)動(dòng)

我們系統(tǒng)的演進(jìn),數(shù)據(jù)量由單一小量向大量多類轉(zhuǎn)變,同時(shí)應(yīng)用種類從以交易為主到交易、分析和挖掘多種類并存。另外實(shí)時(shí)性要求也有變化,新的業(yè)務(wù)模式有時(shí)候要求實(shí)時(shí)或者準(zhǔn)實(shí)時(shí)給用戶呈現(xiàn)結(jié)果。

余額寶技術(shù)架構(gòu)及演進(jìn)

對(duì)業(yè)務(wù)來說對(duì)不同數(shù)據(jù)應(yīng)用采用不同的存儲(chǔ)。

  • 比如對(duì)于在線交易,可以采用經(jīng)過阿里支付寶驗(yàn)證過的 OB,專門用于解決金融級(jí)的分布式關(guān)系數(shù)據(jù)庫的解決方案;

  • 對(duì)于批量結(jié)算,可以繼續(xù)沿用多年來在余額寶已經(jīng)用的很嫻熟的 RDS 集群。

  • 對(duì)于 2T 到 PB 級(jí)的小數(shù)倉可以用 PetaData,解決以年度為單位的數(shù)據(jù)存儲(chǔ)。

  • 對(duì)于大規(guī)模的批量計(jì)算,數(shù)據(jù)倉庫這塊,我們直接就用 ODPS。

  • 對(duì)大表存儲(chǔ)可采用 OTS。

  • 對(duì)于分析型、挖掘類需求可采用列存數(shù)據(jù)庫。

服務(wù)化

關(guān)于拆分和服務(wù)化治理,后面考慮做的事情是充分利用阿里云的 PaaS 平臺(tái)技術(shù),把我們大應(yīng)用拆分為簡單的可橫向擴(kuò)展的小應(yīng)用。

余額寶技術(shù)架構(gòu)及演進(jìn)

在服務(wù)的調(diào)用上,每個(gè)服務(wù)同時(shí)是服務(wù)提供方也是服務(wù)調(diào)用方,由 PaaS 平臺(tái)的中間件統(tǒng)一管理服務(wù)。對(duì)我們來說是更多考慮如何基于中間件把業(yè)務(wù)來做好。服務(wù)化改造之后肯定會(huì)涉及到服務(wù)之間的調(diào)用。同步調(diào)用,可以直接走服務(wù)化的接口。

余額寶技術(shù)架構(gòu)及演進(jìn)

異步調(diào)用

異步調(diào)用主要靠消息中間件。金融系統(tǒng)對(duì)消息中間件的可靠性要求非常高,這塊我們還是沿用傳統(tǒng)思路,并不想采用開源解決方案去填那些坑,更多考慮采用成熟金融級(jí)消息中間件來做這件事情。

余額寶技術(shù)架構(gòu)及演進(jìn)

下面是一個(gè)總圖,中間 EDAS 是統(tǒng)一企業(yè)級(jí)服務(wù)化解決方案,然后通過 DTS 解決數(shù)據(jù)實(shí)時(shí)同步的問題,采用 CDP 解決離線數(shù)據(jù)同步的問題。在數(shù)據(jù)應(yīng)用上可以滿足很多的需求,比如采集系統(tǒng)或者報(bào)表展示或者是用戶短信的推送等等,這就是我們對(duì)整個(gè)未來的架構(gòu)演進(jìn)的思考。

余額寶技術(shù)架構(gòu)及演進(jìn)

Q&A

提問:都切到云上,數(shù)據(jù)安全上怎么考慮?

陳雨:之前講到金融要求是私有云,我們是在阿里金融云上,并不是在公有云上,可理解為物理上是隔離的。

提問:接口交互的技術(shù)是文件,文件的完整性和一致性如何保證的?你們自己要處理它嗎?為什么要用文件的方式?

陳雨:我們對(duì)接是支付寶,文件的正確性和準(zhǔn)確性由支付寶保證。我們需要對(duì)大文件按節(jié)點(diǎn)數(shù)拆分成小文件,然后并行處理。接口必須用文件方式,金融行業(yè)很多系統(tǒng)對(duì)接最后要走文件接口,文件是用來對(duì)帳的準(zhǔn)確性保障,實(shí)時(shí)不是那么可靠。

提問:說到計(jì)算和數(shù)據(jù)耦合,輸入輸出解開,具體大體上是怎么實(shí)施它?

陳雨: RDS 來是單機(jī)數(shù)據(jù)庫產(chǎn)品,通過分布式中間件 DRDS 或其他解決方案,以實(shí)現(xiàn)計(jì)算節(jié)點(diǎn)像使用單機(jī)數(shù)據(jù)庫一樣使用數(shù)據(jù)庫集群。

提問:咱們有基于用戶緯度拆分,主要是什么原因?qū)е挛覀円@么拆,基于用戶緯度拆分,有沒有比較坑的地方或者我們怎么避免它?

陳雨:基于用戶的拆分,一方面簽約協(xié)議號(hào)是跟支付寶的接口,還有一個(gè)考慮是以用戶為維度的查詢需求相對(duì)多。當(dāng)然其他非用戶緯度查詢就費(fèi)點(diǎn)事了。

提問:我是互聯(lián)網(wǎng)金融從業(yè)者,剛才您提到我們余額寶系統(tǒng),有清算系統(tǒng)是吧。不知道清算是有內(nèi)部清算和外部清算,我們這邊清算是怎么做的?比如說內(nèi)部清算是指交易明細(xì)和你的帳戶余額之間的比對(duì)。你外部清算可能是你本地的數(shù)據(jù)和銀行數(shù)據(jù)之間的比對(duì)。

陳雨:我所說的清算是你所說的第一種。每天做一次內(nèi)部比對(duì),計(jì)算用戶的份額和收益。

提問:之前也用過其他的消息中間件,你剛才提到成熟的消息中間件不是開源,我們其他從業(yè)者不能用到是吧?

陳雨:這涉及到一個(gè)生態(tài)圈的問題,如果進(jìn)入阿里云的生態(tài)圈,可充分享用云計(jì)算資源。如果確實(shí)是在生態(tài)圈之外,可選擇它的對(duì)應(yīng)開源版本。開源版本在版本更替上或者服務(wù)方面,跟阿里云上存在一定的差別。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多