分布式數(shù)據(jù)服務(wù):事務(wù)模型、處理語(yǔ)言、一致性與體系結(jié)構(gòu) 徐子晨 柳杰 婁俊升
定 價(jià):79 元
- 作者:徐子晨 柳杰 婁俊升
- 出版時(shí)間:2024/2/1
- ISBN:9787111737377
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP274
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
隨著物聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)與人工智能等技術(shù)的蓬勃發(fā)展,計(jì)算服務(wù)逐漸從計(jì)算密集型向數(shù)據(jù)密集型(Data Intensive)轉(zhuǎn)變。高性能、高通量的數(shù)據(jù)服務(wù)關(guān)鍵技術(shù)成為智慧城市、智能制造、智慧農(nóng)業(yè)等國(guó)家重大需求解決方案的核心基礎(chǔ)。并行與分布式數(shù)據(jù)處理的概念啟發(fā)于上世紀(jì)80年代,源自討論在內(nèi)存及二級(jí)存儲(chǔ)極為有限的條件下如何跨越“內(nèi)存墻”,完成計(jì)算任務(wù)的優(yōu)化技術(shù)。而今,互聯(lián)網(wǎng)與私有網(wǎng)絡(luò)數(shù)據(jù)指數(shù)級(jí)增長(zhǎng)、數(shù)據(jù)服務(wù)的事務(wù)性需求復(fù)雜多變、跨地域數(shù)據(jù)同步需求動(dòng)態(tài)不統(tǒng)一、如何應(yīng)對(duì)當(dāng)前及未來(lái)大數(shù)據(jù)服務(wù)及其上的人工智能計(jì)算對(duì)并行與分布式數(shù)據(jù)服務(wù)提出了新的問題與挑戰(zhàn)。本書從并行與分布式數(shù)據(jù)服務(wù)的基礎(chǔ)理論、事務(wù)模型、數(shù)據(jù)處理語(yǔ)言等基礎(chǔ)內(nèi)容,并進(jìn)一步討論分布式數(shù)據(jù)一致性模型及全觀性的數(shù)據(jù)處理架構(gòu)方面的先進(jìn)及實(shí)用的研究及系統(tǒng)軟件相關(guān)知識(shí),,對(duì)分布式數(shù)據(jù)服務(wù)的其他研究也進(jìn)行了概述,并對(duì)其未來(lái)發(fā)展方向進(jìn)行展望。本書可以作為計(jì)算機(jī)、數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)、人工智能等相關(guān)專業(yè)的高年級(jí)本科生與研究生在數(shù)據(jù)庫(kù)理論及分布式系統(tǒng)等課程上的輔助教材,也可以為物聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)與人工智能等領(lǐng)域的科研人員及從業(yè)者提供創(chuàng)新研究與技術(shù)應(yīng)用的參考。
?本書主要圍繞分布式數(shù)據(jù)服務(wù)進(jìn)行闡述,對(duì)分布式數(shù)據(jù)服務(wù)相關(guān)系統(tǒng)、算法以及體系結(jié)構(gòu)進(jìn)行了全面的解讀。
?本書加入了大量的實(shí)踐實(shí)訓(xùn)環(huán)節(jié),引導(dǎo)讀者從零到一構(gòu)建一種強(qiáng)一致性協(xié)議并實(shí)現(xiàn)其運(yùn)行框架。
?本書中的硬核技術(shù)是互聯(lián)網(wǎng)大廠亟需的分布式基礎(chǔ)架構(gòu)開發(fā)技術(shù),為相關(guān)從業(yè)人員提供了全面而系統(tǒng)的學(xué)習(xí)資源。
寫作是一件痛苦的事情,這不僅僅是自己思考的模態(tài)轉(zhuǎn)換,更是對(duì)自身學(xué)術(shù)認(rèn)知的重新梳理。大概在12年前,我還是一個(gè)學(xué)生,在某次學(xué)術(shù)會(huì)議上遇到了Leslie Lamport博士。那時(shí)他已經(jīng)70歲高齡,臉上溝壑縱橫,但眼神仍然犀利,對(duì)探討的話題反饋依舊敏銳。當(dāng)時(shí)是我第一次聽到Paxos Island的故事,并從此進(jìn)入了分布式一致性協(xié)議優(yōu)化的“深淵巨口”。時(shí)間如白駒過隙,十多年過去了,我們?cè)诜植际揭恢滦詤f(xié)議上做了各種工作,有些是對(duì)數(shù)學(xué)模型的探討,有些是對(duì)具體實(shí)現(xiàn)的優(yōu)化,還有一些是人生哲學(xué)上的引申。我們想留下這些心得體會(huì),并分享給更多人。
本書主要圍繞Raft和Paxos兩個(gè)協(xié)議進(jìn)行闡述。與其他相關(guān)圖書不同的是,書中加入了大量的實(shí)踐實(shí)訓(xùn)環(huán)節(jié),引導(dǎo)讀者從零到一構(gòu)建一種強(qiáng)一致性協(xié)議并實(shí)現(xiàn)其運(yùn)行框架。這種技術(shù)是硬核的,是很多互聯(lián)網(wǎng)企業(yè)急需的,是值得學(xué)習(xí)的。這與我們成書的起源相關(guān)。2017年,我回國(guó)開始創(chuàng)辦泛在數(shù)據(jù)處理與優(yōu)化實(shí)驗(yàn)室,開始只有幾個(gè)本科生跟著我做一些超出他們學(xué)習(xí)范圍的工作。其中就有本書的另一作者——柳杰。年輕人對(duì)未知知識(shí)是如此渴望,但是對(duì)復(fù)雜數(shù)學(xué)模型又是如此畏懼。在共同協(xié)作下,我們復(fù)現(xiàn)了Raft(Paxos協(xié)議的一種變形)、Paxos,甚至提出了更加泛化、更簡(jiǎn)單好用的eRaft一致性協(xié)議及其實(shí)現(xiàn),并且eRaft被收錄于斯坦福大學(xué)的一致性協(xié)議公開庫(kù)中。整體工作共用了大概5年時(shí)間。在此基礎(chǔ)上,我們可以對(duì)分布式數(shù)據(jù)庫(kù),特別是分布式數(shù)據(jù)庫(kù)函數(shù)級(jí)服務(wù),實(shí)現(xiàn)更好更寬泛的支持。希望本書可以幫助更多學(xué)生,實(shí)現(xiàn)復(fù)雜的一致性協(xié)議,同時(shí)對(duì)學(xué)生學(xué)習(xí)分布式系統(tǒng)、分布式數(shù)據(jù)庫(kù)等高階知識(shí)起到幫助作用。
較早的時(shí)候,機(jī)械工業(yè)出版社的編輯找到我,希望我寫一本關(guān)于數(shù)據(jù)庫(kù)先進(jìn)技術(shù)的書。我答應(yīng)了,決定把這本書寫出來(lái)。在編寫本書的過程中,崔傲、譚國(guó)龍、姜文靜、向紫芊、肖欣雨等同學(xué)幫忙搜集資料,黃嘉誠(chéng)、劉必勇、吳偉正等同學(xué)幫忙構(gòu)建系統(tǒng),吳偉正、曾燾、舒磊明、許可、李江波、李冰雁、孫珍齡等同學(xué)幫忙完成協(xié)調(diào)、編纂、校對(duì)、驗(yàn)證代碼等一系列煩瑣的工作。在成書的過程中,得到了中國(guó)人民大學(xué)杜小勇老師,上海交通大學(xué)過敏意老師、陳全老師、李超老師、陳海波老師、王肇國(guó)老師,中國(guó)科學(xué)技術(shù)大學(xué)李誠(chéng)老師,國(guó)防科技大學(xué)董德尊老師,北京理工大學(xué)王國(guó)仁老師、袁野老師,北京航空航天大學(xué)馬帥老師等各位師長(zhǎng)的建議和指導(dǎo),在此一并感謝。
表文云,“麗文幽質(zhì),唯道可度,歡同隕世,大道不稱”。共勉之。
徐子晨
2023年4月20日
徐子晨:
教授、博士生導(dǎo)師。2016年6月畢業(yè)于美國(guó)俄亥俄州立大學(xué)獲博士學(xué)位,F(xiàn)為南昌大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院副院長(zhǎng),高層次引進(jìn)人才,學(xué)科方向帶頭人,江西省“雙千計(jì)劃”首批入選者。在南昌大學(xué)任職期間教授本科生及研究生系統(tǒng)類課程二十余門。
主要從事包括數(shù)據(jù)密集計(jì)算,智能計(jì)算,高能效計(jì)算及分布式數(shù)據(jù)存儲(chǔ)等數(shù)據(jù)庫(kù)系統(tǒng)軟件相關(guān)方面的教研工作。以第一作者發(fā)表數(shù)據(jù)庫(kù)、分布式系統(tǒng)體系結(jié)構(gòu)等方向高水平期刊、會(huì)議文章50余篇。服務(wù)于IEEE/ACM TKDE/TC/TPDS/TCC等旗艦期刊,擔(dān)任過IEEE ICDE,INFOCOM,BigData,IWQoS,ICDCS等國(guó)際旗艦會(huì)議的程序委員會(huì)副主席及委員等相關(guān)工作。是計(jì)算機(jī)數(shù)據(jù)庫(kù)系統(tǒng)研究者。
柳杰:
國(guó)內(nèi)互聯(lián)網(wǎng)大廠分布式緩存服務(wù)高級(jí)工程師,前滴滴出行高級(jí)軟件開發(fā)工程師,曾參與并主導(dǎo)了滴滴出行底層鍵值存儲(chǔ)系統(tǒng)分布式資源編排系統(tǒng)的重構(gòu)方案設(shè)計(jì),并負(fù)責(zé)開發(fā)實(shí)現(xiàn),在分布式系統(tǒng)架構(gòu)領(lǐng)域有深入研究。是開源項(xiàng)目eraft(https://eraft.cn/)主要代碼貢獻(xiàn)者,該項(xiàng)目被收錄于斯坦福大學(xué)Raft協(xié)議官方庫(kù),亦是本書的實(shí)踐主體。
婁俊升:
2021級(jí)南昌大學(xué)軟件工程碩士,研究方向?yàn)榉植际较到y(tǒng)一致性算法優(yōu)化。曾參與多個(gè)國(guó)家級(jí)、省級(jí)項(xiàng)目研發(fā),從中學(xué)習(xí)與總結(jié)了許多分布式系統(tǒng)領(lǐng)域相關(guān)的理論和實(shí)踐經(jīng)驗(yàn),對(duì)分布式一致性算法性能優(yōu)化有深入研究。
序
前言
第一部分 分布式系統(tǒng)基礎(chǔ)與理論
第1章 分布式系統(tǒng)基礎(chǔ)2
1.1 概述2
1.2 分布式設(shè)計(jì)目標(biāo)4
1.2.1 一致性4
1.2.2 可用性6
1.2.3 分區(qū)容錯(cuò)性8
1.2.4 可擴(kuò)展性9
1.3 數(shù)據(jù)模型10
1.3.1 關(guān)系模型10
1.3.2 文檔模型12
1.3.3 圖狀數(shù)據(jù)模型14
1.4 數(shù)據(jù)存儲(chǔ)15
1.4.1 數(shù)據(jù)庫(kù)內(nèi)部的數(shù)據(jù)結(jié)構(gòu)17
1.4.2 列式存儲(chǔ)20
1.5 數(shù)據(jù)冗余與副本25
1.6 本章小結(jié)27
第2章 分布式數(shù)據(jù)處理語(yǔ)言29
2.1 SQL29
2.1.1 SQL基礎(chǔ)30
2.1.2 SQL的查詢語(yǔ)句33
2.1.3 SQL表的連接42
2.1.4 SQL的其他語(yǔ)句48
2.2 NoSQL52
2.2.1 鍵值數(shù)據(jù)庫(kù)處理語(yǔ)言53
2.2.2 文檔數(shù)據(jù)庫(kù)處理語(yǔ)言56
2.2.3 列族數(shù)據(jù)庫(kù)處理語(yǔ)言61
2.2.4 圖數(shù)據(jù)庫(kù)處理語(yǔ)言65
2.3 本章小結(jié)72
第3章 分布式查詢過程73
3.1 分布式連接問題74
3.1.1 直接連接算法77
3.1.2 半連接算法78
3.1.3 布隆連接算法80
3.2 多關(guān)系連接83
3.2.1 分布式查詢優(yōu)化的目標(biāo)83
3.2.2 分布式查詢優(yōu)化的基本方法84
3.2.3 局部處理優(yōu)化85
3.2.4 基于直接連接的多連接查詢優(yōu)化87
3.2.5 基于半連接的多連接查詢優(yōu)化90
3.3 關(guān)系連接算法91
3.3.1 嵌套循環(huán)連接算法92
3.3.2 哈希連接算法93
3.3.3 排序歸并連接算法95
3.4 本章小結(jié)97
第4章 分布式環(huán)境下的事務(wù)處理99
4.1 深入理解事務(wù)100
4.1.1 本地事務(wù)100
4.1.2 全局事務(wù)111
4.1.3 分布式事務(wù)112
4.2 原子提交協(xié)議和分布式事務(wù)
解決方案113
4.2.1 2PC協(xié)議113
4.2.2 3PC協(xié)議118
4.2.3 Best Efforts 1 PC事務(wù)120
4.2.4 TCC事務(wù)121
4.2.5 SAGA事務(wù)123
4.3 并發(fā)控制協(xié)議125
4.3.1 悲觀并發(fā)控制協(xié)議126
4.3.2 樂觀并發(fā)控制協(xié)議134
4.3.3 多版本并發(fā)控制協(xié)議136
4.4 本章小結(jié)138
第5章 分布式數(shù)據(jù)服務(wù)一致性139
5.1 數(shù)據(jù)同步方法139
5.1.1 主從復(fù)制139
5.1.2 多主復(fù)制141
5.1.3 無(wú)主復(fù)制143
5.2 分布式數(shù)據(jù)一致性級(jí)別144
5.2.1 線性一致性145
5.2.2 順序一致性和PRAM一致性147
5.2.3 因果一致性149
5.2.4 最終一致性和弱一致性152
5.3 分布式數(shù)據(jù)一致性/共識(shí)算法154
5.3.1 ViewStamped Replication算法157
5.3.2 Paxos算法161
5.3.3 Practical Byzantine Fault Tolerance算法167
5.3.4 Raft算法171
5.4 本章小結(jié)177
第二部分 分布式系統(tǒng)經(jīng)典案例學(xué)習(xí)與實(shí)戰(zhàn)
第6章 分布式系統(tǒng)案例分析——GFS180
6.1 GFS的設(shè)計(jì)目標(biāo)180
6.2 GFS的master節(jié)點(diǎn)181
6.3 GFS讀文件182
6.4 GFS寫文件182
6.5 GFS的一致性183
6.6 本章小結(jié)185
第7章 面向分布式系統(tǒng)設(shè)計(jì)的Go語(yǔ)言基礎(chǔ)知識(shí)186
7.1 Go 語(yǔ)言的優(yōu)勢(shì)186
7.2 切片189
7.2.1 Go語(yǔ)言中的數(shù)組189
7.2.2 切片的聲明190
7.2.3 切片的追加190
7.2.4 切片的截取192
7.2.5 修改切片元素193
7.3 Goroutine和通道194
7.3.1 Goroutine簡(jiǎn)介195
7.3.2 Goroutine 的使用196
7.3.3 通道簡(jiǎn)介200
7.3.4 通道實(shí)現(xiàn)同步202
7.4 調(diào)度器203
7.4.1 調(diào)度器的設(shè)計(jì)決策203
7.4.2 Go語(yǔ)言調(diào)度器模型204
7.5 本章小結(jié)213
第8章 構(gòu)建強(qiáng)一致性算法庫(kù)214
8.1 核心數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)214
8.2 協(xié)程模型215
8.3 RPC定義217
8.3.1 日志條目:Entry217
8.3.2 投票請(qǐng)求:Request-Vote217
8.3.3 追加日志:Append-Entries218
8.4 Leader 選舉實(shí)現(xiàn)分析219
8.5 日志復(fù)制實(shí)現(xiàn)分析224
8.6 Raft快照實(shí)現(xiàn)分析228
8.7 本章小結(jié)230
第9章 基于強(qiáng)一致性算法庫(kù)構(gòu)建分布式鍵值存儲(chǔ)系統(tǒng)231
9.1 eraftkv架構(gòu)及運(yùn)行流程231
9.2 eraftkv環(huán)境配置232
9.3 讓系統(tǒng)運(yùn)行起來(lái)233
9.4 對(duì)外接口定義234
9.5 服務(wù)端核心實(shí)現(xiàn)分析235
9.6 本章小結(jié)239
第10章強(qiáng)一致性算法Raft的優(yōu)化設(shè)計(jì)與實(shí)現(xiàn):Multi-Raft240
10.1 設(shè)計(jì)思考240
10.2 配置服務(wù)器實(shí)現(xiàn)分析241
10.3 分片服務(wù)器實(shí)現(xiàn)分析242
10.4 客戶端實(shí)現(xiàn)分析246
10.5 本章小結(jié)248
參考文獻(xiàn)249