分散式服務框架原理與實踐

分散式服務框架原理與實踐

《分散式服務框架原理與實踐》是2016年1月電子工業出版社出版的圖書,作者是李林鋒。

基本介紹

  • 書名:分散式服務框架原理與實踐
  • 作者:李林鋒 著
  • ISBN: 978-7-121-27919-5
  • 頁數:312頁
  • 定價:65.00元
  • 出版社電子工業出版社
  • 出版時間:2016年1月
  • 裝幀:平裝
  • 開本:16開
內容簡介,作者簡介,精彩書評,目錄,

內容簡介

《分散式服務框架原理與實踐》作者具有豐富的分散式服務框架、平台中間件的架構設計和實踐經驗,主導設計的華為分散式服務框架已經在全球數十個國家成功商用。《分散式服務框架原理與實踐》依託工作實踐,從分散式服務框架的架構設計原理到實踐經驗總結,涵蓋了服務化架構演進、訂閱發布、路由策略、集群容錯和服務治理等多個專題,全方位剖析服務框架的設計原則和原理,結合大量實踐案例與讀者分享作者對分散式服務框架設計和運維的體會。同時,對基於Docker部署微服務以及基於微服務架構開發、部署和運維業務系統進行了詳細介紹。

作者簡介

李林鋒,現任華為PaaS平台架構師,8年JavaNIO通信框架、平台中間件架構設計和開發經驗,主導設計和開發的華為分散式服務框架已經在全球數十個國家成功商用。精通NettyMinaRPC框架、企業ESB匯流排、分散式服務框架等技術,Netty專業書作者,公司總裁技術創新獎獲得者。

精彩書評

構建企業網際網路架構的關鍵在於系統分散式和服務化,尤其對於大型網站和大型企業系統,系統的靈活性、超大容量、彈性和自治能力是非常大的挑戰。在《分散式服務框架原理與實踐》一書中,作者基於深厚的軟體技術積累和電信領域成功套用實踐,對如何構建分散式服務化系統,提供了原理分析、關鍵技術、開發案例以及業界技術對比,非常系統化,不論是學習分散式服務技術還是深入大型網際網路架構都非常實用。
——華為雲集成平台首席架構師苗彩霞
認識林鋒已有多年,從Netty專業書到本書的誕生,再次見證了作者在該領域深厚的沉澱。閱覽該書的目錄以及相關章節,我驚詫於作者在這些領域深入的洞察和實踐。該書幾乎覆蓋了分散式系統開發的每一個關鍵技術點,包括很為重要的通信框架設計、時下流行的微服務、服務路由關聯的技術和策略,以及飽受爭議的OSGi。強烈推薦相關從業人員閱讀此書。
——蘇寧雲商雲計算中心技術總監湯泳
在大型網站架構設計方面摸爬滾打多年後,看到《分散式服務框架原理與實踐》如獲至寶,作者條理清晰、由淺入深地解析了分散式服務架構所涉及方方面面的關鍵技術和原理,既有縱向演進介紹,又有橫向競品對比。尤其針對各種場景所提出的設計原則或實踐,都是作者的實戰總結,有些經驗的獲取成本高昂,非常寶貴。本書完全可以直接用於指導分散式服務系統的構建。
——中國移動手機閱讀基地平台首席架構師胡穩
分散式的套用在設計、開發以及部署的各個方面都比較複雜,國內外也沒有優秀的圖書進行系統介紹,於是在這方面,我們不得不一遍遍地踩坑。林鋒有著深厚的技術基礎和豐富的架構經驗,這本集他經驗和心血而成的圖書,包含了分散式系統的方方面面,既有巨觀的理論介紹,也有來自一線的經驗分享,相信它必將成為架構師和開發人員的必備圖書!
——東軟集團資深軟體工程師、InfoQ編輯張衛濱
“微服務”無疑是本年度很熱的技術關鍵字之一!那如何落地微服務呢?我認為首先要實現服務化,而本書恰好提供了一個很好的服務化操作指導。作者首先分析了作為一個分散式服務框架所需具備的能力,包括服務註冊中心、服務調用、服務路由、服務發布/灰度發布等;其次作者分析了服務底層如何有效地進行通信,包括通信框架,序列化/反序列化及協定棧等;再次作者分析了服務如何做到高可靠性及高安全性等重要特性;最後作者也闡述了從服務化如何向微服務演進。
——麻袋理財首席架構師王天青
OpenStack為規範建設的IaaS、以Docker為代表的容器技術、以分散式微服務框架構建的業務平台即將顛覆業務系統整體建設方案,新的系統建設方案將極大提升業務系統的可用性、擴展性和應變能力。微服務架構對於運營商內容型業務的網際網路化轉型意義非凡,系統架構微服務化才能真正支撐好業務轉型的需要。本書將成為幫助大家更好地理解微服務框架關鍵技術的原理和實現的必備書籍。
——咪咕動漫系統支撐部技術總監李鵬
鋒兄在華為一直從事核心代碼的架構設計和開發,屬於實戰型架構師,而且樂於分享。《分散式服務框架原理與實踐》源於他在多年架構設計工作中的實戰經驗,閱讀價值極高!在面向大規模、分散式系統架構中,服務框架是其中的核心和必經之路。祝賀鋒兄新書造福廣大程式猿!
——奇蛙CEEWA運動無人機合伙人、前華為開放平台總架構師馮黎
近些年來,越來越多網站需要同時提供Web、移動App、OpenAPI多種訪問方式,基於分散式服務的業務分治與復用需求越來越強烈,使用分散式服務構建系統已經成為網際網路開發的常用手段。但是分散式服務的關鍵技術有哪些?核心原理是什麼?適合實踐是什麼?本書作者作為分散式框架的開發者根據自己的實踐經驗編寫的這本《分散式服務框架原理與實踐》或可為您解惑。分散式服務框架用到的各種技術也是整個網際網路分散式技術的一個縮影,您也可窺一斑而知全豹,通過本書學習掌握各種分散式開發技巧。
——宅米網CTO、《大型網站技術架構:核心原理與案例分析》作者李智慧
整書由構建分散式服務為基礎講起,逐步深入到分散式服務的保障機制,最後也講解了時下新興分散式設計方案微服務架構。書中內容組織清晰,圖例詳實,非常便於理解與吸收,是一本不錯的提升分散式服務架構能力的書籍。
——鏈家網架構師呂毅
本書深度闡述了套用和系統架構方面的設計和原理,真實體現了李林鋒豐富的技術架構經驗以及樂於分享的精神。在業務系統越來越講究高可用、高性能、可伸縮擴展、高安全性、自動運維的今天,本書集合了大型企業多年的架構思路,為技術以及產品人員提供了重要的參考依據,從理念上提升了每位讀者的技術水平,非常值得深入閱讀和理解。
——阿里雲PaaS平台產品架構師楊林

目錄

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

相關詞條

熱門詞條

聯絡我們