<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 5239字,需瀏覽 11分鐘

           ·

          2022-05-14 13:23

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


          來源:SphereEx
          鏈接:https://segmentfault.com/a/1190000041107436

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

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

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

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

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

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

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

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

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

          2014~2015

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

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

          2015~2016

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

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

          2016~2017

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

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

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

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

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

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

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

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

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

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

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


          基于自研框架分片基于 ShardingSphere 分片
          性能
          代碼耦合度
          業(yè)務(wù)入侵程度
          升級難度
          擴(kuò)展性一般良好

          最終,京東白條選擇采用 Apache ShardingSphere 來進(jìn)行金融級別的數(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ù),無需額外部署和依賴,可理解為增強(qiáng)版的 JDBC 驅(qū)動(dòng),完全兼容 JDBC 和各種 ORM 框架。

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

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

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

          產(chǎn)品適配

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

          • 升級 SQL 引擎

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

          img

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

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

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

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

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

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

          價(jià)值收益

          • 簡化升級路徑

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

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

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

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

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

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

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

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

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

          而在現(xiàn)階段通用的數(shù)據(jù)架構(gòu)體系下,整個(gè)行業(yè)都在經(jīng)歷一種新的不穩(wěn)定業(yè)態(tài)。面對這種不穩(wěn)定的業(yè)態(tài),京東白條需要一種相對穩(wěn)定的標(biāo)準(zhǔn)和生態(tài),來『對抗』這種不穩(wěn)定的趨勢。基于此,張棟芳提到了 Database Plus 的概念。

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

          所以,Sharding-JDBC 在京東內(nèi)部,正式升級為 ShardingSphere,寓意打造一個(gè)新的生態(tài),并在張亮和社區(qū)需求的引導(dǎo)下,逐步確立起了 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í)具備水平擴(kuò)展和數(shù)據(jù)加密的功能,或在傳統(tǒng)關(guān)系型數(shù)據(jù)庫的基礎(chǔ)上單獨(dú)打造分布式數(shù)據(jù)庫解決方案等,而無需調(diào)整底層數(shù)據(jù)庫架構(gòu)。

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

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

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

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

          推薦閱讀:

          世界的真實(shí)格局分析,地球人類社會(huì)底層運(yùn)行原理

          不是你需要中臺,而是一名合格的架構(gòu)師(附各大廠中臺建設(shè)PPT)

          億級(無限級)并發(fā),沒那么難

          論數(shù)字化轉(zhuǎn)型——轉(zhuǎn)什么,如何轉(zhuǎn)?

          華為干部與人才發(fā)展手冊(附PPT)

          企業(yè)10大管理流程圖,數(shù)字化轉(zhuǎn)型從業(yè)者必備!

          【中臺實(shí)踐】華為大數(shù)據(jù)中臺架構(gòu)分享.pdf

          華為的數(shù)字化轉(zhuǎn)型方法論

          華為如何實(shí)施數(shù)字化轉(zhuǎn)型(附PPT)

          超詳細(xì)280頁Docker實(shí)戰(zhàn)文檔!開放下載

          華為大數(shù)據(jù)解決方案(PPT)


          瀏覽 55
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人妻无码久久精品人妻成人 | 日本国产黄色 | 四川人妻第二次3p | 日本不卡一区 | 日本中文字幕中文翻译歌词 |