自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

架構(gòu)揭秘:「京東白條」的數(shù)據(jù)架構(gòu)進化之路

開發(fā) 架構(gòu) 新聞
最近小伙伴在討論單體到微服務(wù)架構(gòu)中數(shù)據(jù)這塊如何演進,相信這篇能給大家?guī)韱l(fā)。

京東白條的快速發(fā)展?jié)M足了當前人們?nèi)找嬖鲩L的消費需求。在京東商城上用京東白條來支付,已經(jīng)成為一大批用戶的消費習慣,更是在某種意義上成為了京東對外的『標簽』。而作為一家互聯(lián)網(wǎng)金融消費平臺,京東白條的后臺技術(shù)團隊更是不容忽視的存在。而其也正是支撐京東白條自 2014 年初上線伊始,至今服務(wù)數(shù)億用戶的最終根源所在。正是京東白條技術(shù)團隊多年的努力,才造就了當前京東白條的『土生土長』,但具有京東白條特色的金融級數(shù)據(jù)庫選型方法論。

當京東白條的金融類業(yè)務(wù)啟動時,現(xiàn)任京東白條研發(fā)負責人張棟芳,雖然預料到了其數(shù)據(jù)體量的大幅度增長,卻沒有想到這種增長將導致數(shù)據(jù)庫選型方面的一系列變化,以及對數(shù)據(jù)庫未來發(fā)展模式的啟發(fā)。

作為京東科技旗下的殺手級金融消費應(yīng)用,今天的京東白條已經(jīng)成長為服務(wù)數(shù)億用戶、日均產(chǎn)生巨額流量的龐大金融生態(tài)。在業(yè)務(wù)和數(shù)據(jù)量飛速增長的同時,京東白條后臺的研發(fā)人員,也在緊張的焦頭爛額中....

這一點,完美契合了京東白條后臺數(shù)據(jù)架構(gòu)的成長過程。

1、技術(shù)的保質(zhì)期:從 MySQL 到 NoSQL 再到 DBRep

對于技術(shù)人而言,沒有永遠正確的技術(shù),只有最適合于當下的技術(shù)選型。

京東白條業(yè)務(wù)誕生之初正是互聯(lián)網(wǎng)金融與消費行業(yè)的高速發(fā)展期,經(jīng)歷這些年的發(fā)展,從草根走向?qū)I(yè),從弱小走向規(guī)模,從分散走向統(tǒng)一,從雜亂走向規(guī)范。京東白條的發(fā)展,正是一步步見證了國內(nèi)互聯(lián)網(wǎng)消費金融產(chǎn)業(yè)的快速迭代。

同樣,京東白條的技術(shù)選型歷程,也可作為國內(nèi)互聯(lián)網(wǎng)消費金融產(chǎn)業(yè)發(fā)展過程的一個縮影。

從技術(shù)架構(gòu)的角度來看,并沒有絕對的好與不好,需要放在彼時的背景下來看,要考慮業(yè)務(wù)的時效價值、團隊的規(guī)模和能力、環(huán)境基礎(chǔ)設(shè)施等等方面。只有架構(gòu)演進的生命周期適時匹配好業(yè)務(wù)的生命周期,才能發(fā)揮最好的效果。

2014~2015

Solr + HBase 的方案解決了核心、非核心業(yè)務(wù)系統(tǒng)對關(guān)鍵數(shù)據(jù)庫的訪問問題,Solr 作為被檢索字段的索引,HBase 用作全量的數(shù)據(jù)存儲。

  • 通過 Solr 集群分擔部分讀和寫的業(yè)務(wù),緩解核心庫的壓力;
  • Solr 擴展體驗上欠佳,對業(yè)務(wù)也存在較大的入侵。

2015~2016

引入 NoSQL 方案,業(yè)務(wù)數(shù)據(jù)以月份進行分表存儲在 MongoDB 集群中,階段性滿足了結(jié)算處理場景中海量數(shù)據(jù)導入導出的需求。

  • 查詢熱點數(shù)據(jù)效率高,非結(jié)構(gòu)化的存儲方式易于修改表結(jié)構(gòu);
  • 依然面對著擴展差、對業(yè)務(wù)入侵強的局面,而且耗內(nèi)存。

2016~2017

隨著業(yè)務(wù)快速發(fā)展,數(shù)據(jù)量突破百億大關(guān),此時 MongoDB 面臨著容量和性能的雙重考驗。京東白條大數(shù)據(jù)平臺通過 DBRep 以 MySQL Slave 的形式采集變動信息并存儲到消息中心,最后落盤到 ES 和 HBase 中。

  • 該方案具有較強的數(shù)據(jù)實時性,擴展性良好;
  • 基于業(yè)務(wù)框架的數(shù)據(jù)分片難以降低代碼維護成本。

2、為了讓你能夠更痛快的剁手,他們先『分解』了自己的后臺架構(gòu)

網(wǎng)購,貴在手速,但也在于錢包的厚度。京東白條的誕生就是為了解決用戶錢包的厚度問題。如今,京東白條也打起了“閃電戰(zhàn)”。為了保證用戶在消費過程中的體驗,后臺數(shù)據(jù)庫的穩(wěn)定性與規(guī)律性,就成為了京東白條技術(shù)側(cè)亟待考慮和平衡的問題。

為保證業(yè)務(wù)系統(tǒng)在數(shù)據(jù)激增情況下始終能保持高效運行,京東白條技術(shù)團隊在設(shè)計初期使用了數(shù)據(jù)分片數(shù)據(jù)架構(gòu),發(fā)揮極致性能的同時也兼顧代碼的可控性,采用基于應(yīng)用框架的數(shù)據(jù)拆分方案完成了數(shù)據(jù)拆分工作。

其實說來說去,本質(zhì)上就是一個問題,即隨著產(chǎn)品的升級迭代,早期的解決方案逐漸演變?yōu)榱俗璧K今天前進的絆腳石。通過業(yè)務(wù)框架實現(xiàn)的數(shù)據(jù)分片方案導致業(yè)務(wù)代碼復雜度增加、維護成本不斷攀升,緊耦合的弊端逐漸顯露,應(yīng)用每次升級都需要投入較多的精力對分片做相應(yīng)調(diào)整,研發(fā)人員難以專注于業(yè)務(wù)本身。

于是,解耦成了京東白條技術(shù)突圍的唯一關(guān)鍵。在京東白條而言,主要從以下這四個方面開始解耦:

  • 數(shù)據(jù)架構(gòu)解耦,降低架構(gòu)之間的耦合度,確保不會因單獨業(yè)務(wù)線變更而導致多個后端架構(gòu)的調(diào)整;
  • 技術(shù)架構(gòu)解耦,簡化業(yè)務(wù)系統(tǒng)升級工作所帶來的復雜研發(fā)流程;
  • 業(yè)務(wù)關(guān)系解耦,需要讓用戶在使用過程中每個動作都不受影響,不另外產(chǎn)生新的學習成本,為系統(tǒng)提供良好的擴展能力,從容應(yīng)對“618”和“11.11”等平臺大促活動;
  • 研發(fā)流程解耦,解放后端研發(fā)生產(chǎn)力,減少業(yè)務(wù)代碼的復雜度。

因后臺數(shù)據(jù)庫與業(yè)務(wù)之間的耦合度過高,為整個業(yè)務(wù)的發(fā)展埋下了增速放緩的隱患。面對如上訴求,京東白條技術(shù)團隊經(jīng)權(quán)衡后開始考慮使用成熟的分庫分表組件來承擔這部分工作,讓業(yè)務(wù)系統(tǒng)升級和架構(gòu)調(diào)整不再復雜。但京東白條業(yè)務(wù)體量巨大,是名副其實的金融級高并發(fā)、海量數(shù)據(jù)的業(yè)務(wù)場景,因此在選擇分庫分表組件時應(yīng)具備以下 4 個特點:

  1. 產(chǎn)品成熟穩(wěn)定。 只有成熟且穩(wěn)定維護的產(chǎn)品,才能夠給京東白條這樣一款體量的金融產(chǎn)品予以穩(wěn)定性的保證。使用數(shù)據(jù)分片來進行架構(gòu)解耦,本身就是為了確保穩(wěn)定性;
  2. 極致性能表現(xiàn)。 金融場景下的應(yīng)用,對于數(shù)據(jù)響應(yīng)、實時反饋等性能的要求非常高。尤其在交易這種敏感且特殊的場景下,對于性能的表現(xiàn),一點也不能馬虎;
  3. 處理海量數(shù)據(jù)。 京東白條需要處理海量的用戶數(shù)據(jù),尤其在“618”、“11.11”等大促節(jié)日下,面對蜂擁而至海量交易數(shù)據(jù)與請求,要能夠在短時間內(nèi)快速處理;
  4. 架構(gòu)靈活擴展。 業(yè)務(wù)靈活多變是當前互聯(lián)網(wǎng)產(chǎn)品的共性。

對此,京東白條從多個方面考慮自研框架與成熟分庫分表中間件 ShardingSphere 優(yōu)劣性,性能對比圖如下:

基于自研框架分片

基于 ShardingSphere 分片

性能

代碼耦合度

業(yè)務(wù)入侵程度

升級難度

擴展性

一般

良好

最終,京東白條選擇采用 Apache ShardingSphere 來進行金融級別的數(shù)據(jù)庫分片任務(wù)。

3、場景趨于融合,但數(shù)據(jù)庫卻無法相容:Apache ShardingSphere 解決方案

京東白條采用 Apache ShardingSphere-JDBC 解決方案處理在線應(yīng)用。ShardingSphere-JDBC 是 Apache ShardingSphere 的第一款產(chǎn)品,它定位為輕量級 Java 框架,在 Java 的 JDBC 層提供的額外服務(wù)。它使用客戶端直連數(shù)據(jù)庫,以 jar 包形式提供服務(wù),無需額外部署和依賴,可理解為增強版的 JDBC 驅(qū)動,完全兼容 JDBC 和各種 ORM 框架。

ShardingSphere-JDBC 的以下特點能夠很好地滿足白條業(yè)務(wù)場景:

  • 產(chǎn)品成熟: 經(jīng)數(shù)年打磨產(chǎn)品成熟度高,且社區(qū)活躍;
  • 性能良好: 微內(nèi)核、輕量化的設(shè)計,性能損耗極??;
  • 改造量?。?/span> 支持原生的 JDBC 接口,研發(fā)工作量?。?/li>
  • 擴展靈活: 搭配使用遷移同步組件輕松實現(xiàn)數(shù)據(jù)擴展。

img

經(jīng)內(nèi)部大量系統(tǒng)性驗證之后,Apache ShardingSphere 成為了京東白條數(shù)據(jù)分片中間件的首選方案,2018 年底正式開始對接。

產(chǎn)品適配

為全面支撐白條業(yè)務(wù)、提供更好的業(yè)務(wù)體驗,Apache ShardingSphere 在京東白條業(yè)務(wù)落地過程中對產(chǎn)品的功能和性能方面進行了更多的支持和提升,產(chǎn)品再一次經(jīng)歷典型案例的打磨。

  • 升級 SQL 引擎

白條的業(yè)務(wù)邏輯非常復雜且龐大,多樣化場景的需求對 SQL 的兼容程度有著較高要求,Apache ShardingSphere 重構(gòu)了 SQL 解析模塊,并支持了更多的 SQL。經(jīng)兩團隊通力合作,京東白條業(yè)務(wù)與 Apache ShardingSphere 相結(jié)合的各項指標滿足預期,性能與原生 JDBC 幾乎一致。

img

關(guān)于對接過程中的問題詳情及方案,請通過《Apache ShardingSphere 對接京東白條實戰(zhàn)》一文來了解。

業(yè)務(wù)割接

Apache ShardingSphere 使用定制化 HASH 策略對數(shù)據(jù)進行分片,有效避免了熱點數(shù)據(jù)問題, 拆分后的數(shù)據(jù)節(jié)點數(shù)達近萬個 ,整個割接過程大約持續(xù)了 4 周左右的時間。

  1. DBRep 讀取數(shù)據(jù),通過 Apache ShardingSphere 將數(shù)據(jù)同步至目標數(shù)據(jù)庫集群;
  2. 兩套集群并行運行,數(shù)據(jù)遷移后再使用自研工具對業(yè)務(wù)和數(shù)據(jù)進行校驗。

DBRep 是 ShardingSphere-Scaling 產(chǎn)品設(shè)計的基石,Scaling 具備的自動化能力為后續(xù)的遷移擴容工作提供了更多的便利。

配好業(yè)務(wù)的生命周期,才能發(fā)揮最好的效果。

價值收益

  • 簡化升級路徑

通過架構(gòu)解耦,業(yè)務(wù)系統(tǒng)升級所涉及技術(shù)棧得到有效縮短,研發(fā)團隊不再需要關(guān)注分表設(shè)計,精力全部聚焦于業(yè)務(wù)本身,升級路徑得到大幅度優(yōu)化;

  • 節(jié)省研發(fā)力量

引入成熟的 Apache ShardingSphere 無需重新開發(fā)分表組件,在簡化業(yè)務(wù)升級路徑的基礎(chǔ)上節(jié)省了大量研發(fā)力量;

  • 架構(gòu)靈活擴展

搭配使用 Scaling 同步遷移組件從容面對“618”和“11.11”等大型活動,系統(tǒng)靈活擴容。

4、面對新的不穩(wěn)定業(yè)態(tài),需要相對穩(wěn)定的標準來應(yīng)對

如何理解不穩(wěn)定,并平衡這種不穩(wěn)定。

隨著數(shù)據(jù)的重要性日益凸顯,以及終端場景領(lǐng)域的持續(xù)細化,業(yè)務(wù)線『開枝散葉』已是常態(tài),市場上的數(shù)據(jù)庫產(chǎn)品層出不窮。某種意義上,發(fā)展了許多年的京東白條,早已不再是當年的數(shù)據(jù)體量,其金融消費場景已經(jīng)是一個相對穩(wěn)定和成熟的場景而言,京東白條仍然是一個快速生長的互聯(lián)網(wǎng)巨量頭部產(chǎn)品,用戶和數(shù)據(jù)體量還遠沒有達到接近天花板級別。

這也意味著,隨著業(yè)務(wù)數(shù)據(jù)量的增長,未來京東白條還需要經(jīng)歷多次具備『陣痛期』的架構(gòu)轉(zhuǎn)型。而每一次轉(zhuǎn)型,無疑都是一次冒險,這對于追求穩(wěn)定和體驗的金融級產(chǎn)品而言,無疑是需要慎重考慮的。

而在現(xiàn)階段通用的數(shù)據(jù)架構(gòu)體系下,整個行業(yè)都在經(jīng)歷一種新的不穩(wěn)定業(yè)態(tài)。面對這種不穩(wěn)定的業(yè)態(tài),京東白條需要一種相對穩(wěn)定的標準和生態(tài),來『對抗』這種不穩(wěn)定的趨勢?;诖耍瑥垪澐继岬搅?Database Plus 的概念。

2018 年,Apache ShardingSphere 作者張亮就曾提出過 Database Plus 的概念。彼時數(shù)據(jù)庫已經(jīng)呈現(xiàn)出碎片化的趨勢,企業(yè)在后端數(shù)據(jù)庫管理層面,已經(jīng)開始產(chǎn)生不小的成本。如果能夠在數(shù)據(jù)庫上層重新建設(shè)起具備統(tǒng)一管理底層數(shù)據(jù)的中間層生態(tài),對于企業(yè)以及工程師而言,都會極大提高研發(fā)與管理的效率。

所以,Sharding-JDBC 在京東內(nèi)部,正式升級為 ShardingSphere, 寓意打造一個新的生態(tài),并在張亮和社區(qū)需求的引導下,逐步確立起了 Database Plus 的發(fā)展方向。伴隨著近日 Apache ShardingSphere 5.0.0 正式版的更新,Database Plus 理念已正式在 Apache ShardingSphere 生態(tài)中得到踐行。

目前,Apache ShardingSphere 通過可插拔架構(gòu),已能夠在數(shù)據(jù)庫上層構(gòu)建起一套全新的數(shù)據(jù)治理生態(tài),如讓傳統(tǒng)關(guān)系型數(shù)據(jù)庫同時具備水平擴展和數(shù)據(jù)加密的功能,或在傳統(tǒng)關(guān)系型數(shù)據(jù)庫的基礎(chǔ)上單獨打造分布式數(shù)據(jù)庫解決方案等,而無需調(diào)整底層數(shù)據(jù)庫架構(gòu)。

而這種技術(shù),無疑是應(yīng)對數(shù)據(jù)庫碎片化趨勢的最好方案之一。 而對于未來數(shù)據(jù)庫發(fā)展的理解,張棟芳認為,在多樣化的數(shù)據(jù)庫上層,構(gòu)建起統(tǒng)一的數(shù)據(jù)管理平臺,將數(shù)據(jù)庫能力分布在中間層并實現(xiàn)可插拔化,追求功能與業(yè)務(wù)訴求的高度匹配,篩去冗余的能力,并能夠在需要時進行快速變動,始終保證數(shù)據(jù)架構(gòu)的整潔、專一。

5、事物終歸需要回歸到它的本質(zhì)

從市場和用戶規(guī)模來看,中國有著全球最廣泛的互聯(lián)網(wǎng)用戶群體,產(chǎn)生著最大的數(shù)據(jù)體量,誕生了一系列成長最快速的互聯(lián)網(wǎng)科技公司....但是與龐大需求所不匹配的是,國內(nèi)數(shù)據(jù)服務(wù)市場卻始終處于同質(zhì)化競爭之下,沒能有顛覆海外數(shù)據(jù)庫巨頭的產(chǎn)品出現(xiàn)。

張棟芳認為,各家廠商專注于各自的應(yīng)用場景之下,缺少一個抬頭環(huán)顧四周的過程。我們始終在談新技術(shù),始終在追求業(yè)務(wù)的最高效化。但對于一些需要實現(xiàn)“大象起舞”的金融、證券、制造、零售等領(lǐng)域而言,最新的技術(shù)不一定是最適合他們的,在現(xiàn)有技術(shù)基礎(chǔ)上,提供增量能力的中間件,打造適配于當下業(yè)務(wù)場景的技術(shù)體系,而不是顛覆。

 事物需要回歸它的本質(zhì)。 ”對于數(shù)據(jù)治理方式而言,同樣如此。

我今天跟大家的分享到這里。謝謝大家。

責任編輯:張燕妮 來源: 悟空聊架構(gòu)
相關(guān)推薦

2022-04-24 11:01:09

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

2017-10-09 09:12:35

攜程運維架構(gòu)

2020-03-03 08:40:16

細腰架構(gòu)進化

2015-09-01 10:52:16

安全數(shù)據(jù)分析架構(gòu)

2022-03-24 10:51:41

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

2011-04-26 09:18:53

FacebookPHPmysql

2018-08-22 17:58:01

數(shù)據(jù)平臺數(shù)據(jù)倉庫架構(gòu)

2021-06-03 10:15:26

數(shù)據(jù)泄露網(wǎng)絡(luò)攻擊信息安全

2015-12-09 15:16:03

架構(gòu)師京東架構(gòu)

2009-01-04 09:26:44

架構(gòu)Google服務(wù)器

2016-05-23 13:50:23

UberHadoopSpark

2011-07-18 10:39:34

HTML 5

2024-09-24 13:16:17

數(shù)據(jù)中臺數(shù)據(jù)飛輪

2014-04-09 18:01:42

京東

2017-02-17 07:12:24

2016-04-21 10:10:31

Java應(yīng)用架構(gòu)

2015-10-26 13:07:01

京東唐志雄京東白條

2009-11-09 10:57:07

ibmdw軟件架構(gòu)

2011-07-22 13:55:48

架構(gòu)

2015-09-28 14:20:30

點贊
收藏

51CTO技術(shù)棧公眾號