架構探險:從零開始寫分散式服務框架

架構探險:從零開始寫分散式服務框架

《架構探險:從零開始寫分散式服務框架》 一書作者李業兵,電子工業出版社2017年7月出版

內容提要

《架構探險:從零開始寫分散式服務框架》的初衷是希望把分散式服務框架的實現細節及分散式服務框架周邊的知識點梳理清楚,為那些對分散式服務框架感興趣的人打開一扇窗戶,降低獲取相關知識的門檻。所以《架構探險:從零開始寫分散式服務框架》圍繞實現分散式服務框架所需的知識點,進行了比較詳盡細緻的介紹。包括常見的RPC框架、常見的序列化/反序列化方案及選型、分散式服務框架服務的發布引入實現細節、軟負載實現、底層通信方案實現、服務註冊與發現實現、服務治理常見的功能等。通過對這些知識點的逐步講解,層層深入,最終完成一個可運行的分散式服務框架。

通過《架構探險:從零開始寫分散式服務框架》,讀者可以完整地了解實現一個分散式服務框架的所有技術細節和實現原理,希望對想了解分散式服務框架實現細節的讀者有所啟發和幫助。

目錄

第1章 常用的RPC框架 1

1.1 RPC框架原理 1

1.2 RMI介紹 2

1.2.1 原生RMI代碼示例 3

1.2.2 RMI穿透防火牆 5

1.3 CXF/Axis2介紹 7

1.3.1 CXF介紹 7

1.3.2 Axis2介紹 14

1.4 Thrift介紹 21

1.4.1 Thrift工作原理介紹 23

1.4.2 Thrift IDL語法說明 26

1.4.3 基於Apache Thrift的Java版完整案例 28

1.4.4 基於Java註解的簡化實現 36

1.5 gRPC介紹 42

1.5.1 protobuf3語法介紹 43

1.5.2 gRPC使用示例 45

1.6 HTTP Client介紹 53

1.6.1 構建HttpClient對象 54

1.6.2 構建URI對象 55

1.6.3 構建請求對象(HttpGet、HttpPost) 56

1.6.4 HttpClient發起調用及獲取調用返回結果 56

1.7 實現自己的RPC框架 61

1.8 RPC框架與分散式服務框架的區別 68

1.9 本章小結 68

第2章 分散式服務框架總體架構與功能 69

2.1 面向服務的體系架構(SOA) 69

2.1.1 面向服務架構範式 69

2.1.2 服務拆分原則 71

2.2 分散式服務框架現實需求 72

2.3 分散式服務框架總體架構及所需的技術概述 72

2.4 本章小結 74

第3章 分散式服務框架序列化與反序列化實現 75

3.1 序列化原理及常用的序列化介紹 75

3.2 Java默認的序列化 77

3.3 XML序列化框架介紹 80

3.4 JSON序列化框架介紹 82

3.5 Hessian序列化框架介紹 87

3.6 protobuf序列化框架介紹 88

3.7 protostuff序列化框架介紹 93

3.8 Thrift序列化框架介紹 98

3.9 Avro序列化框架介紹 100

3.9.1 Avro介紹 100

3.9.2 Avro IDL語言介紹 101

3.9.3 Schema定義介紹 103

3.9.4 Maven配置及使用IDL與Schema自動生成代碼 103

3.9.5 Avro序列化/反序列化實現 105

3.10 JBoss Marshalling序列化框架介紹 110

3.11 序列化框架的選型 112

3.12 實現自己的序列化工具引擎 113

3.13 本章小結 118

第4章 實現分散式服務框架服務的發布與引入 119

4.1 Spring Framework框架概述 119

4.1.1 Spring Framework介紹 119

4.1.2 Spring Framework周邊生態項目介紹 121

4.2 FactoryBean的秘密 122

4.2.1 FactoryBean的作用及使用場景 123

4.2.2 FactoryBean實現原理及示例說明 124

4.3 Spring框架對於已有RPC框架集成的支持 127

4.3.1 Spring支持集成RPC框架介紹 127

4.3.2 基於RmiProxyFactoryBean 實現RMI與Spring的集成 128

4.3.3 基於HttpInvokerProxyFactoryBean實現HTTP Invoker與Spring的集成 131

4.3.4 基於HessianProxyFactoryBean實現Hessian與Spring的集成 133

4.4 實現自定義服務框架與Spring的集成 136

4.4.1 實現遠程服務的發布 136

4.4.2 實現遠程服務的引入 144

4.5 在Spring中定製自己的XML標籤 150

4.6 本章小結 158

第5章 分散式服務框架註冊中心 159

5.1 服務註冊中心介紹 159

5.2 ZooKeeper實現服務的註冊中心原理 161

5.2.1 ZooKeeper介紹 161

5.2.2 部署ZooKeeper 161

5.2.3 ZkClient使用介紹 164

5.2.4 ZooKeeper實現服務註冊中心 173

5.3 集成ZooKeeper實現自己的服務註冊與發現 175

5.3.1 服務註冊中心服務提供方 175

5.3.2 服務註冊中心服務消費方 176

5.3.3 服務註冊中心實現 178

5.4 本章小結 189

第6章 分散式服務框架底層通信實現 190

6.1 Java I/O模型及I/O類庫的進化 190

6.1.1 Linux下實現的I/O模型 190

6.1.2 Java語言實現的I/O模型 194

6.1.3 Java Classic I/O(Blocking I/O)介紹 194

6.1.4 Java Non-blocking I/O(NIO)介紹 211

6.1.5 NIO2及Asynchronous I/O介紹 233

6.2 Netty使用介紹 255

6.2.1 Netty開發入門 256

6.2.2 Netty粘包/半包問題解決 265

6.3 使用Netty構建服務框架底層通信 320

6.3.1 構建分散式服務框架Netty服務端 320

6.3.2 構建分散式服務框架服務調用端Netty客戶端 330

6.4 本章小結 347

第7章 分散式服務框架軟負載實現 348

7.1 軟負載的實現原理 348

7.2 負載均衡常用算法 349

7.2.1 軟負載隨機算法實現 349

7.2.2 軟負載加權隨機算法實現 350

7.2.3 軟負載輪詢算法實現 351

7.2.4 軟負載加權輪詢算法實現 352

7.2.5 軟負載源地址hash算法實現 354

7.3 實現自己的軟負載機制 355

7.4 軟負載在分散式服務框架中的套用 357

7.5 本章小結 361

第8章 分散式服務框架服務治理 362

8.1 服務治理介紹 362

8.2 服務治理的簡單實現 364

8.2.1 服務分組路由實現 364

8.2.2 簡單服務依賴關係分析實現 374

8.2.3 服務調用鏈路跟蹤實現原理 380

8.3 本章小結 380

附錄A 如何配置運行本書完成的分散式服務框架 381

熱門詞條

聯絡我們