分布式緩存 原理、架構(gòu)及Go語言實(shí)現(xiàn)
定 價(jià):49 元
- 作者:胡世杰
- 出版時(shí)間:2019/1/1
- ISBN:9787115491381
- 出 版 社:人民郵電出版社
- 中圖法分類:TP368.5
- 頁碼:174
- 紙張:
- 版次:01
- 開本:16開
隨著互聯(lián)網(wǎng)的飛速發(fā)展,各行各業(yè)對互聯(lián)網(wǎng)服務(wù)的要求也越來越高,互聯(lián)網(wǎng)系統(tǒng)很多常見的存儲(chǔ)類場景都面臨著容量和穩(wěn)定性風(fēng)險(xiǎn)。此時(shí),本地緩存已無法滿足需要,分布式緩存由于其高性能、高可用性等優(yōu)點(diǎn)迅速被廣大互聯(lián)網(wǎng)公司接受并使用。
。
本書共分3個(gè)部分,每個(gè)部分都有3章。第1部分為基本功能的實(shí)現(xiàn),主要介紹基于HTTP的in memory緩存服務(wù)、HTTP/REST協(xié)議、TCP等。第2部分介紹性能相關(guān)的內(nèi)容,我們將集中全力講解從各方面提升緩存服務(wù)性能的方法,主要包括pipeline的原理、RocksDB批量寫入等。最后一個(gè)部分則和分布式緩存服務(wù)集群有關(guān),主要介紹分布式緩存集群、節(jié)點(diǎn)的再平衡功能等。本書選擇用來實(shí)現(xiàn)分布式緩存的編程語言是當(dāng)前流行的Go語言。
本書適合從事緩存方面工作的工程師或架構(gòu)師,也適合想要學(xué)習(xí)和實(shí)現(xiàn)分布式緩存的讀者。
在網(wǎng)絡(luò)服務(wù)大行其道的今天,緩存服務(wù)作為提升網(wǎng)絡(luò)服務(wù)性能的有效手段也越來越受到架構(gòu)師的關(guān)注。本書從內(nèi)存緩存服務(wù)開始講起,介紹了如何實(shí)現(xiàn)緩存服務(wù),提升緩存服務(wù)性能的方法以及分布式緩存集群的相關(guān)知識。通過本書,讀者可以熟練掌握分布式緩存的原理和方法。
本書包括以下內(nèi)容:
內(nèi)存緩存服務(wù)的實(shí)現(xiàn);
利用RocksDB實(shí)現(xiàn)緩存持久化;
和Redis的性能對比;
Pipelining技術(shù);
批量寫入技術(shù);
異步讀取技術(shù);
分布式緩存原理;
節(jié)點(diǎn)再平衡功能。
本書適合從事緩存方面工作的工程師或架構(gòu)師閱讀,也適合對分布式緩存感興趣的人員閱讀。
胡世杰,上海交通大學(xué)碩士,目前在七牛云任職技術(shù)專家,是私有云存儲(chǔ)服務(wù)的負(fù)責(zé)人。
他是分布式對象存儲(chǔ)系統(tǒng)專家,在該領(lǐng)域擁有多年的架構(gòu)、開發(fā)和部署經(jīng)驗(yàn),精通C、C++、Perl、Python、Ruby、Go等多種編程語言,熟悉ElasticSearch、RabbitMQ等各種開源軟件。之前他還寫過一本關(guān)于分布式對象存儲(chǔ)的圖書—《分布式對象存儲(chǔ)—原理、架構(gòu)及Go語言實(shí)現(xiàn)》。本書是他的第二部作品。
除了自己寫作,他還致力于技術(shù)圖書的翻譯,是《JavaScript面向?qū)ο缶贰禤ython和HDF5大數(shù)據(jù)應(yīng)用》《Python高性能編程》等多部著作的譯者。
第 1部分 基本功能
第 1章 基于HTTP的內(nèi)存緩存服務(wù) 3
1.1 緩存服務(wù)的接口 3
1.1.1 REST接口 3
1.1.2 緩存Set流程 5
1.1.3 緩存Get流程 6
1.1.4 緩存Del流程 7
1.2 Go語言實(shí)現(xiàn) 8
1.2.1 main包的實(shí)現(xiàn) 8
1.2.2 cache包的實(shí)現(xiàn) 9
1.2.3 HTTP包的實(shí)現(xiàn) 14
1.3 功能演示 19
1.4 與Redis比較 21
1.4.1 Redis介紹 21
1.4.2 redis-benchmark介紹 23
1.4.3 cache-benchmark介紹 24
1.4.4 性能對比 26
1.5 小結(jié) 30
第 2章 基于TCP的內(nèi)存緩存服務(wù) 32
2.1 基于TCP的緩存協(xié)議規(guī)范 33
2.1.1 協(xié)議范式 33
2.1.2 緩存Set流程 35
2.1.3 緩存Get流程 36
2.1.4 緩存Del流程 36
2.2 Go語言實(shí)現(xiàn) 37
2.2.1 main函數(shù)的變化 37
2.2.2 TCP包的實(shí)現(xiàn) 38
2.2.3 客戶端的實(shí)現(xiàn) 44
2.3 功能演示 45
2.4 性能測試 47
2.5 小結(jié) 48
第3章 數(shù)據(jù)持久化 50
3.1 RocksDB簡介 50
3.2 RocksDB性能測試 51
3.2.1 基本讀寫性能 52
3.2.2 大容量測試 52
3.3 用cgo調(diào)用C++庫函數(shù) 55
3.4 Go語言實(shí)現(xiàn) 58
3.4.1 main函數(shù)的實(shí)現(xiàn) 58
3.4.2 cache包的實(shí)現(xiàn) 59
3.5 功能演示 65
3.6 性能測試 67
3.7 小結(jié) 69
第 2部分 性能相關(guān)
第4章 用pipelining加速性能 73
4.1 pipelining原理 73
4.2 redis pipelining性能對比 75
4.3 Go語言實(shí)現(xiàn) 77
4.3.1 main包的實(shí)現(xiàn) 77
4.3.2 cacheClient包的實(shí)現(xiàn) 86
4.4 性能測試 97
4.5 小結(jié) 99
第5章 批量寫入 101
5.1 批量寫入能夠提升寫入性能的原理 101
5.2 RocksDB批量寫入性能測試 102
5.3 Go語言實(shí)現(xiàn) 103
5.4 性能測試 108
5.5 小結(jié) 112
第6章 異步操作 113
6.1 異步操作能夠提升讀取性能的原理 114
6.2 Go語言實(shí)現(xiàn) 117
6.3 性能測試 122
6.4 小結(jié) 127
第3部分 服務(wù)集群
第7章 分布式緩存 131
7.1 為什么我們需要集群服務(wù) 131
7.2 負(fù)載均衡和一致性散列 133
7.3 獲取節(jié)點(diǎn)列表的接口 140
7.4 Go語言實(shí)現(xiàn) 140
7.4.1 main函數(shù)的實(shí)現(xiàn) 140
7.4.2 cluster包的實(shí)現(xiàn) 141
7.4.3 HTTP包的實(shí)現(xiàn) 145
7.4.4 TCP包的實(shí)現(xiàn) 147
7.5 功能演示 149
7.6 小結(jié) 152
第8章 節(jié)點(diǎn)再平衡 154
8.1 節(jié)點(diǎn)再平衡的技術(shù)細(xì)節(jié) 154
8.2 節(jié)點(diǎn)再平衡的接口 155
8.3 Go語言實(shí)現(xiàn) 155
8.3.1 HTTP包的實(shí)現(xiàn) 155
8.3.2 cache包的實(shí)現(xiàn) 157
8.4 功能演示 162
8.5 小結(jié) 164
第9章 緩存生存時(shí)間 166
9.1 緩存生存時(shí)間的作用 166
9.2 Go語言實(shí)現(xiàn) 167
9.2.1 main函數(shù)的實(shí)現(xiàn) 167
9.2.2 cache包的實(shí)現(xiàn) 168
9.3 功能演示 172
9.4 小結(jié) 174