分佈式系統架構與開發:技術原理與面試題解析

鄭天民

  • 出版商: 機械工業
  • 出版日期: 2022-11-01
  • 售價: $594
  • 貴賓價: 9.5$564
  • 語言: 簡體中文
  • 頁數: 362
  • 裝訂: 平裝
  • ISBN: 7111712684
  • ISBN-13: 9787111712688
  • 相關分類: 面試技巧
  • 立即出貨

買這商品的人也買了...

商品描述

本書能幫助讀者深入理解和掌握分佈式系統架構與開發,
以及快速了解各互聯網大廠在分佈式系統方面的高頻面試題及其解法。
作者有超過15年的架構與研發經驗,在分佈式系統方面,積累了大量的項目經驗和麵試經驗。
分佈式系統涉及的技術多且複雜,作者根據自己的經驗,化繁為簡,將從事分佈式系統架構與開發的技術與能力,
全部總結在了本書中,包含但不限於以下內容:
(1)拋開具體的框架,詳細講解分佈式系統的全棧技術組件的實現原理、應用方式、設計思想,
具體包括網絡通信、遠程調用、負載均衡、服務容錯、服務降級、註冊中心、
服務網關、配置中心、消息通信、動態代理、應用緩存、資源管理、框架集成和架構模式。
這些組件在各種分佈式系統框架中是通用的,掌握本書內容後,讀者在面對各種具體的框架時可以觸類旁通。
(2)深入剖析Dubbo、Spring Cloud、
MyBatis等主流開源框架的源代碼結構,分析它們的底層實現原理,提煉分佈式系統開發精髓。
(3)獨創一套剖析框架源代碼結構的系統方法,分別基於組件設計原則、架構演進過程、
核心執行流程、基礎架構組成和可擴展性設計這5大主題展開講解,指導讀者高效學習其他開源框架。
(4)作者結合多年的面試和培訓經驗,針對每個技術組件梳理了一組面試題。
這些面試題大多是阿里巴巴、京東、網易等大廠的真題,
作者結合自己的理解對考點進行了解析,並將框架源碼與面試題融合貫通。
同時對於技術人員如何實現自我成長和高效應對技術面試,給出了系統性的方法論。

目錄大綱

前言
第1章認識分佈式系統1
1.1 分佈式系統概述1
1.1.1 從單塊系統到分佈式系統1
1.1.2 分佈式系統的基本特性3
1.1.3 分佈式系統和微服務架構4
1.2 分佈式系統的核心設計要求6
1.2.1 性能6
1.2.2 可用性6
1.2.3 可擴展性6
1.2.4 服務治理7
1.3 分佈式系統開發技術組件7
1.3.1 遠程過程調用組件8
1.3.2 微服務構建組件10
1.3.3 通用技術組件13
1.4 分佈式系統的主流開發套件15
1.4.1 Spring Boot15
1.4.2 Spring Cloud18
1.4.3 Dubbo18
1.4.4 MyBatis19
1.5 分佈式系統面試題解析19
1.6 本章小結20
第2章剖析框架代碼結構的系統方法22
2.1 基於組件設計原則剖析代碼結構23
2.1.1 為什麼代碼結構要這麼設計23
2.1.2 組件設計原則與量化標準24
2.1.3 組件設計原則與代碼結構:
Dubbo與MyBatis28
2.1.4 循環依賴及其消除方法31
2.2 基於架構演進過程剖析代碼結構39
2.2.1 如何從易到難對框架進行
逐步拆解39
2.2.2 Dubbo的架構演進過程40
2.3 基於主流程剖析代碼結構46
2.3.1 如何抓住主流程並對框架
進行分層剖析46
2.3.2 MyBatis中的主流程46
2.4 基於基礎架構組成剖析代碼結構54
2.4.1 如何從基礎架構擴展到
具體實現框架54
2.4.2 RPC基礎架構54
2.4.3 從RPC基礎架構擴展到
Dubbo框架61
2.5 基於可擴展性設計剖析代碼結構65
2.5.1 如何在框架中預留可擴展點65
2.5.2 常見的可擴展性設計方法66
2.5.3 MyBatis TypeHandler機制68
2.6 剖析框架代碼結構面試題解析72
2.7 本章小結73
第3章網絡通信74
3.1 網絡通信與Dubbo框架74
3.1.1 網絡通信基本概念74
3.1.2 Dubbo中的網絡通信組件77
3.2 Dubbo服務器端通信原理77
3.2.1 服務器端Exchange77
3.2.2 服務器端Transport82
3.2.3 服務器端Serialize84
3.3 Dubbo客戶端通信原理87
3.4 網絡通信面試題解析89
3.5 本章小結90
第4章遠程調用91
4.1 服務發布和引用92
4.1.1 如何發布遠程服務92
4.1.2 如何引用遠程服務93
4.2 Dubbo中的遠程調用94
4.2.1 Dubbo服務發布流程94
4.2.2 Dubbo服務引用流程101
4.3 遠程調用面試題解析109
4.4 本章小結110
第5章負載均衡112
5.1 負載均衡基本原理112
5.1.1 負載均衡的類型113
5.1.2 負載均衡算法和策略114
5.2 Dubbo中的負載均衡116
5.2.1 Dubbo負載均衡整體結構116
5.2.2 Dubbo負載均衡策略118
5.3 Spring Cloud中的負載均衡120
5.3.1 Netflix Ribbon核心機制120
5.3.2 Netflix Ribbon負載均衡策略122
5.3.3 Spring Cloud Netflix Ribbon
實現原理124
5.4 負載均衡面試題解析127
5.5 本章小結128
第6章服務容錯129
6.1 服務容錯設計思想129
6.1.1 服務消費者容錯129
6.1.2 服務容錯策略130
6.2 Dubbo中的集群容錯132
6.2.1 Dubbo中的集群133
6.2.2 Dubbo中的容錯機制134
6.3 Spring Cloud中的服務熔斷136
6.3.1 Spring Cloud Circuit Breaker137
6.3.2 Hystrix熔斷機制139
6.4 服務容錯面試題解析147
6.5 本章小結148
第7章服務降級149
7.1 服務降級策略149
7.1.1 服務分級149
7.1.2 服務回退150
7.2 Dubbo中的服務降級151
7.2.1 Dubbo中的Mock機制151
7.2.2 MockInvoker和Mock-
ClusterInvoker152
7.3 Spring Cloud中的服務降級154
7.3.1 Spring Cloud中的回退機制154
7.3.2 基於攔截器實現回退156
7.4 服務降級面試題解析158
7.5 本章小結159
第8章註冊中心160
8.1 服務註冊和發現160
8.1.1 註冊中心模型160
8.1.2 註冊中心實現工具163
8.2 Dubbo中的註冊中心163
8.2.1 Dubbo註冊中心模型163
8.2.2 ZooKeeper基本原理與
操作方式164
8.2.3 ZooKeeper註冊中心實現過程166
8.3 Spring Cloud中的註冊中心172
8.3.1 Eureka註冊中心模型172
8.3.2 Eureka服務器端基本原理173
8.3.3 Eureka客戶端基本原理178
8.4 註冊中心面試題解析184
8.5 本章小結185
第9章服務網關186
9.1 服務網關的核心概念187
9.1.1 服務網關的作用187
9.1.2 服務網關的結構和功能188
9.2 Spring Cloud Gateway工作原理188
9.2.1 響應式編程概述189
9.2.2 Spring Cloud Gateway架構192
9.2.3 路由和過濾器194
9.3 服務網關面試題解析204
9.4 本章小結205
第10章配置中心206
10.1 配置中心基本模型207
10.1.1 配置中心與微服務架構207
10.1.2 配置中心實現工具208
10.2 Spring Cloud Config工作機制209
10.2.1 Spring Cloud Config Server
工作機制209
10.2.2 Spring Cloud Config Client
工作機制213
10.3 Spring Cloud Config配置信息更新218
10.3.1 Spring Cloud Config客戶端
更新策略218
10.3.2 配置信息熱更新機制219
10.4 配置中心面試題解析223
10.5 本章小結225
第11章消息通信226
11.1 事件驅動和消息通信226
11.1.1 事件驅動架構的需求226
11.1.2 消息通信機制和消息中間件228
11.1.3 基於消息通信機制的系統
集成方法229
11.2 從Spring Messaging到
Spring Cloud Stream230
11.2.1 Spring Messaging和
Spring Integration 231
11.2.2 Spring Cloud Stream中的
Spring Integration233
11.2.3 Spring Cloud Stream基本架構234
11.3 Spring Cloud Stream整合
消息中間件235
11.3.1 Spring Cloud Stream
發送和接收消息235
11.3.2 RabbitMQ發送和接收消息242
11.4 消息通信面試題解析245
11.5 本章小結246
第12章動態代理247
12.1 代理模式和類型247
12.1.1 靜態代理機制248
12.1.2 動態代理機制249
12.2 Dubbo遠程訪問中的代理機制252
12.2.1 ProxyFactory252
12.2.2 JdkProxyFactory253
12.3 MyBatis數據訪問中的代理機制254
12.3.1 Mapper和動態代理254
12.3.2 延遲加載和動態代理258
12.4 動態代理面試題解析260
12.5 本章小結261
第13章應用緩存263
13.1 應用緩存的設計策略263
13.1.1 經典緩存分層架構263
13.1.2 應用緩存的分級模式264
13.2 MyBatis一級緩存264
13.2.1 Cache264
13.2.2 PerpetualCache265
13.2.3 一級緩存與BaseExecutor268
13.3 MyBatis二級緩存271
13.3.1 CacheBuilder271
13.3.2 二級緩存與CachingExecutor274
13.4 應用緩存面試題解析277
13.5 本章小結278
第14章資源管理279
14.1 資源管理和資源池279
14.1.1 資源池模型279
14.1.2 資源池實現示例280
14.2 MyBatis中的數據庫連接池282
14.2.1 連接池的工作流程和
核心要素283
14.2.2 Connection對象獲取過程284
14.2.3 PooledDataSource285
14.2.4 UnpooledDataSource289
14.3 資源管理面試題解析290
14.4 本章小結291
第15章框架集成292
15.1 Spring中的啟動擴展點292
15.1.1 InitializingBean和
DisposableBean292
15.1.2 BeanPostProcessor295
15.1.3 Aware296
15.1.4 ApplicationListener299
15.2 Spring自定義標籤體系305
15.2.1 標籤擴展時機305
15.2.2 標籤擴展的開發流程305
15.3 Spring Boot自動配置310
15.4 Dubbo的框架集成312
15.4.1 Dubbo啟動機制313
15.4.2 Dubbo自定義配置標籤319
15.5 MyBatis的框架集成320
15.5.1 MyBatis-Spring啟動過程320
15.5.2 MyBatis-Spring-Boot-Starter326
15.6 框架集成面試題解析329
15.7 本章小結331
第16章架構模式332
16.1 架構模式與應用332
16.1.1 模式的概念和分類332
16.1.2 基於架構模式把握框架
設計思想333
16.2 微內核模式及其應用334
16.2.1 微內核模式和插件化系統334
16.2.2 微內核模式的基本實現:
SPI機制336
16.2.3 微內核模式在Dubbo
中的應用339
16.2.4 Dubbo中的擴展點344
16.3 管道-過濾器模式及其應用346
16.3.1 管道-過濾器模式簡介346
16.3.2 管道-過濾器模式在
Dubbo中的應用351
16.3.3 管道-過濾器模式在MyBatis
中的應用354
16.4 架構模式面試題解析360
16.5 本章小結362