分佈式緩存 原理、架構及 Go語言實現

胡世傑

下單後立即進貨 (約4週~6週)

買這商品的人也買了...

相關主題

商品描述

隨著互聯網的飛速發展,各行各業對互聯網服務的要求也越來越高,互聯網系統很多常見的存儲類場景都面臨著容量和穩定性風險。此時,本地緩存已無法滿足需要,分佈式緩存由於其高性能、高可用性等優點迅速被廣大互聯網公司接受並使用。

本書共分3個部分,每個部分都有3章。第1部分為基本功能的實現,主要介紹基於HTTP的in memory緩存服務、HTTP/REST協議、TCP等。第2部分介紹性能相關的內容,我們將集中全力講解從各方面提升緩存服務性能的方法,主要包括pipeline的原理、RocksDB批量寫入等。最後一個部分則和分佈式緩存服務集群有關,主要介紹分佈式緩存集群、節點的再平衡功能等。本書選擇用來實現分佈式緩存的編程語言是當前流行的Go語言。

本書適合從事緩存方面工作的工程師或架構師,也適合想要學習和實現分佈式緩存的讀者。

作者簡介

胡世傑,上海交通大學碩士,目前在七牛雲任職技術專家,是私有云存儲服務的負責人。
他是分佈式對象存儲系統專家,在該領域擁有多年的架構、開發和部署經驗,精通C、C++、Perl、Python、Ruby、Go等多種編程語言,熟悉ElasticSearch、RabbitMQ等各種開源軟件。之前他還寫過一本關於分佈式對象存儲的圖書—《分佈式對象存儲—原理、架構及Go語言實現》。本書是他的第二部作品。
除了自己寫作,他還致力於技術圖書的翻譯,是《JavaScript面向對象精要》《Python和HDF5大數據應用》《Python高性能編程》等多部著作的譯者。

目錄大綱

第1部分基本功能
第1章基於HTTP的內存緩存服務3 
1.1緩存服務的接口3 
1.1.1 REST接口3 
1.1.2緩存Set流程5 
1.1.3緩存Get流程6 
1.1.4緩存Del流程7 
1.2 Go語言實現8 
1.2.1 main包的實現8 
1.2.2 cache包的實現9 
1.2.3 HTTP包的實現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小結30 
第2章基於TCP的內存緩存服務32 
2.1基於TCP的緩存協議規範33 
2.1.1協議範式33 
2.1.2緩存Set流程35 
2.1. 3緩存Get流程36 
2.1.4緩存Del流程36 
2.2 Go語言實現37 
2.2.1 main函數的變化37 
2.2.2 TCP包的實現38 
2.2.3客戶端的實現44
2.3功能演示45 
2.4性能測試47 
2.5小結48 
第3章數據持久化50 
3.1 RocksDB簡介50 
3.2 RocksDB性能測試51 
3.2.1基本讀寫性能52 
3.2.2大容量測試52 
3.3用cgo調用C++庫函數55 
3.4 Go語言實現58 
3.4.1 main函數的實現58 
3.4.2 cache包的實現59 
3.5功能演示65 
3.6性能測試67 
3.7小結69 
第2部分性能相關
第4章用pipelining加速性能73 
4.1 pipelining原理73 
4.2 redis pipelining性能對比75 
4.3 Go語言實現77 
4.3.1 main包的實現77 
4.3.2 cacheClient包的實現86 
4.4性能測試97 
4.5小結99 
第5章批量寫入101 
5.1批量寫入能夠提升寫入性能的原理101 
5.2 RocksDB批量寫入性能測試102 
5.3 Go語言實現103 
5.4性能測試108 
5.5小結112
第6章異步操作113 
6.1異步操作能夠提升讀取性能的原理114 
6.2 Go語言實現117 
6.3性能測試122 
6.4小結127 
第3部分服務集群
第7章分佈式緩存131 
7.1為什麼我們需要集群服務131 
7.2負載均衡和一致性散列133 
7.3獲取節點列表的接口140 
7.4 Go語言實現140 
7.4.1 main函數的實現140 
7.4.2 cluster包的實現141 
7.4.3 HTTP包的實現145 
7.4.4 TCP包的實現147 
7.5功能演示149 
7.6小結152 
第8章節點再平衡154 
8.1節點再平衡的技術細節154 
8.2節點再平衡的接口155 
8.3 Go語言實現155 
8.3.1 HTTP包的實現155 
8.3.2 cache包的實現157 
8.4功能演示162 
8.5小結164 

第9章緩存生存時間166 
9.1緩存生存時間的作用166 
9.2 Go語言實現167 
9.2.1 main函數的實現167 
9.2.2 cache包的實現168
9.3功能演示172 
9.4小結174