分布式一致性算法:解決分布式系統(tǒng) 80%核心問題


身為后端工程師,你對(duì)這類招聘要求肯定不陌生:熟悉分布式系統(tǒng)的設(shè)計(jì)和應(yīng)用;熟悉分布式、緩存、消息、搜索等機(jī)制;能對(duì)分布式常用技術(shù)進(jìn)行合理應(yīng)用、解決問題等等。
其中又以分布式協(xié)議與算法尤甚。現(xiàn)在很多大廠在招聘架構(gòu)師或高級(jí)工程師時(shí),都會(huì)要求候選人熟悉分布式協(xié)議與算法。面試官不僅會(huì)考察其原理和運(yùn)行機(jī)制,還有面試者對(duì)這類問題在架構(gòu)設(shè)計(jì)層面的理解,以及具體場(chǎng)景下的應(yīng)用。
但以我作為面試官的多年經(jīng)驗(yàn)來看,真正搞懂這部分的候選人少得可憐。
其實(shí),分布式協(xié)議與算法(下面簡稱分布式算法)是分布式系統(tǒng)運(yùn)行的核心規(guī)則和關(guān)鍵步驟,想?yún)⑼阜植际郊夹g(shù)、開發(fā)一個(gè)分布式系統(tǒng),最先要掌握的就是這部分知識(shí)。
以時(shí)序數(shù)據(jù)庫 InfluxDB 為例,很多技術(shù)團(tuán)隊(duì)試圖自己實(shí)現(xiàn) InfluxDB 的集群功能,但最終都放棄了。因?yàn)檫@里面的坑實(shí)在太多,甚至有些人錯(cuò)誤地將一致性等同于完整性,該使用反熵(Anti-Entropy)算法時(shí),卻用了 Raft 算法,讓人哭笑不得。
如果你想使用集群功能,又無法基于開源版本自研,就只能購買人家的企業(yè)版。要知道,企業(yè)版每個(gè)節(jié)點(diǎn)的 License 授權(quán)費(fèi)就要 1.5 萬美刀/年,具體貴在哪呢?相比于已經(jīng)開源的單機(jī)版本,其技術(shù)壁壘又是什么?
其實(shí),它的護(hù)城河就是以分布式算法為核心的分布式集群能力。由此可見,真正掌握分布式算法的人并不多。大多數(shù)人只是會(huì)用分布式系統(tǒng),卻并不具備分布式系統(tǒng)的獨(dú)立開發(fā)能力。
所以,不論是基于工作需要,還是想尋求長期職業(yè)發(fā)展、提升職場(chǎng)競(jìng)爭力,分布式算法作為分布式系統(tǒng)的核心,都是你在這個(gè)時(shí)代應(yīng)該掌握的基本功。
如何高效學(xué)習(xí)分布式算法?
很多同學(xué)會(huì)發(fā)現(xiàn),盡管看了很多資料和書籍,一旦涉及到具體問題,仍舊一頭霧水:
眾多開源軟件看著都很厲害,事務(wù)型、一致性、最終一致性,哪個(gè)最適合自己的業(yè)務(wù),又該如何選型呢?
想要實(shí)現(xiàn)數(shù)據(jù)副本的一致性,到底該選 Paxos 算法,還是 Raft 算法?
為什么我的集群接入性能低?為什么稍微出現(xiàn)峰值流量,業(yè)務(wù)就基本不可用了?
如何設(shè)計(jì)分布式系統(tǒng)架構(gòu)呢?那么多算法,Paxos、Raft、Gossip、Nuorum NWR、PBFT 等等,究竟該選擇哪個(gè)?
其實(shí),算法本身相對(duì)抽象,即使是非常經(jīng)典的論文,也有一些關(guān)鍵細(xì)節(jié)沒有交代清楚。網(wǎng)上的信息大多是“復(fù)制粘貼”的結(jié)果,甚至有不少錯(cuò)誤,給自主學(xué)習(xí)帶來了很多障礙和誤導(dǎo)。
在我看來,要掌握這部分內(nèi)容,不僅要理解常用算法的原理、特點(diǎn)和局限性,還要根據(jù)場(chǎng)景特點(diǎn)選擇適合的分布式算法。
為了幫你徹底拿下分布式技術(shù),理解其中最核心和最為精妙的內(nèi)容,我跟極客時(shí)間合作了專欄《分布式協(xié)議與算法實(shí)戰(zhàn)》,力求將自己支撐海量互聯(lián)網(wǎng)服務(wù)中的分布式算法實(shí)戰(zhàn)心得全部分享給你,讓你真正拿下這場(chǎng)攻堅(jiān)戰(zhàn)。
再具體一點(diǎn)說,就是能在工作中根據(jù)場(chǎng)景特點(diǎn),靈活地設(shè)計(jì)架構(gòu)和運(yùn)用分布式算法,開發(fā)出適合該場(chǎng)景的分布式系統(tǒng),對(duì)架構(gòu)設(shè)計(jì)的理解更上一層樓。
我是誰?
我是如何講解分布式算法的?
可落地的 4 大分布式基礎(chǔ)理論;
8 個(gè)最常用的分布式協(xié)議和算法;
3 大實(shí)戰(zhàn)案例手把手教學(xué);
以實(shí)戰(zhàn)為中心的分布式內(nèi)容體系。



