Spring微服務架構設計 第2版
內容描述
隨著Spring Boot和Spring Cloud的推出,Spring框架變得更加強大,
支持快速開發和高效運維,非常適合實現微服務架構,
能夠滿足微服務的並發、精細監控和可靠易用等需求。
本書提供了實現大型響應式微服務的實用方法和指導原則,並通過示例全面講解如何構建微服務。
主要內容包括:微服務架構介紹以及構建微服務時面臨的挑戰,
如何用Spring Boot和Spring Cloud開發微服務系統,微服務能力模型,
如何演進微服務,微服務的日誌管理和監控,如何用Docker 、
Mesos和Marathon管理互聯網級微服務架構,等等。
目錄大綱
目錄:
版權聲明
第1章微服務揭秘1
1.1微服務的演進1
1.1.1微服務演進的催化劑——業務需求1
1.1.2微服務演進的催化劑——技術演進3
1.1.3架構演進勢在必行4
1.2什麼是微服務5
1.3微服務蜂巢7
1.4微服務架構的設計原則8
1.4.1每個服務承擔單一責任8
1.4.2微服務是自治的9
1.5微服務的特性10
1.5.1服務是一等公民10
1.5.2微服務是輕量級的11
1.5.3微服務的混合架構11
1.5.4微服務環境中的自動化12
1.5.5微服務的生態支持系統13
1.5.6微服務是動態分佈式的13
1.5.7抗脆弱、快速失敗和自我癒合15
1.6微服務的實例15
1.6.1一個酒店門戶網站的例子15
1.6.2一個旅行社門戶網站的例子18
1.7微服務架構的優勢19
1.7.1支持混合架構19
1.7.2為試驗和創新賦能20
1.7.3彈性伸縮和選擇性擴容21
1.7 .4服務可替換23
1.7.5為構建有機系統賦能23
1.7.6有助於管理技術債24
1.7.7允許不同版本並存25
1.7.8支持構建自組織系統26
1.7.9支持事件驅動架構27
1.7.10為DevOps賦能28
1.8小結28
第2章相關架構風格和用例29
2.1 SOA 29
2.1.1面向服務的集成30
2.1. 2遺留系統現代化31
2.1.3面向服務的應用31
2.1.4用SOA遷移單體應用32
2.2十二要素應用32
2.2.1單一代碼庫33
2.2.2依賴捆綁33
2.2.3配置外部化34
2.2 .4支撐服務可尋址34
2.2.5構建、發布和運行時的隔離35
2.2.6無狀態、不共享進程36
2.2.7通過端口綁定暴露服務36
2.2.8以水平擴展實現高並發36
2.2.9以小的開銷實現可處置性37
2.2.10開發環境和生產環境的對等性37
2.2.11日誌信息外部化37
2.2.12打包後台管理進程38
2.3無服務器計算38
2.4 Lambda架構39
2.5 DevOps、雲計算和容器40
2.5.1 DevOps是實現微服務架構的實踐和流程41
2.5.2以雲計算和容器作為微服務的自助式基礎設施41
2.6響應式微服務42
2.7微服務用例45
2.8微服務先行者的共同點46
2.9微服務框架48
2.10小結49
第3章用Spring Boot構建微服務50
3.1搭建開發環境50
3.2用Spring Boot構建RESTful微服務51
3.3 Spring Boot入門51
3.4開發Spring Boot微服務52
3.5開發第一個Spring Boot微服務53
3.6啟用HATEOAS的Spring Boot微服務60
3.7響應式Spring Boot微服務64
3.7.1使用Spring WebFlux實現響應式微服務64
3.7.2用Spring Boot和RabbitMQ實現響應式微服務68
3.8實現微服務安全70
3.8.1用基本安全策略保護微服務70
3.8.2用OAuth2保護微服務71
3.9為微服務交互啟用跨域訪問73
3.10使用Spring Boot Actuator實現微服務instrumentation 74
3.10.1利用JConsole監控應用76
3.10.2利用ssh監控應用76
3.10.3添加自定義健康檢查模塊77
3.10.4自定義指標78
3.11微服務文檔化79
3.12綜合實例:開發客戶註冊微服務80
3.13小結89
第4章應用微服務概念90
4.1微服務設計指南90
4.1.1確定微服務的邊界90
4.1.2設計微服務通信方式94
4.1.3微服務編排98
4.1.4每個微服務包含多少個端口——一個還是多個102
4.1.5每個虛擬機運行多少個微服務——一個還是多個102
4.1.6規則引擎——共享還是嵌入103
4.1 .7 BPM和工作流的作用104
4.1.8微服務可以共享數據庫嗎106
4.1.9微服務可以無頭嗎108
4.1.10確定事務邊界108
4.1.11服務端口設計的考量點110
4.1.12處理共享類庫111
4.1.13微服務中的UI 112
4.1.14微服務中使用API網關114
4.1.15在微服務架構中使用ESB和iPaaS 115
4.1.16服務版本化的考慮116
4.1.17跨域設計118
4.1.18處理共享的引用數據118
4.1. 19微服務和批量操作119
4.2小結121
第5章微服務能力模型122
5.1微服務能力模型簡介122
5.2核心能力123
5.2.1服務監聽器和類庫124
5.2.2存儲能力124
5.2.3服務實現124
5.2.4服務端口124
5.3基礎設施能力125
5.3.1雲計算125
5.3.2容器運行時125
5.3.3容器編排126
5.4支撐能力126
5.4.1服務網關126
5.4.2軟件定義的負載均衡126
5.4.3集中式日誌管理127
5.4.4服務發現127
5.4.5安全服務127
5.4.6服務配置128
5.4.7運維監控128
5.4.8依賴管理128
5.4.9數據湖129
5.4.10可靠的消息機制130
5.5流程和治理能力130
5.5.1 DevOps 130
5.5.2自動化工具130
5.5.3容器註冊表131
5.5.4微服務文檔化131
5.5.5參考架構和類庫132
5.6微服務成熟度模型133
5.6.1第0級——傳統133
5.6.2第1級——初級134
5.6.3第2級——中級134
5.6.4第3級—— 級134
5.7微服務採用的入口135
5.8小結136
第6章微服務演進案例研究137
6.1理解PSS應用137
6.1.1業務流程視圖137
6.1.2功能視圖138
6.1.3架構視圖139
6.1.4設計視圖139
6.1.5實現視圖140
6.1.6部署視圖141
6.2單體之死142
6.2.1痛點142
6.2.2應急修復142
6.2.3复盤143
6.3訴諸微服務——有計劃地遷移146
6.3.1業務用例147
6.3.2遷移方法148
6.3.3確定微服務邊界149
6.3.4分析服務依賴關係149
6.3.5微服務遷移的優先級157
6.3.6遷移過程中的數據同步158
6.3.7管理引用數據160
6.3.8 UI和Web應用161
6.3.9測試策略163
6.3.10構建生態系統能力164
6.3.11只遷移必要的模塊164
6.3. 12微服務的內部層次結構165
6.3.13微服務編排166
6.3.14與其他系統的集成166
6.3.15遷移共享類庫167
6.3.16處理異常167
6.4目標實現169
6.4.1項目實現170
6.4. 2項目運行和測試171
6.5後續工作174
6.6小結175
第7章用Spring Cloud組件擴展微服務176
7.1什麼是Spring Cloud 176
7.2 Spring Cloud的版本177
7.3搭建BrownField航空公司PSS系統的項目環境177
7.4 Spring Cloud Config 178
7.4.1用配置服務器構建微服務180
7.4.2搭建配置服務器181
7.4.3理解配置服務器URL 183
7.4.4處理配置變更187
7.4. 5用Spring Cloud總線推送配置變更187
7.4.6搭建配置服務器的高可用集群188
7.4.7監控配置服務器的健康狀態189
7.4.8用配置服務器管理配置文件189
7.4.9完成修改以使用配置服務器189
7.5將Eureka用於服務註冊和發現190
7.5.1理解動態服務註冊和發現190
7.5.2理解Eureka 191
7.5.3搭建Eureka服務器192
7.5.4 Eureka的高可用性196
7.6用Zuul代理作為API網關198
7.6 .1搭建Zuul 199
7.6.2 Zuul的高可用性203
7.7響應式微服務流205
7.8用Spring Cloud Security保護微服務208
7.9總結BrownField航空公司的PSS應用架構209
7.10小結211
第8章微服務的日誌管理和監控212
8.1日誌管理的挑戰212
8.2集中式日誌管理方案213
8.3日誌管理方案的選取215
8.3.1雲服務215
8.3.2現成的方案215
8.3.3集成流的組件215
8.3.4自定義日誌管理方案的實現216
8.3.5用Spring Cloud Sleuth實現分佈式跟踪220
8.4監控微服務222
8.4.1微服務監控的挑戰222
8.4.2監控工具224
8.4 .3監控微服務依賴225
8.4.4用Spring Cloud Hystrix實現微服務容錯226
8.4.5用Turbine聚合Hystrix流229
8.5使用數據湖做數據分析232
8.6小結233
第9章用Docker容器化微服務234
9.1 BrownField公司PSS微服務的不足之處234
9.2什麼是容器235
9.3虛擬機和容器的區別236
9.4容器的優勢237
9.5微服務和容器238
9.6 Docker簡介239
9.7將微服務部署到Docker中242
9.8在Docker上運行RabbitMQ 246
9.9使用Docker註冊表246
9.9.1設置Docker Hub 247
9.9.2將微服務發佈到Docker Hub 247
9.10微服務上雲247
9.11在EC2上運行BrownFiled公司的微服務248
9.12容器化的未來249
9.13小結249
第10章用Mesos和Marathon擴展容器化的微服務250
10.1微服務擴容250
10.1.1理解自動擴容251
10.1.2缺失的部分252
10.2容器編排252
10.2.1為什麼容器編排很重要253
10.2.2容器編排是什麼253
10.2.3容器編排和微服務的關係255
10.2.4容器編排和虛擬化的關係256
10.2.5容器編排方案256
10.3用Mesos和Marathon實現容器編排259
10.4用DCOS實現Mesos和Marathon 262
10.5為BrownField公司的微服務實現Mesos和Marathon 263
10.5.1安裝Mesos、Marathon及相關組件263
10.5.2運行Mesos和Marathon 264
10.6準備部署BrownField公司的PSS微服務266
10.7小結269
第11章微服務開發生命週期270
11.1微服務開發的實踐要點270
11.1.1理解業務動機和價值270
11.1.2從項目開發到產品開發的觀念轉變270
11.1.3選擇正確的開發理念271
11.1.4使用小可行產品的概念271
11.1.5克服遺留熱點271
11.1.6建立自組織的團隊272
11.1.7構建自服務雲274
11.1.8構建一套微服務生態系統274
11.1.9以DevOps實踐貫穿微服務開發的生命週期274
11.1.10價值驅動計劃275
11.1.11持續監控和反饋275
11.2自動化開發週期276
11.2.1開發277
11.2.2集成278
11.2.3測試279
11.2.4部署282
11.2.5監控和反饋282
11.2.6配置管理282
11.2.7微服務開發治理、參考架構和類庫283
11.3小結283
作者介紹
Rajesh RV
阿聯酋航空公司&席架構師,在眾多技術領域擁有豐富的實踐經驗,
參與開發過許多大規模的重要項目,
由他主導架構設計的Open Travel Platform在2011年贏得了紅帽創新大獎。
他還是BEA認證WebLogic管理員、Sun認證Java企業架構師、
Open Group認證TOGAF實踐者和IASA全球CITA-A認證架構專家。