微服務實戰 (Microservices in Action)

[英]摩根·布魯斯(Morgan Bruce) 保羅·A.佩雷拉(Paulo A. Pereira)

  • 微服務實戰 (Microservices in Action)-preview-1
  • 微服務實戰 (Microservices in Action)-preview-2
微服務實戰 (Microservices in Action)-preview-1

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

商品描述

本書主要介紹如何開發和維護基於微服務的應用。
本書源自作者從日常開發中得到的積累和感悟,
其中給出的案例覆蓋從微服務設計到部署的各個階段,能夠帶給你真實的沉浸式體驗。
通過閱讀本書,你不僅能夠瞭解用微服務搭建高效的持續交付流水線的方法,
還能夠運用Kubernetes、Docker以及Google Container Engine進一步探索書中的示例。

作者簡介

Morgan Bruce , Paulo A. Pereira

都是經驗豐富的開發團隊*導者,他們的主要工作是運用本書中介紹的技術將微服務應用到生產環境中。

目錄大綱

目錄:
第一部分概述
第1章微服務的設計與運行3
1.1什麼是微服務應用4
1.1.1通過分解來實現擴展6
1.1.2核心原則7
1.1.3誰在使用微服務9
1.1.4為什麼微服務是一個明智的選擇10
1.2微服務的挑戰12
1.2.1設計挑戰13
1.2.2運維挑戰15
1.3微服務開發生命週期16
1.3.1微服務設計17
1.3.2微服務部署18
1.3.3服務監控21
1.4有責任感和運維意識的工程師文化22
1.5小結23

第2章SimpleBank公司的微服務24
2.1 SimpleBank公司的業務範圍24
2.2微服務是否是正確的選擇25
2.2.1金融軟件的風險和惰性26
2.2.2減少阻力和持續交付價值27
2.3開發新功能27
2.3.1通過領域建模識別微服務28
2.3.2服務協作30
2.3.3服務編排32
2.4向外界開放服務34
2.5將功能發佈到生產環境中35
2.5.1高質量的自動化部署37
2.5.2可恢復性37
2.5.3透明性38
2.6大規模微服務開發39
2.6.1技術分歧40
2.6.2孤立40
2.7接下來的內容41
2.8小結41

*二部分設計
第3章微服務應用的架構45
3.1整體架構45
3.1.1從單體應用到微服務46
3.1.2架構師的角色47
3.1.3架構準則47
3.1.4微服務應用的4層架構48
3.2微服務平台49
3.3服務層51
3.3.1功能51
3.3.2聚合與多元服務52
3.3.3關鍵路徑和非關鍵路徑53
3.4通信54
3.4.1何時使用同步消息54
3.4.2何時使用異步消息55
3.4.3異步通信模式55
3.4.4服務定位57
3.5服務邊界58
3.5.1 API網關60
3.5.2服務於前端的後端61
3.5.3消費者驅動網關62
3.6客戶端63
3.6.1前端單體63
3.6.2微前端64
3.7小結65

第4章新功能設計66
4.1 SimpleBank的新功能67
4.2按業務能力劃分68
4.2.1能力和領域建模69
4.2.2創建投資策略70
4.2.3內嵌型上下文和服務75
4.2.4挑戰和不足76
4.3按用例劃分77
4.3.1按投資策略下單77
4.3.2動作和存儲82
4.3.3編配與編排83
4.4按易變性劃分84
4.5按技術能力劃分85
4.5.1發送通知85
4.5.2何時使用技術能力86
4.6處理不確定性87
4.6.1從粗粒度服務開始88
4.6.2準備進一步分解88
4.6.3下線和遷移89
4.7組織中的服務所有權91
4.8小結92

第5章微服務的事務與查詢93
5.1分佈式應用的事務一致性94
5.2基於事件的通信96
5.3 Saga 98
5.3.1編排型Saga 100
5.3.2編配型Saga 102
5.3.3交織型Saga 104
5.3.4一致性模式105
5.3.5事件溯源106
5.4分佈式世界中的查詢操作107
5.4.1保存數據副本108
5.4.2查詢和命令分離110
5.4.3 CQRS挑戰112
5.4.4分析和報表114
5.5延伸閱讀114
5.6小結114

第6章設計高可靠服務116
6.1可靠性定義117
6.2哪些會出錯119
6.2.1故障源119
6.2.2連鎖故障122
6.3設計可靠的通信方案125
6.3.1重試126
6.3.2後備方案128
6.3.3超時130
6.3. 4斷路器132
6.3.5異步通信134
6.4 *大限度地提高服務可靠性135
6.4.1負載均衡與服務健康135
6.4.2限流136
6.4.3驗證可靠性和容錯性137
6.5默認安全140
6.5 .1框架140
6.5.2服務網格141
6.6小結142

第7章構建可複用的微服務框架143
7.1微服務底座144
7.2微服務底座的目的146
7.2.1降低風險147
7.2.2快速啟動147
7.3設計服務底座148
7.3.1服務發現149
7.3.2可觀測性153
7.3.3平衡和限流159
7.4探索使用底座實現的特性161
7.5差異性是否是微服務的承諾163
7.6小結164

第三部分部署
第8章微服務部署167
8.1部署的重要性167
8.2微服務生產環境169
8.2.1微服務生產環境的特點169
8.2.2自動化和速度170
8.3部署服務的快捷方式171
8.3.1服務啟動171
8.3.2配置虛擬機172
8.3.3運行多個服務實例173
8.3.4添加負載均衡器175
8.3. 5 *發者學到了什麼177
8.4構建服務工件178
8.4.1工件的組成179
8.4.2不可變性179
8.4.3服務工件的類型180
8.4.4配置184
8.5服務與主機關係模型185
8.5.1單服務主機185
8.5.2單主機多靜態服務185
8.5.3單主機多調度化服務186
8.6不停機部署服務187
8.7小結190

第9章基於容器和調度器的部署191
9.1服務容器化192
9.1.1鏡像使用192
9.1.2構建鏡像194
9.1.3運行容器197
9.1.4鏡像存儲199
9.2集群部署200
9.2 .1 pod的設計與運行201
9.2.2負載均衡204
9.2.3快速揭秘205
9.2.4健康檢查208
9.2.5部署新版本服務210
9.2.6回滾215
9.2.7連接多個服務215
9.3小結216

第10章構建微服務交付流水線217
10.1讓部署變得平淡217
10.2使用Jenkins構建流水線219
10.2.1構建流水線配置220
10.2.2構建鏡像223
10.2.3運行測試224
10.2.4發布工件226
10.2.5部署到預發布環境227
10.2.6預發布環境230
10.2.7部署生產環境230
10.3構建可複用的流水線步驟233
10.4降低部署影響以及實現功能發布的技術235
10.4.1暗發布235
10.4.2功能標記236
10.5小結237

第四部分可觀測性和所有權
第11章構建監控系統241
11.1穩固的監控技術棧241
11.1.1良好的分層監控243
11.1.2黃金標誌244
11.1.3度量指標的類型244
11.1.4實踐建議245
11.2利用Prometheus和Grafana監控SimpleBank 246
11.2.1配置度量指標收集基礎設施247
11.2.2收集基礎設施度量指標——RabbitMQ 253
11.2.3監控下單功能255
11.2.4告警設置257
11.3生成合理的可執行的告警261
11.3.1系統出錯時哪些人需要知悉261
11.3.2症狀,而非原因262
11.4監測整個應用262
11.5小結264

第12章使用日誌和鏈路追踪了解系統行為265
12.1了解服務間的行為265
12.2生成一致的、結構化的、人類可讀的日誌268
12.2.1日誌中的有用信息268
12.2.2結構化和可讀性269
12.3為SimpleBank配置日誌基礎設施271
12.3.1基於ELK和Fluentd的解決方案272
12.3.2配置日誌解決方案274
12.3.3配置應收集哪些日誌276
12.3.4大海撈針279
12.3.5記錄合適的信息281
12.4服務間的跟踪交互281
12.4.1請求關聯:trace和span 282
12.4.2在服務內配置鏈路追踪283
12.5鏈路追踪可視化287
12.6小結291

第13章微服務團隊建設292
13.1建設高效團隊292
13.1.1康威定律294
13.1.2高效團隊原則294
13.2團隊模型296
13.2.1按職能分組296
13.2.2跨職能分組298
13.2.3設置團隊邊界299
13.2.4基礎設施、平台和產品300
13.2.5誰負責值班302
13.2.6知識共享303
13.3微服務團隊的實踐建議304
13.3.1微服務變更的驅動力305
13.3.2架構的角色305
13.3.3同質性與技術靈活性307
13.3.4開源模型307
13.3.5設計評審308
13.3.6動態文檔309
13.3.7回答應用的問題310
13.4延伸閱讀311
13.5小結311
附錄A在Minikube上安裝Jenkins 312