實(shí)時(shí)數(shù)倉 | 京東計(jì)算架構(gòu)演進(jìn)之路
前
言
導(dǎo)讀:初級(jí)工程師搞技術(shù),高階工程師搭平臺(tái)。沒有幾個(gè)工程師天賦異稟,技術(shù)的差距,是認(rèn)知的差距。謝邀!
從2004年開始,京東進(jìn)軍互聯(lián)網(wǎng)線上化開始到至今,隨著京東的高速發(fā)展,京東商城的訂單量從萬級(jí)到百萬級(jí)、最終到達(dá)億級(jí)。而對(duì)于實(shí)時(shí)的數(shù)據(jù)需求也是層出不窮,實(shí)時(shí)數(shù)倉、實(shí)時(shí)計(jì)算架構(gòu)隨著數(shù)據(jù)量的增長(zhǎng),不斷進(jìn)行革新與演進(jìn)優(yōu)化。
(1)訂單量萬級(jí)、百萬級(jí)(以京東海外站為例)
在訂單量萬級(jí)、百萬級(jí)別的時(shí)候,也存在不少實(shí)時(shí)的數(shù)據(jù)需求,比如:商家需要看看自己每天的成交量、老板需要看看整體的成交金額,以為后續(xù)的融資做準(zhǔn)備。類似于現(xiàn)在很多的a、b輪創(chuàng)業(yè)公司數(shù)據(jù)體量。
解決方案:而此時(shí)為了節(jié)省更少的資源,減少更少花銷。在實(shí)時(shí)架構(gòu)設(shè)計(jì)上就需要盡量用更少的成本來解決這種問題。基于mysql的實(shí)時(shí)數(shù)據(jù)統(tǒng)計(jì)方案就比較適合了。
步驟:將線上業(yè)務(wù)系統(tǒng)數(shù)據(jù)實(shí)時(shí)同步到大數(shù)據(jù)中心(在mysql的基礎(chǔ)上搭建了一套大數(shù)據(jù)架構(gòu)),避免了Hadoop生態(tài)龐大復(fù)雜的體系。基于mysql數(shù)據(jù)寬表進(jìn)行數(shù)據(jù)統(tǒng)計(jì),將統(tǒng)計(jì)結(jié)果寫到mysql指標(biāo)結(jié)果表中,輸出一些報(bào)表或者服務(wù)。詳細(xì)步驟見下圖。
架構(gòu)優(yōu)缺點(diǎn):
(1)開發(fā)簡(jiǎn)單,基于mysql,同時(shí)避免hadoop生態(tài)復(fù)雜的體系,節(jié)省開銷。
(2)數(shù)據(jù)量過大,查詢和聚合性能較差,mysql單表量級(jí)在百萬級(jí)別。
(3)在此架構(gòu)中需要對(duì)mysql及其熟練,如何設(shè)計(jì)索引,如何進(jìn)行查詢統(tǒng)計(jì)優(yōu)化。

(2)訂單量?jī)|級(jí)(以京東主站為例)
隨著公司的發(fā)展,數(shù)據(jù)體量的增大,達(dá)到千萬甚至億級(jí)別時(shí),基于mysql的數(shù)據(jù)統(tǒng)計(jì)方案已經(jīng)完全沒辦法滿足統(tǒng)計(jì)需求了,mysql查詢也查不動(dòng)了。基于此產(chǎn)生了一套新的技術(shù)方案:flink接kafka消息數(shù)據(jù),直接進(jìn)行指標(biāo)計(jì)算,寫入到redis里面,最后提供最外提供服務(wù)。詳細(xì)步驟見下圖。
架構(gòu)優(yōu)缺點(diǎn):
(1)能夠支撐億級(jí)數(shù)據(jù)量的統(tǒng)計(jì)需求,對(duì)于大數(shù)據(jù)量友好
(2)時(shí)效性高,計(jì)算延遲較低
(3)技術(shù)方案相對(duì)復(fù)雜,新增指標(biāo)需要重新開發(fā),上線任務(wù)。

(3)訂單量?jī)|級(jí)(以京東主站為例)
上述基于flink 直接指標(biāo)計(jì)算的方案,優(yōu)點(diǎn)非常明顯,缺點(diǎn)也非常明顯,如果新增指標(biāo),需要重新開發(fā)上線,對(duì)于頻繁的業(yè)務(wù)需求變更,已經(jīng)很難滿足了,因此產(chǎn)生了基于OLAP的技術(shù)方案。Flink接kafka 消息,將明細(xì)數(shù)據(jù)寫入到OLAP引擎(clickhouse、apache doris)當(dāng)中,構(gòu)建一張寬表,然后直接進(jìn)行數(shù)據(jù)查詢統(tǒng)計(jì)基于OLAP引擎,對(duì)于新增指標(biāo)只需要新增不同的sql查詢語句就能解決需求,而不用重新開發(fā),提高了整體效率,能夠應(yīng)對(duì)業(yè)務(wù)的頻繁變更。詳細(xì)步驟見下圖。
架構(gòu)優(yōu)缺點(diǎn):
(1)能夠支撐億級(jí)數(shù)據(jù)量的統(tǒng)計(jì)需求,對(duì)于大數(shù)據(jù)量友好
(2)時(shí)效性較高
(3)開發(fā)簡(jiǎn)單,能夠快速應(yīng)對(duì)業(yè)務(wù)需求。

隨著公司高速發(fā)展,數(shù)據(jù)體量的改變對(duì)于技術(shù)的選型也是不斷進(jìn)行變更的。只有了解不同的技術(shù)架構(gòu)的優(yōu)缺點(diǎn),在合適的階段選擇不同的數(shù)據(jù)架構(gòu),才能夠更好的服務(wù)于業(yè)務(wù)。同時(shí)根據(jù)自己所處的公司當(dāng)前的發(fā)展?fàn)顩r,預(yù)估公司后續(xù)的發(fā)展,在技術(shù)架構(gòu)選型上也是有前瞻性的。
