●第1章大繫統小做――大規模服務化架構.1
1.1分布式繫統的架構演變過程.1
1.1.1單機架構.3
1.1.2集群架構.4
1.1.3垂直拆分業務子繫統.6
1.1.4服務化架構演進.8
1.1.5服務化與微服務架構的區別.9
1.1.6集群與分布式的區別.10
1.1.7前後端分離架構演進.11
1.1.8API網關服務.14
1.1.9分布式多活數據中心架構演進.17
1.2服務治理需求.20
1.2.1服務化與RPC協議.20
1.2.2基於服務治理框架Dubbo實現服務化.22
1.2.3警惕因超時和重試引起的繫統雪崩.26
1.2.4為什麼需要實施服務治理.28
1.2.5關於服務化後的分布式事務問題.31
1.2.6注冊中心性能瓶頸方案.32
1.2.7分布式多活架構下的服務就近調用方案.34
1.3服務治理之調用鏈.35
1.3.1Google的Dapper論文簡介.36
1.3.2調用鏈的實現方案.38
1.3.3基於非侵入式運行期AOP方案實現數據采集上報.48
1.3.4調配采樣率.57
1.4本章小結.58
第2章大促備戰核彈――全鏈路壓測.59
2.1為什麼要在線上實施全鏈路壓測.60
2.2業務繫統如何區分壓測流量.63
2.2.1壓測流量打標方案.63
2.2.2在鏈路上下文信息中傳遞壓測標記.65
2.2.3外部第三方接口走Mock.67
2.2.4壓測數據的隔離方案.68
2.3如何發起大規模的壓測流量.69
2.3.1數據構造平臺.69
2.3.2自研全鏈路壓測軍演繫統的一些經驗分享.71
2.4本章小結.74
第3章削峰填谷――流控方案.75
3.1為什麼需要限流.76
3.2限流方案.79
3.2.1常見的限流算法.80
3.2.2基於Guava實現平均速率限流.83
3.2.3接入層限流方案.86
3.2.4應用層限流――限時搶購限流方案.89
3.3基於時間分片的削峰方案.92
3.3.1活動分時段進行實現削峰.93
3.3.2通過答題驗證實現削峰.93
3.4基於消息隊列的解耦、削峰、最終一致性方案.94
3.4.1基於消息隊列實現解耦.95
3.4.2常見消息中間件的使用.96
3.4.3基於消息隊列的一些典型案例.113
3.5本章小結.116
第4章大促搶購核心技術難題――讀/寫優化方案.117
4.1緩存技術簡介.118
4.1.1本地緩存.119
4.1.2本地緩存的痛點.121
4.1.3神秘的off-heap技術.122
4.2高性能分布式緩存Redis.127
4.2.1基於Jedis客戶端操作Redis.128
4.2.2基於RedisCluster模式實現Sharding.129
4.3同一熱賣商品高並發讀難題.133
4.3.1多級緩存方案.135
4.3.2緩存穿透思考.139
4.3.3RedisCluster模式下的讀/寫分離方案.140
4.4同一熱賣商品高並發寫難題.143
4.4.1InnoDB引擎的行鎖問題.143
4.4.2基於Redis樂觀鎖的庫存扣減方案.145
4.4.3嵌入Lua腳本的庫存扣減方案.149
4.4.4基於AliSQL數據庫提升並發寫性能.155
4.5本章小結.161
第5章星羅棋布――分庫分表方案.162
5.1關繫數據庫的架構演變.163
5.1.1數據庫讀/寫分離.163
5.1.2數據庫垂直分庫.164
5.1.3數據庫水平分庫與水平分表.165
5.1.4MySQLSharding與MySQLCluster的區別.166
5.2Sharding中間件.167
5.2.1常見的Sharding中間件對比.167
5.2.2Shark簡介.169
5.2.3Shark的架構模型.170
5.2.4使用Shark實現分庫分表後的數據路由任務.171
5.2.5分庫分表後所帶來的影響.178
5.2.6全局專享SequenceID解決方案.179
5.2.7基於Solr滿足多維度的復雜條件查詢.182
5.2.8關於分布式事務.183
5.3數據庫的HA方案.184
5.3.1基於配置中心實現主備切換.185
5.3.2基於Keepalived實現主備切換.186
5.3.3保障主備切換過程中的數據一致性.188
5.4訂單業務冗餘表需求.190
5.4.1冗餘表的實現方案.190
5.4.2數據最終一致性方案.192
5.5本章小結.195
附錄.196
後記.221
本書共5章,每一章的內容幾乎都是獨立的,大家接近可以有選擇性地閱讀。第1章以大規模服務化架構作為全書的開篇,主要介紹了分布式繫統架構的演變過程,以及在大規模服務調用場景下,如何實施服務治理。第2章重點介紹了在大促前夕,如何在線上實施全鏈路壓測,以及有指導性地進行容量規劃和性能優化,讓繫統堅如磐石。第3章重點介紹了如何有效地對流量實施管制,若采用合理且有效的方式管制住峰值流量,使其井然有序地對繫統進行訪問,則在任何情況下,繫統就都能穩定運行。第4章重點介紹了在大促搶購的場景下,如何解決高並發讀和高並發寫等核心技術難題。第5章詳細地介紹了關繫型數據庫的架構演變過程,還重點介紹了在實際的訂單業務場景下,如何保證數據的最終一致性。