贊譽
推薦序1
推薦序2
推薦序3
作者寄語
前言
第1章 緩存為王1
1.1 什麼是緩存?1
1.2 為什麼使用緩存?2
1.2.1 從用戶體驗說起3
1.2.2 關於係統的性能3
1.3 從網站的架構發展看緩存4
1.4 客戶端緩存5
1.4.1 頁麵緩存6
1.4.2 瀏覽器緩存7
1.4.3 APP上的緩存8
1.5 網絡中的緩存11
1.5.1 Web代理緩存11
1.5.2 邊緣緩存12
1.6 服務端緩存14
1.6.1 數據庫緩存14
1.6.2 平颱級緩存16
1.6.3 應用級緩存18
第2章 分布式係統理論24
2.1 分布式係統概論24
2.2 分布式係統概念26
2.2.1 進程與綫程26
2.2.2 並發26
2.2.3 鎖26
2.2.4 並行27
2.2.5 集群27
2.2.6 狀態特性28
2.2.7 係統重發與冪等性28
2.2.8 硬件異常30
2.3 分布式係統理論31
2.3.1 CAP理論32
2.3.2 CAP理論澄清34
2.3.3 Paxos35
2.3.4 2PC38
2.3.5 3PC39
2.3.6 Raft40
2.3.7 Lease機製41
2.3.8 解決“腦裂”問題43
2.3.9 Quorum NWR44
2.3.10 MVCC45
2.3.11 Gossip46
2.4 分布式係統設計策略49
2.4.1 心跳檢測50
2.4.2 高可用設計50
2.4.3 容錯性52
2.4.4 負載均衡53
2.5 分布式係統設計實踐54
2.5.1 全局ID生成54
2.5.2 哈希取模56
2.5.3 一緻性哈希57
2.5.4 路由錶58
2.5.5 數據拆分58
第3章 動手寫緩存60
3.1 緩存定義的規範60
3.1.1 新規範的主要內容及特性60
3.1.2 新規範的API介紹61
3.2 緩存框架的實現62
3.2.1 前期準備63
3.2.2 緩存的架構介紹63
3.2.3 設計思路以及知識點詳解64
3.3 緩存框架的使用示例74
第4章 Ehcache與Guava Cache76
4.1 Ehcache的主要特性76
4.2 Ehcache使用介紹77
4.2.1 Ehcache架構圖77
4.2.2 緩存數據過期策略78
4.2.3 Ehcache緩存的基本用法81
4.2.4 在Spring中使用Ehcache83
4.3 Ehcache集群介紹85
4.3.1 集群的方式86
4.3.2 如何配置集群88
4.4 Ehcache的適用場景89
4.5 Guava Cache的使用92
4.5.1 Guava Cache的適用場景92
4.5.2 Guava Cache的創建方式93
4.5.3 緩存數據刪除95
4.5.4 並發場景下的使用95
4.6 本章小結96
第5章 從Memcached開始瞭解集中式緩存97
5.1 Memcached基本知識98
5.1.1 Memcached的操作命令98
5.1.2 Memcached使用場景100
5.1.3 Memcached特徵100
5.1.4 Memcached的一些問題101
5.2 Memcached內存存儲102
5.2.1 Slab Allocation機製102
5.2.2 使用 Growth Factor進行調優104
5.2.3 Item105
5.3 典型問題解析106
5.3.1 過期機製106
5.3.2 哈希算法107
5.3.3 熱點問題108
5.3.4 緩存與數據庫的更新問題108
5.3.5 彆把緩存當存儲109
5.3.6 命名空間110
5.3.7 CAS110
5.4 Memcached客戶端分析110
5.4.1 Memcached的Client111
5.4.2 Spymemcached設計思想解析111
5.5 Memcached周邊工具發展117
第6章 Memcached 周邊技術119
6.1 Twemcache119
6.1.1 Twemcache 的設計原理120
6.1.2 Twemcache的安裝及命令行詳解122
6.1.3 基於Java的Twemcache用法125
6.2 Twemproxy126
6.2.1 Twemproxy的常用部署模式127
6.2.2 Twemproxy的可擴展性129
6.2.3 Twemproxy源代碼簡析131
6.3 Mcrouter137
6.3.1 Mcrouter路由算法138
6.3.2 典型的使用場景139
6.3.3 Mcrouter的可擴展性142
6.3.4 源碼簡要解析144
第7章 Redis探秘148
7.1 數據結構148
7.1.1 value對象的通用結構149
7.1.2 String149
7.1.3 List152
7.1.4 Map155
7.1.5 Set157
7.1.6 Sorted-Set159
7.2 客戶端與服務器的交互160
7.2.1 客戶端/服務器協議161
7.2.2 請求/響應模式163
7.2.3 事務模式164
7.2.4 腳本模式168
7.2.5 發布/訂閱模式169
7.3 單機處理邏輯171
7.3.1 多路復用171
7.3.2 定時任務處理173
7.4 持久化174
7.4.1 基於全量模式的持久化174
7.4.2 基於增量模式的持久化176
7.4.3 基於增量模式持久化的優化178
第8章 分布式Redis180
8.1 水平拆分(sharding)181
8.1.1 數據分布181
8.1.2 請求路由182
8.2 主備復製(replication)182
8.2.1 主備復製流程183
8.2.2 斷點續傳183
8.3 故障轉移(failover)184
8.3.1 sentinel間的相互感知185
8.3.2 master的故障發現186
8.3.3 failover決策186
8.4 Redis Cluster187
8.4.1 拓撲結構187
8.4.2 配置的一緻性188
8.4.3 sharding190
8.4.4 failover193
8.4.5 可用性和性能196
第9章 Tair探秘198
9.1 Tair總體架構198
9.2 Config Server簡介199
9.3 Data Server簡介201
9.4 Tair高可用和負載均衡204
9.4.1 對照錶204
9.4.2 數據遷移219
9.5 存儲引擎220
9.6 Tair的API222
9.6.1 key/value相關API223
9.6.2 prefix相關的API226
第10章 EVCache探秘229
10.1 EVCache項目介紹230
10.1.1 EVCache的由來231
10.1.2 EVCache的發展232
10.1.3 EVCache的演進234
10.2 EVCache 的使用場景238
10.2.1 典型用例238
10.2.2 典型部署239
10.3 EVCache的性能240
10.3.1 EVCache集群的性能240
10.3.2 全局化復製時的性能問題242
10.3.3 Moneta項目中的組件性能243
10.4 EVCache 的高可用性244
10.4.1 AWS的多可用區244
10.4.2 EVCache對AWS高可用性的增強245
10.5 源碼與示例245
10.5.1 源碼淺析245
10.5.2 EVCache 示例253
第11章 Aerospike原理及廣告業務應用259
11.1 Aerospike架構259
11.2 Aerospike具體實現261
11.2.1 Aerospike集群管理261
11.2.2 數據分布263
11.3 Aerospike集群配置和部署265
11.3.1 搭建集群的方式與配置266
11.3.2 部署集群267
11.4 Aerospike與Redis的對比271
11.5 Aeropsike在廣告行業的具體應用272
11.5.1 Aerospike在個性化推薦廣告中的應用273
11.5.2 Aerospike在實時競價廣告中的應用274
第12章 社交場景架構進化:從數據庫到緩存283
12.1 社交業務示例283
12.1.1 業務模型283
12.1.2 業務場景284
12.1.3 業務特點285
12.2 關係(relation)的存儲286
12.2.1 基於DB的最簡方案286
12.2.2 DB的sharding方案288
12.2.3 引入緩存290
12.2.4 緩存的優化方案292
12.3 帖子(post)的存儲293
12.3.1 基於DB的方案294
12.3.2 引入服務端緩存296
12.3.3 本地緩存297
12.4 時間綫(timeline)的存儲297
12.4.1 基於DB的方案—push模式298
12.4.2 基於DB的方案—pull模式300
12.4.3 增量查詢引入服務端緩存302
第13章 緩存在社交網絡Feed係統中的架構實踐304
13.1 Feed係統架構304
13.2 Feed緩存模型307
13.3 Feed緩存架構的設計309
13.3.1 簡單數據類型的緩存設計310
13.3.2 集閤類數據的緩存設計312
13.3.3 其他類型數據的緩存設計314
13.4 Feed緩存的擴展 315
13.4.1 Redis的擴展315
13.4.2 計數器的擴展316
13.4.3 存在性判斷的擴展318
13.5 Feed緩存的服務化319
第14章 典型電商應用與緩存324
14.1 電商類應用的挑戰及特點324
14.2 應用數據靜態化架構高性能單頁Web應用325
14.2.1 整體架構326
14.2.2 CMS係統326
14.2.3 前端展示係統328
14.2.4 控製係統328
14.3 應用多級緩存模式支撐海量讀服務329
14.3.1 多級緩存介紹329
14.3.2 如何緩存數據331
14.3.3 分布式緩存與應用負載均衡332
14.3.4 熱點數據與更新緩存334
14.3.5 更新緩存與原子性336
14.3.6 緩存崩潰與快速修復336
14.4 構建需求響應式億級商品詳情頁337
14.4.1 商品詳情頁前端結構338
14.4.2 單品頁技術架構發展338
14.4.3 詳情頁架構設計原則343
14.4.4 遇到的一些問題349
第15章 同程鳳凰緩存係統基於Redis的設計與實踐357
15.1 同程鳳凰緩存係統要解決什麼問題357
15.1.1 Redis用法的淩亂358
15.1.2 從實際案例再看Redis的使用360
15.1.3 如何改變Redis用不好的誤區362
15.1.4 鳳凰緩存係統對Redis係統化改造364
15.2 用好Redis先運維好它366
15.2.1 傳統的Redis運維方式366
15.2.2 Redis的Docker化部署368
15.2.3 鳳凰緩存係統對Redis的監控369
15.2.4 鳳凰緩存係統對Redis的集群分片優化370
15.2.5 客戶端在運維中的作用371
15.2.6 鳳凰緩存係統在Redis運維上的工具372
15.3 鳳凰緩存係統的使用效果373
第16章 新的旅程374
16.1 更好的引入緩存技術374
16.1.1 緩存引入前的考量374
16.1.2 緩存組件的選擇375
16.1.3 緩存架構的設計376
16.1.4 緩存係統的監控及演進377
16.2 緩存分類總結377
16.3 緩存知識結構更多Tips378
16.3.1 緩存使用模式379
16.3.2 緩存協議379
16.3.3 緩存連接池380
16.3.4 幾個關注點383
16.3.5 管理緩存387
16.3.6 緩存可用性390
16.3.7 數據一緻性392
16.3.8 熱點數據處理393
16.3.9 注意事項Tips396
· · · · · · (
收起)