目錄
第1章應(yīng)用架構(gòu)演進(jìn)1
1.1傳統(tǒng)垂直應(yīng)用架構(gòu)2
1.1.1垂直應(yīng)用架構(gòu)介紹2
1.1.2垂直應(yīng)用架構(gòu)面臨的挑戰(zhàn)4
1.2RPC架構(gòu)6
1.2.1RPC框架原理6
1.2.2最簡單的RPC框架實(shí)現(xiàn)8
1.2.3業(yè)界主流RPC框架14
1.2.4RPC框架面臨的挑戰(zhàn)17
1.3SOA服務(wù)化架構(gòu)18
1.3.1面向服務(wù)設(shè)計(jì)的原則18
1.3.2服務(wù)治理19
1.4微服務(wù)架構(gòu)21
1.4.1什么是微服務(wù)21
1.4.2微服務(wù)架構(gòu)對比SOA22
1.5總結(jié)23
第2章分布式服務(wù)框架入門25
2.1分布式服務(wù)框架誕生背景26
2.1.1應(yīng)用從集中式走向分布式.26?
2.1.2亟需服務(wù)治理28
2.2業(yè)界分布式服務(wù)框架介紹29
2.2.1阿里Dubbo30
2.2.2淘寶HSF33
2.2.3亞馬遜CoralService35
2.3分布式服務(wù)框架設(shè)計(jì)36
2.3.1架構(gòu)原理36
2.3.2功能特性37
2.3.3性能特性39
2.3.4可靠性39
2.3.5服務(wù)治理40
2.4總結(jié)41
第3章通信框架42
3.1關(guān)鍵技術(shù)點(diǎn)分析43
3.1.1長連接還是短連接43
3.1.2BIO還是NIO43
3.1.3自研還是選擇開源NIO框架46
3.2功能設(shè)計(jì)47
3.2.1服務(wù)端設(shè)計(jì)48
3.2.2客戶端設(shè)計(jì)50
3.3可靠性設(shè)計(jì)53
3.3.1鏈路有效性檢測54
3.3.2斷連重連機(jī)制56
3.3.3消息緩存重發(fā)57
3.3.4資源優(yōu)雅釋放58
3.4性能設(shè)計(jì)59
3.4.1性能差的三宗罪59
3.4.2通信性能三原則60
3.4.3高性能之道61
3.5最佳實(shí)踐61
3.6總結(jié)64
第4章序列化與反序列化65
4.1幾個(gè)關(guān)鍵概念澄清66
4.1.1序列化與通信框架的關(guān)系66
4.1.2序列化與通信協(xié)議的關(guān)系66
4.1.3是否需要支持多種序列化方式67
4.2功能設(shè)計(jì)67
4.2.1功能豐富度67
4.2.2跨語言支持68
4.2.3兼容性69
4.2.4性能70
4.3擴(kuò)展性設(shè)計(jì)71
4.3.1內(nèi)置的序列化/反序列化功能類71
4.3.2反序列化擴(kuò)展72
4.3.3序列化擴(kuò)展75
4.4最佳實(shí)踐77
4.4.1接口的前向兼容性規(guī)范77
4.4.2高并發(fā)下的穩(wěn)定性78
4.5總結(jié)78
第5章協(xié)議棧79
5.1關(guān)鍵技術(shù)點(diǎn)分析.80
5.1.1是否必須支持多協(xié)議80
5.1.2公有協(xié)議還是私有協(xié)議80
5.1.3集成開源還是自研81
5.2功能設(shè)計(jì)82
5.2.1功能描述82
5.2.2通信模型82
5.2.3協(xié)議消息定義84
5.2.4協(xié)議棧消息序列化支持的字段類型85
5.2.5協(xié)議消息的序列化和反序列化86
5.2.6鏈路創(chuàng)建89
5.2.7鏈路關(guān)閉90
5.3可靠性設(shè)計(jì)90
5.3.1客戶端連接超時(shí)90
5.3.2客戶端重連機(jī)制91
5.3.3客戶端重復(fù)握手保護(hù)91
5.3.4消息緩存重發(fā)92
5.3.5心跳機(jī)制92
5.4安全性設(shè)計(jì)92
5.5最佳實(shí)踐—協(xié)議的前向兼容性94
5.6總結(jié)95
第6章服務(wù)路由96
6.1透明化路由97
6.1.1基于服務(wù)注冊中心的訂閱發(fā)布97
6.1.2消費(fèi)者緩存服務(wù)提供者地址98
6.2負(fù)載均衡98
6.2.1隨機(jī)98
6.2.2輪循99
6.2.3服務(wù)調(diào)用時(shí)延99
6.2.4一致性哈希100
6.2.5粘滯連接101
6.3本地路由優(yōu)先策略102
6.3.1injvm模式102
6.3.2innative模式102
6.4路由規(guī)則103
6.4.1條件路由規(guī)則103
6.4.2腳本路由規(guī)則104
6.5路由策略定制105
6.6配置化路由106
6.7最佳實(shí)踐—多機(jī)房路由107
6.8總結(jié)108
第7章集群容錯(cuò)109
7.1集群容錯(cuò)場景110
7.1.1通信鏈路故障110
7.1.2服務(wù)端超時(shí)111
7.1.3服務(wù)端調(diào)用失敗111
7.2容錯(cuò)策略112
7.2.1失敗自動(dòng)切換(Failover)112
7.2.2失敗通知(Failback)113
7.2.3失敗緩存(Failcache)113
7.2.4快速失斣み骸(Failfast)114
7.2.5容錯(cuò)策略擴(kuò)展114
7.3總結(jié)115
第8章服務(wù)調(diào)用116
8.1幾個(gè)誤區(qū)117
8.1.1NIO就是異步服務(wù)117
8.1.2服務(wù)調(diào)用天生就是同步的118
8.1.3異步服務(wù)調(diào)用性能更高120
8.2服務(wù)調(diào)用方式120
8.2.1同步服務(wù)調(diào)用120
8.2.2異步服務(wù)調(diào)用121
8.2.3并行服務(wù)調(diào)用125
8.2.4泛化調(diào)用129
8.3最佳實(shí)踐130
8.4總結(jié)131
第9章服務(wù)注冊中心132
9.1幾個(gè)概念133
9.1.1服務(wù)提供者133
9.1.2服務(wù)消費(fèi)者133
9.1.3服務(wù)注冊中心133
9.2關(guān)鍵功能特性設(shè)計(jì)134
9.2.1支持對等集群135
9.2.2提供CRUD接口136
9.2.3安全加固136
9.2.4訂閱發(fā)布機(jī)制137
9.2.5可靠性138
9.3基于ZooKeeper的服務(wù)注冊中心設(shè)計(jì)139
9.3.1服務(wù)訂閱發(fā)布流程設(shè)計(jì)139
9.3.2服務(wù)健康狀態(tài)檢測141
9.3.3對等集群防止單點(diǎn)故障142
9.3.4變更通知機(jī)制144
9.4總結(jié)144
第10章服務(wù)發(fā)布和引用145
10.1服務(wù)發(fā)布設(shè)計(jì)146
10.1.1服務(wù)發(fā)布的幾種方式146
10.1.2本地實(shí)現(xiàn)類封裝成代理148
10.1.3服務(wù)發(fā)布成指定協(xié)議148
10.1.4服務(wù)提供者信息注冊149
10.2服務(wù)引用設(shè)計(jì)150
10.2.1本地接口調(diào)用轉(zhuǎn)換成遠(yuǎn)程服務(wù)調(diào)用150
10.2.2服務(wù)地址本地緩存151
10.2.3遠(yuǎn)程服務(wù)調(diào)用151
10.3最佳實(shí)踐152
10.3.1對等設(shè)計(jì)原則152
10.3.2啟動(dòng)順序問題153
10.3.3同步還是異步發(fā)布服務(wù)153
10.3.4警惕網(wǎng)絡(luò)風(fēng)暴154
10.3.5配置擴(kuò)展154
10.4總結(jié)156
第11章服務(wù)灰度發(fā)布157
11.1服務(wù)灰度發(fā)布流程設(shè)計(jì)158
11.1.1灰度環(huán)境準(zhǔn)備158
11.1.2灰度規(guī)則設(shè)置159
11.1.3灰度規(guī)則下發(fā)160
11.1.4灰度路由161
11.1.5失敗回滾162
11.1.6灰度發(fā)布總結(jié)163
11.2總結(jié)163
第12章參數(shù)傳遞164
12.1內(nèi)部傳參165
12.1.1業(yè)務(wù)內(nèi)部參數(shù)傳遞165
12.1.2服務(wù)框架內(nèi)部參數(shù)傳遞168
12.2外部傳參169
12.2.1通信協(xié)議支持169
12.2.2傳參接口定義170
12.3最佳實(shí)踐171
12.3.1防止參數(shù)互相覆蓋171
12.3.2參數(shù)生命周期管理171
12.4總結(jié)172
第13章服務(wù)多版本173
13.1服務(wù)多版本管理設(shè)計(jì)174
13.1.1服務(wù)版本號(hào)管理174
13.1.2服務(wù)提供者175
13.1.3服務(wù)消費(fèi)者175
13.1.4基于版本號(hào)的服務(wù)路由176
13.1.5服務(wù)熱升級(jí)177
13.2與OSGi的對比178
13.2.1模塊化開發(fā)179
13.2.2插件熱部署和熱升級(jí)184
13.2.3不使用OSGi的其他理由185
13.3總結(jié)185
第14章流量控制186
14.1靜態(tài)流控187
14.1.1傳統(tǒng)靜態(tài)流控設(shè)計(jì)方案187
14.1.2傳統(tǒng)方案的缺點(diǎn)188
14.1.3動(dòng)態(tài)配額分配制188
14.1.4動(dòng)態(tài)配額申請制190
14.2動(dòng)態(tài)流控191
14.2.1動(dòng)態(tài)流控因子192
14.2.2分級(jí)流控192
14.3并發(fā)控制193
14.3.1服務(wù)端全局控制193
14.3.2服務(wù)消費(fèi)者流控194
14.4連接控制195
14.4.1服務(wù)端連接數(shù)流控195
14.4.2服務(wù)消費(fèi)者連接數(shù)流控195
14.5并發(fā)和連接控制算法195
14.6總結(jié)197
第15章服務(wù)降級(jí)198
15.1屏蔽降級(jí)199
15.1.1屏蔽降級(jí)的流程199
15.1.2屏蔽降級(jí)的設(shè)計(jì)實(shí)現(xiàn)200
15.2容錯(cuò)降級(jí)202
15.2.1容錯(cuò)降級(jí)的工作原理202
15.2.2運(yùn)行時(shí)容錯(cuò)降級(jí).204
15.3業(yè)務(wù)層降級(jí)205
15.4總結(jié)205
第16章服務(wù)優(yōu)先級(jí)調(diào)度207
16.1設(shè)置服務(wù)優(yōu)先級(jí)208
16.2線程調(diào)度器方案209
16.3Java優(yōu)先級(jí)隊(duì)列210
16.4加權(quán)優(yōu)先級(jí)隊(duì)列211
16.5服務(wù)遷入遷出212
16.6總結(jié)213
第17章服務(wù)治理214
17.1服務(wù)治理技術(shù)的歷史變遷215
17.1.1SOAGovernance215
17.1.2分布式服務(wù)框架服務(wù)治理217
17.1.3AWS云端微服務(wù)治理217
17.2應(yīng)用服務(wù)化后面臨的挑戰(zhàn)218
17.2.1跨團(tuán)隊(duì)協(xié)作問題219
17.2.2服務(wù)的上下線管控220
17.2.3服務(wù)安全220
17.2.4服務(wù)SLA保障.221
17.2.5故障快速定界定位221
17.3服務(wù)治理222
17.3.1服務(wù)治理架構(gòu)設(shè)計(jì)223
17.3.2運(yùn)行態(tài)服務(wù)治理功能設(shè)計(jì)225
17.3.3線下服務(wù)治理232
17.3.4安全和權(quán)限管理234
17.4總結(jié)237
第18章分布式消息跟蹤239
18.1業(yè)務(wù)場景分析240
18.1.1故障的快速定界定位240
18.1.2調(diào)用路徑分析241
18.1.3調(diào)用來源和去向分析242
18.2分布式消息跟蹤系統(tǒng)設(shè)計(jì)242
18.2.1系統(tǒng)架構(gòu)243
18.2.2埋點(diǎn)日志244
18.2.3采樣率247
18.2.4采集和存儲(chǔ)埋點(diǎn)日志248
18.2.5計(jì)算和展示249
18.2.6調(diào)用鏈擴(kuò)展251
18.3總結(jié)251
第19章可靠性設(shè)計(jì)253
19.1服務(wù)狀態(tài)檢測254
19.1.1基于服務(wù)注冊中心狀態(tài)檢測254
19.1.2鏈路有效性狀態(tài)檢測機(jī)制255
19.2服務(wù)健康度檢測256
19.3服務(wù)故障隔離257
19.3.1進(jìn)程級(jí)故障隔離257
19.3.2VM級(jí)故障隔離259
19.3.3物理機(jī)故障隔離260
19.3.4機(jī)房故障隔離261
19.4其他可靠性特性262
19.4.1服務(wù)注冊中心262
19.4.2監(jiān)控中心262
19.4.3服務(wù)提供者262
19.5總結(jié)263
第20章微服務(wù)架構(gòu)264
20.1微服務(wù)架構(gòu)產(chǎn)生的歷史背景265
20.1.1研發(fā)成本挑戰(zhàn)265
20.1.2運(yùn)維成本高267
20.1.3新需求上線周期長268
20.2微服務(wù)架構(gòu)帶來的改變268
20.2.1應(yīng)用解耦268
20.2.2分而治之270
20.2.3敏捷交付271
20.3微服務(wù)架構(gòu)解析271
20.3.1微服務(wù)劃分原則272
20.3.2開發(fā)微服務(wù)272
20.3.3基于Docker容器部署微服務(wù)274
20.3.4治理和運(yùn)維微服務(wù)277
20.3.5特點(diǎn)總結(jié)278
20.4總結(jié)279
第21章服務(wù)化最佳實(shí)踐280
21.1性能和時(shí)延問題281
21.1.1RPC框架高性能設(shè)計(jì)281
21.1.2業(yè)務(wù)最佳實(shí)踐285
21.2事務(wù)一致性問題286
21.2.1分布式事務(wù)設(shè)計(jì)方案287
21.2.2分布式事務(wù)優(yōu)化288
21.3研發(fā)團(tuán)隊(duì)協(xié)作問題289
21.3.1共用服務(wù)注冊中心290
21.3.2直連提供者290
21.3.3多團(tuán)隊(duì)進(jìn)度協(xié)同291
21.3.4服務(wù)降級(jí)和Mock測試291
21.3.5協(xié)同調(diào)試問題292
21.3.6接口前向兼容性292
21.4總結(jié)292?[1]