聽京東張成遠講NewSQL和raft的那些事兒
原創(chuàng)2016中國應(yīng)用性能管理大會(簡稱APMCon 2016)于8月18日至19日在北京新云南皇冠假日酒店隆重召開。APMCon由聽云、極客邦和InfoQ聯(lián)合主辦的作為國內(nèi)APM領(lǐng)域***影響力的技術(shù)大會,***舉辦的APMCon以“驅(qū)動應(yīng)用架構(gòu)優(yōu)化與創(chuàng)新”為主題,致力于推動APM在國內(nèi)的成長與發(fā)展。京東商城高級架構(gòu)師 張成遠在大會現(xiàn)場接受記者采訪。
SQL早在70年代左右就被提出來了,后續(xù)有一些SQL的產(chǎn)品衍生出來供用戶使用。2000年之后,隨著分布式系統(tǒng)的引入,后來發(fā)明了NoSQL,它沒有SQL的特性,但是在操作上方便了很多,在擴展上也非常便捷。近幾年有人發(fā)現(xiàn),在實際使用過程中,SQL比NoSQL用起來更方便,但是又不像NoSQL對于海量數(shù)據(jù)的收縮擴容以及管理容易使用,后來就提出想把NoSQL跟SQL的特性結(jié)合起來,就衍生出來了NewSQL。
什么是NewSQL
NewSQL是一類新的高性能的可擴展的數(shù)據(jù)庫的簡稱,主要能夠解決提供分布式事務(wù)的支持,并且可以提供跨數(shù)據(jù)中心的一致性保證。在一些應(yīng)用場景中,會對分布式事務(wù)有著嚴格的要求,NewSQL就能夠保證如果某些節(jié)點出現(xiàn)了異常現(xiàn)象,可以與另外的節(jié)點進行替換,以滿足場景的正常工作。
NewSQL與傳統(tǒng)數(shù)據(jù)庫相比的特點是,NewSQL自身具有的特點就是能夠帶來的效益,主要對分布式事務(wù)的支持,以及強一致性和跨數(shù)據(jù)中心的存活,像在雙十一的時候,提前就可以做一些比較輕松的擴容的工作,以及在這個過程中,如果說某個機房有異常,可以很好的進行切換,對整個服務(wù)來說可以很好的提供更可用支持。
什么是raft
raft是分布式系統(tǒng)里面的一致性的算法,raft作者曾學(xué)習(xí)了很久的PAXOS,后來覺得PAXOS比較難理解,而且在實現(xiàn)的時候很困難,所以他提出了raft算法。其***特點就是比較容易理解,在實現(xiàn)上也相較簡單,主要是通過選舉leader+日志復(fù)制,實現(xiàn)分布式的一致性算法。
但是在技術(shù)網(wǎng)絡(luò)狀況不太好的情況下,會出現(xiàn)頻繁選取leader的行為,這對整個系統(tǒng)對外提供服務(wù)是有影響的,這種情況優(yōu)先是要改善基礎(chǔ)網(wǎng)絡(luò)。還有一種情況,某些節(jié)點在特殊情況下有網(wǎng)絡(luò)偶發(fā)的發(fā)生,這樣也會引起選舉的情況,在具體實現(xiàn)的時候,會有一些優(yōu)化的措施。其他節(jié)點跟leader的通信是正常的,當這個異常的節(jié)點發(fā)起選舉的時候,其他的節(jié)點就可以拒絕掉這次選舉,這個異常的節(jié)點就可以很快恢復(fù)到follow的角色,這樣對于整個系統(tǒng)提供一個穩(wěn)定的服務(wù)會比較有幫助。
raft在NewSQL中的應(yīng)用
因為NewSQL能夠提供分布式事務(wù)的支持,也就是ACID的支持,同時還要提供高可用,如果有一個節(jié)點掛掉了,可以快速有另外一個節(jié)點接替它。但是在這種場景下,如果要保持已提交的事務(wù)沒有丟失,那么備份的節(jié)點來接替這個服務(wù)的時候,要保證所有的數(shù)據(jù)跟異常的節(jié)點數(shù)據(jù)是完全一致的,才能夠真正的接替這個服務(wù)。那raft就是解決一致性的問題,保證NewSQL的存儲節(jié)點之間的數(shù)據(jù)一致。舉個例子,假如說以ROCKSDB來說,假設(shè)NewSQL的存儲節(jié)點是ROCKSDB,要讓多個ROCKSDB之間的數(shù)據(jù)一致,那就在ROCKSDB上面加一層Raft的服務(wù),通過日志復(fù)制的方式,讓彼此之間的數(shù)據(jù)是一致的。
但是NewSQL在業(yè)界還沒有特別成熟的產(chǎn)品,在實際使用上來說,在性能方面需要進一步提升。在解決分布式事務(wù)的時候,還涉及到兩階段提交,或者變種的兩階段提交,有很多的工程細節(jié)的問題,離一個非常完善的成熟的,可以完全商用的系統(tǒng)來說,還在探索的路上。