分布式存儲(chǔ)系統(tǒng):核心技術(shù)、系統(tǒng)實(shí)現(xiàn)與Go項(xiàng)目實(shí)戰(zhàn) 李慶
定 價(jià):119 元
- 作者:李慶
- 出版時(shí)間:2024/8/1
- ISBN:9787111758020
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP333.2
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
全書(shū)分為3篇。第1篇存儲(chǔ)基本原理和分布式基本原理。特別針對(duì) Linux OS 的 IO 知識(shí)進(jìn)行講解,并且還會(huì)結(jié)合 Go 的存儲(chǔ)編程實(shí)現(xiàn)。第二篇剖析現(xiàn)有的存儲(chǔ)系統(tǒng)實(shí)現(xiàn),對(duì)它們使用的設(shè)計(jì),概念,實(shí)現(xiàn)進(jìn)行深入的剖析。以此來(lái)借鑒。第三篇進(jìn)行編程實(shí)戰(zhàn),將編寫(xiě)數(shù)個(gè)極具實(shí)踐價(jià)值的應(yīng)用程序,并且形成一個(gè)完備的分布式存儲(chǔ)系統(tǒng)。
1)大廠資深工程師撰寫(xiě),串聯(lián)紛繁復(fù)雜的分布式存儲(chǔ)知識(shí),通俗易懂、好學(xué)易用,一本書(shū)學(xué)透,進(jìn)階存儲(chǔ)資深工程師2)以Go和Linux存儲(chǔ)為“地基”,以分布式系統(tǒng)核心技術(shù)與實(shí)現(xiàn)“主框架”,以分布式文件系統(tǒng)為“梁柱”,利用多種業(yè)務(wù)場(chǎng)景和案例進(jìn)行可用性夯實(shí),打造存儲(chǔ)知識(shí)體系“樣板間”
Preface 前 言
為什么要寫(xiě)這本書(shū)
在這個(gè)信息技術(shù)飛速發(fā)展的時(shí)代,數(shù)據(jù)已成為一種重要的資產(chǎn)。隨著互聯(lián)網(wǎng)技術(shù)突飛猛進(jìn)的發(fā)展,海量數(shù)據(jù)的生成、存儲(chǔ)、處理以及分析逐漸成為常態(tài)。在這種背景下,分布式存儲(chǔ)系統(tǒng)以其高可靠性、可伸縮性和高性能,成為支撐大數(shù)據(jù)時(shí)代的堅(jiān)固基石。
本書(shū)的編寫(xiě)基于我對(duì)當(dāng)代分布式存儲(chǔ)技術(shù)的深刻理解,以及對(duì)Go語(yǔ)言在此領(lǐng)域的潛力的深刻認(rèn)識(shí)。Go語(yǔ)言因其簡(jiǎn)潔的語(yǔ)法、強(qiáng)大的并發(fā)處理能力和優(yōu)異的性能,成為構(gòu)建大規(guī)模分布式系統(tǒng)的首選語(yǔ)言之一。
存儲(chǔ)是底層的技術(shù),涉及的知識(shí)廣泛而復(fù)雜,經(jīng)常讓初學(xué)者望而卻步。很多存儲(chǔ)技術(shù)開(kāi)發(fā)的人員都是在實(shí)際工作中逐步摸索,積累的知識(shí)往往是零散且碎片化的,難以形成系統(tǒng)化的思維框架。當(dāng)遇到問(wèn)題時(shí),他們往往難以迅速找到解決方案。因此,目前缺少的不僅是一本能夠引導(dǎo)讀者入門(mén)存儲(chǔ)領(lǐng)域的書(shū)籍,更是一本能幫助讀者構(gòu)建起存儲(chǔ)知識(shí)體系,并將理論應(yīng)用到實(shí)踐中去的指導(dǎo)書(shū)。
本書(shū)旨在全面深入地解讀分布式存儲(chǔ)系統(tǒng)的基礎(chǔ)原理,并借助Go語(yǔ)言去實(shí)踐這些原理。從基礎(chǔ)知識(shí)到知識(shí)體系構(gòu)建,從代碼演示到典型項(xiàng)目分析,再到項(xiàng)目實(shí)戰(zhàn),本書(shū)將逐步引導(dǎo)讀者深入理解并實(shí)際運(yùn)用分布式存儲(chǔ)技術(shù),幫助讀者構(gòu)建起完整的存儲(chǔ)知識(shí)體系,以便快速進(jìn)入存儲(chǔ)開(kāi)發(fā)領(lǐng)域。
本書(shū)特色
Go存儲(chǔ)編程的技巧:深入淺出地講解Go語(yǔ)言的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)、存儲(chǔ)I/O框架、并發(fā)編程等關(guān)鍵技術(shù)點(diǎn)。
Linux存儲(chǔ)體系:構(gòu)建起完整的Linux存儲(chǔ)體系,幫助讀者從根本上理解存儲(chǔ)技術(shù)的內(nèi)在邏輯。
理論與實(shí)踐相結(jié)合:通過(guò)豐富的代碼示例與測(cè)試手段分析關(guān)鍵存儲(chǔ)技術(shù)的實(shí)現(xiàn)過(guò)程,并展示如何使用Go語(yǔ)言打造真實(shí)運(yùn)行的分布式存儲(chǔ)系統(tǒng)。
經(jīng)典項(xiàng)目深度解讀:詳細(xì)講解了Minix、FUSE、LevelDB等經(jīng)典存儲(chǔ)項(xiàng)目,以便讀者深刻理解它們的核心原理,并快速掌握存儲(chǔ)技術(shù)的開(kāi)發(fā)與實(shí)踐。
分布式存儲(chǔ)的項(xiàng)目實(shí)踐:實(shí)現(xiàn)了一個(gè)真實(shí)的分布式存儲(chǔ)項(xiàng)目,以便讀者從實(shí)踐中深入理解分布式存儲(chǔ)的原理。
讀者對(duì)象
本書(shū)適合具備一定Go語(yǔ)言開(kāi)發(fā)經(jīng)驗(yàn),并對(duì)Linux基礎(chǔ)知識(shí)有了解的讀者閱讀。具體來(lái)說(shuō),本書(shū)適用于以下讀者:
Go語(yǔ)言開(kāi)發(fā)工程師。
分布式存儲(chǔ)領(lǐng)域的初學(xué)者。
希望通過(guò)Go語(yǔ)言優(yōu)化現(xiàn)有存儲(chǔ)解決方案的資深開(kāi)發(fā)者。
如何閱讀本書(shū)
本書(shū)共16章,分為四部分。讀者可以按照章節(jié)順序閱讀,也可以根據(jù)需求挑選感興趣的章節(jié)進(jìn)行專項(xiàng)學(xué)習(xí)。
第一部分(第1~3章) Go語(yǔ)言基礎(chǔ),涵蓋以下內(nèi)容。
第1章闡述了存儲(chǔ)的重要性,并特別討論了Go語(yǔ)言在存儲(chǔ)領(lǐng)域的重要性。
第2章介紹了Go語(yǔ)言在存儲(chǔ)編程中常用的數(shù)據(jù)結(jié)構(gòu),以方便讀者了解底層的數(shù)據(jù)存儲(chǔ)細(xì)節(jié)。
第3章深入介紹了Go語(yǔ)言的I/O框架,系統(tǒng)梳理了Go語(yǔ)言存儲(chǔ)編程的知識(shí)體系。
第二部分(第4~9章) 存儲(chǔ)基礎(chǔ),涵蓋以下內(nèi)容。
第4章詳細(xì)探討了Linux的存儲(chǔ)架構(gòu)以及文件和文件系統(tǒng)的核心概念。
第5章展示了常見(jiàn)的存儲(chǔ)編程案例,探討了讀寫(xiě)優(yōu)化的策略以及數(shù)據(jù)安全性的保障方法。
第6章深入剖析了多種I/O模式,以及Linux上的典型I/O模式的實(shí)現(xiàn)。
第7章詳細(xì)介紹了多種I/O并發(fā)模型,包括多進(jìn)程、多線程、協(xié)程模型,并深入討論了I/O多路復(fù)用的原理和實(shí)現(xiàn)。
第8章解讀了多種緩存模式,包括旁路緩存、讀寫(xiě)穿透、異步回寫(xiě)模式等。
第9章闡述了數(shù)據(jù)校驗(yàn)技術(shù)及其在實(shí)際中的應(yīng)用場(chǎng)景。
第三部分(第10~12章) 分布式系統(tǒng)基礎(chǔ),涵蓋以下內(nèi)容。
第10章闡釋了分布式系統(tǒng)的基礎(chǔ)理論,如CAP和BASE等,并分析了2PC、3PC、Paxos、Raft等分布式協(xié)議。
第11章講述了常見(jiàn)的高可用模式和關(guān)鍵技術(shù)。
第12章探討了數(shù)據(jù)分布策略和數(shù)據(jù)冗余策略。
第四部分(第13~16章) 存儲(chǔ)系統(tǒng)實(shí)戰(zhàn),涵蓋以下內(nèi)容。
第13章介紹了Linux上經(jīng)典磁盤(pán)文件系統(tǒng)Minix的原理和實(shí)現(xiàn)。
第14章介紹了存儲(chǔ)引擎LevelDB的原理和實(shí)現(xiàn)。
第15章介紹了用戶態(tài)文件系統(tǒng)的原理和實(shí)現(xiàn),并演示了一個(gè)簡(jiǎn)易用戶態(tài)文件系統(tǒng)HelloFS的構(gòu)建過(guò)程。
第16章基于HelloFS,指導(dǎo)讀者逐步搭建一個(gè)分布式的存儲(chǔ)系統(tǒng)。
勘誤和支持
由于編寫(xiě)時(shí)間倉(cāng)促,書(shū)中難免有疏漏或不夠精確之處,懇請(qǐng)讀者批評(píng)指正。如果讀者有更多寶貴意見(jiàn),歡迎訪問(wèn)微信公眾號(hào)“奇伢云存儲(chǔ)”進(jìn)行討論,我會(huì)盡力在線上為讀者答疑解惑。同時(shí),也可以通過(guò)郵箱liqingqiya@163.com聯(lián)系我。期待得到讀者的反饋,讓我們?cè)诩夹g(shù)之路上互勉共進(jìn)。
致謝
感謝我的妻子,她的耐心和理解為我提供了一個(gè)寧?kù)o且充滿愛(ài)的創(chuàng)作環(huán)境。同時(shí),感謝我的家人,他們是我堅(jiān)實(shí)的后盾,給予了我必要的支持和鼓勵(lì)。
本書(shū)也是獻(xiàn)給我心愛(ài)的女兒的特殊禮物,祝愿她健康成長(zhǎng)。
李慶
李慶:資深存儲(chǔ)系統(tǒng)工程師,擁有近十年存儲(chǔ)研發(fā)與落地經(jīng)驗(yàn)。曾參與設(shè)計(jì)和運(yùn)維多個(gè)EiB級(jí)別(百億兆字節(jié)規(guī)模)的存儲(chǔ)系統(tǒng),這些系統(tǒng)應(yīng)用于全球領(lǐng)先的科技企業(yè),支撐著關(guān)鍵業(yè)務(wù)的數(shù)據(jù)處理和存儲(chǔ)需求。
目 錄 Contents
前言
第一部分 Go語(yǔ)言基礎(chǔ)
第1章 存儲(chǔ)概述2
1.1 Go語(yǔ)言與存儲(chǔ)應(yīng)用2
1.2 存儲(chǔ):云變革的基石3
1.3 存儲(chǔ)技術(shù)的發(fā)展3
1.3.1 提升速度4
1.3.2 擴(kuò)大容量4
1.4 本章小結(jié)4
第2章 Go語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)5
2.1 字節(jié)5
2.1.1 字節(jié)的定義5
2.1.2 字節(jié)的序列6
2.2 數(shù)組和切片10
2.2.1 數(shù)組10
2.2.2 切片11
2.3 字符串13
2.3.1 變量的定義14
2.3.2 內(nèi)存的分配15
2.3.3 字符串的操作16
2.3.4 類型轉(zhuǎn)換20
2.4 map類型21
2.4.1 創(chuàng)建與初始化21
2.4.2 讀取、寫(xiě)入和刪除24
2.4.3 元素遍歷29
2.5 Channel類型32
2.5.1 創(chuàng)建與初始化32
2.5.2 入隊(duì)和出隊(duì)34
2.5.3 select和Channel結(jié)合41
2.5.4 for-range和Channel結(jié)合44
2.6 接口類型45
2.6.1 變量的定義45
2.6.2 實(shí)現(xiàn)原理47
2.6.3 接口nil賦值和判斷54
2.7 本章小結(jié)55
第3章 Go語(yǔ)言的I/O框架56
3.1 I/O的定義56
3.1.1 基礎(chǔ)類型56
3.1.2 組合類型60
3.1.3 進(jìn)階類型63
3.2 通用I/O函數(shù)68
3.2.1 面向I/O接口的操作68
3.2.2 文件I/O的操作函數(shù)70
3.3 文件系統(tǒng)71
3.3.1 FS接口的定義72
3.3.2 FS接口的實(shí)現(xiàn)和擴(kuò)展74
3.4 I/O標(biāo)準(zhǔn)庫(kù)拓?fù)?8
3.4.1 字節(jié)I/O78
3.4.2 字符串I/O79
3.4.3 網(wǎng)絡(luò)I/O80
3.4.4 文件I/O82
3.4.5 緩沖I/O83
3.5 文件I/O和網(wǎng)絡(luò)I/O85
3.5.1 文件I/O86
3.5.2 網(wǎng)絡(luò)I/O89
3.6 本章小結(jié)98
第二部分 存儲(chǔ)基礎(chǔ)
第4章 Linux 存儲(chǔ)基礎(chǔ)102
4.1 存儲(chǔ)架構(gòu)102
4.1.1 系統(tǒng)調(diào)用103
4.1.2 VFS層106
4.1.3 文件系統(tǒng)層122
4.1.4 塊層123
4.1.5 設(shè)備驅(qū)動(dòng)層123
4.2 文件的定義124
4.2.1 文件的類型124
4.2.2 一切皆文件127
4.2.3 文件句柄130
4.3 文件系統(tǒng)131
4.3.1 文件系統(tǒng)的掛載要素132
4.3.2 文件系統(tǒng)的開(kāi)發(fā)要素132
4.4 文件I/O函數(shù)134
4.4.1 打開(kāi)文件135
4.4.2 寫(xiě)文件137
4.4.3 讀文件138
4.4.4 文件偏移操作139
4.4.5 數(shù)據(jù)刷盤(pán)141
4.4.6 關(guān)閉文件141
4.5 本章小結(jié)142
第5章 存儲(chǔ)I/O實(shí)踐143
5.1 文件的讀寫(xiě)143
5.1.1 順序I/O143
5.1.2 隨機(jī)I/O146
5.2 數(shù)據(jù)安全落盤(pán)的方式148
5.2.1 Sync刷盤(pán)方式148
5.2.2 Direct I/O方式149
5.3 讀寫(xiě)優(yōu)化思路153
5.3.1 寫(xiě)操作的優(yōu)化154
5.3.2 讀操作的優(yōu)化 159
5.4 本章小結(jié)162
第6章 高級(jí)I/O模式163
6.1 阻塞和非阻塞I/O163
6.2 同步和異步I/O164
6.3 I/O 接口的模式165
6.3.1 同步阻塞I/O165
6.3.2 同步非阻塞I/O166
6.3.3 異步阻塞I/O167
6.3.4 異步非阻塞I/O167
6.4 Linux的I/O模式實(shí)現(xiàn)168
6.4.1 信號(hào)驅(qū)動(dòng)I/O168
6.4.2 Linux的異步I/O169
6.4.3 I/O多路復(fù)用171
6.5 本章小結(jié)172
第7章 并發(fā)I/O模型173
7.1 多進(jìn)程模型173
7.2 多線程模型174
7.3 協(xié)程模型175
7.3.1 基本原理175
7.3.2 Go語(yǔ)言的Goroutine178
7.4 I/O多路復(fù)用179
7.4.1 select181
7.4.2 poll183
7.4.3 epoll184
7.5 本章小結(jié)200
第8章 緩存模式201
8.1 旁路緩存模式202
8.1.1 讀操作流程202
8.1.2 寫(xiě)操作流程203
8.2 讀寫(xiě)穿透模式205
8.2.1 讀穿透模式205
8.2.2 寫(xiě)穿透模式206
8.3 異步回寫(xiě)模式206
8.4 本章小結(jié)207
第9章 數(shù)據(jù)校驗(yàn)技術(shù)208
9.1 數(shù)據(jù)校驗(yàn)的概念與原理208
9.2 數(shù)據(jù)校驗(yàn)的應(yīng)用場(chǎng)景209
9.3 常見(jiàn)數(shù)據(jù)校驗(yàn)技術(shù)210
9.3.1 奇偶校驗(yàn)210
9.3.2 循環(huán)冗余校驗(yàn)211
9.3.3 摘要算法212
9.4 本章小結(jié)215
第三部分 分布式系統(tǒng)基礎(chǔ)
第10章 分布式存儲(chǔ)理論218
10.1 分布式系統(tǒng)的特征218
10.2 分布式系統(tǒng)的問(wèn)題220
10.2.1 無(wú)全局時(shí)鐘220
10.2.2 網(wǎng)絡(luò)異常220
10.2.3 結(jié)果的三態(tài)221
10.3 數(shù)據(jù)一致性222
10.3.1 狀態(tài)一致性222
10.3.2 操作一致性222
10.4 分布式理論225
10.4.1 CAP 理論225
10.4.2 BASE 理論226
10.5 分布式協(xié)議227
10.5.1 2PC協(xié)議227
10.5.2 3PC協(xié)議228
10.5.3 Paxos協(xié)議230
10.5.4 Raft協(xié)議233
10.6 本章小結(jié)236
第11章 高可用系統(tǒng)237
11.1 高可用的概念與原理237
11.2 高可用的關(guān)鍵技術(shù)238
11.3 高可用的架構(gòu)模式240
11.3.1 雙機(jī)架構(gòu)的模式240
11.3.2 集群模式242
11.4 本章小結(jié)245
第12章 數(shù)據(jù)策略246
12.1 數(shù)據(jù)分布設(shè)計(jì)原則246<