京東資深架構師張成遠:京東分布式數(shù)據(jù)庫是如何煉成的?
原創(chuàng)作為國內***梯隊的電商企業(yè),京東擁有億萬用戶,每天要應對數(shù)以千百萬計的訪問需求,在其架構和管理方面有何妙招來對數(shù)據(jù)加以支撐呢?在會上,51TO記者采訪了京東資深架構師張成遠。
張成遠,《Mariadb原理與實現(xiàn)》作者,開源項目speedy作者。目前就職于京東數(shù)據(jù)庫系統(tǒng)研發(fā)團隊,負責京東分布式數(shù)據(jù)庫系統(tǒng)架構與研發(fā)工作,主導了京東分布式數(shù)據(jù)庫系統(tǒng)在公司的落地及大規(guī)模推廣。擅長高性能服務器開發(fā),擅長分布式數(shù)據(jù)庫/存儲/緩存等大規(guī)模分布式系統(tǒng)架構。
分布式數(shù)據(jù)庫的技術核心
京東每天面對海量的數(shù)據(jù)處理采用的是分布式數(shù)據(jù)庫的系統(tǒng),其核心技術及思路又是怎樣的呢?
張成遠表示,京東分布式數(shù)據(jù)庫的關鍵是引入中間件的方式來提供對數(shù)據(jù)的拆分,解決了業(yè)務上單機扛不住數(shù)據(jù)量的問題。對于業(yè)務來說,在單機扛不住的情況下還要自己去關注數(shù)據(jù),這樣它的負擔會非常重,所以京東采用了分布式數(shù)據(jù)庫的方案,讓業(yè)務可以比較方便的使用。京東會進入MySQL的協(xié)議,提供代理的方式,把整個集群管理好,業(yè)務接入時只需要用原生的MySQL客戶端來使用就可以,所以對于業(yè)務的使用負擔會非常的輕。同時京東也有非常完善的監(jiān)控,所以能夠保證業(yè)務接入以后系統(tǒng)的穩(wěn)定和可靠。
數(shù)據(jù)庫的設計架構
京東對容量非常的重視。在前期設計過程中,需要針對業(yè)務進行未來一到兩年甚至兩到三年的容量預估,來進行合理的資源配置。以及考慮到未來擴容的需求,京東可以實現(xiàn)在業(yè)務增長的情況下自動化擴容。
京東在發(fā)展過程中,早期的一些業(yè)務可能放在Oracle里面,也有一些數(shù)據(jù)量較小的業(yè)務是放在MySQL里面。簡單說,因為單機的數(shù)據(jù)量放不下,如果采用分布式數(shù)據(jù)庫我們能夠把它的數(shù)據(jù)進行拆分,相當于可以獲取到一個容量比原來大很多的數(shù)據(jù)庫。
分布式數(shù)據(jù)庫可以存放所有的關系型存儲數(shù)據(jù),并且還可以支撐京東非常多的核心系統(tǒng)。例如訂單、商品、物流還有財務等等。
數(shù)據(jù)的可靠性
但是在這個過程中,數(shù)據(jù)的可靠性又是如何保障的呢?
張成遠表示數(shù)據(jù)的可靠性有兩點,一是服務本身是高可用的,二是數(shù)據(jù)本身是高可靠的。
比如說MySQL層面,我們通過主層,分布式數(shù)據(jù)庫中間件層面,因為我們本身是無狀態(tài)的,所以可以部署多份,來解決高可用的問題。關于數(shù)據(jù)本身高可靠的問題,我們會對數(shù)據(jù)庫里面的數(shù)據(jù)定期進行備份,所以哪怕有誤操作或者其他任何問題,都可以完整的恢復回來。
分布式事物的難點
在實現(xiàn)整個分布式數(shù)據(jù)庫的系統(tǒng)的過程中也不可避免面臨一些困難,比如分布式節(jié)點相關,京東團隊又是如何解決的呢?分布式事物相關最難的問題在于事物的原子性很難保證,一個訪問可能涉及多個節(jié)點,并且每個節(jié)點可能都有問題。尤其是基于MySQL層面做分布式數(shù)據(jù)庫,因為每個節(jié)點事物的ID不一樣,但如果基于存儲的不是MySQL而是其他層面,相對來說會有類似兩階段提交的協(xié)議可以參考,從而解決問題。
很多人會關心到分布式數(shù)據(jù)庫能否保證數(shù)據(jù)的一致性,張成遠認為這不是一致性的問題,而是關系到的分布式事物的原子性的問題。從本質上說如果事物涉及到多個節(jié)點,并且節(jié)點異常,為滿足業(yè)務的需求會引入相關系統(tǒng),可以把丟失的東西補回來。還有一種方法,就是在使用上和業(yè)務溝通,將相關的事務進行拆解。拆分后,每次的訪問之落在一個分部或者節(jié)點上,如此一來可以保證每次的訪問要么成功要么失敗,可以很巧妙的從另一個方式繞過這個問題,用來保證原子性。
采訪***
國內不乏綜合型電商平臺,而京東卻是中國***的自營式電商企業(yè),是中國***個成功赴美上市的大型綜合性電商平臺,同時與騰訊、百度等中國互聯(lián)網巨頭共同躋身全球前十大互聯(lián)網公司排行榜,京東的成功與其有著優(yōu)秀的數(shù)據(jù)庫管理是密不可分的。