雲原生模式 Cloud Native Patterns

Cornelia Davis 張若飛,宋凈超

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

商品描述

擁抱“雲”,更多指的是如何設計你的應用程序,而不是你在哪裡部署它們。
本書是一本架構指南,指導你如何讓應用程序在動態的、分佈式的、虛擬的雲世界中茁壯成長。
本書介紹了雲原生應用程序的多種思維模型,以及支持其構建的模式、實踐和工具,
同時提供了一些實際案例和專家建議,幫助你更好地開發和使用應用程序、數據、服務、路由等。
本書分為兩部分。
第1 部分定義了雲原生的上下文環境,並展示了軟件部署環境的特點。
第2 部分深入探討了雲原生模式,包括請求/ 響應、事件驅動、斷路器等。
無論你是否有云原生的開發經驗,通過本書提供的眾多模式,一定可以更好地理解和掌握雲原生開發。

目錄大綱

1部分雲原生上下文
1章什麼是“雲原生”................................3
1.1 現代應用程序的需求.............................7
1.1.1 零停機時間...................................7
1.1.2 縮短反饋週期.................................8
1.1.3 移動端和多設備支持...........................8
1.1.4 互聯設備(物聯網)...........................9
1.1.5 數據驅動.....................................9
1.2 雲原生軟件簡介................................10
1.2.1 定義“雲原生”..............................10
1.2.2 雲原生軟件的思維模..........................12
1.2.3 雲原生軟件實戰..............................17
1.3 雲原生與世界和平..............................21
1.3.1 雲和雲原生................................. 22
1.3.2 什麼不是雲原生..............................23
1.3.3 雲原生的價值................................24
小結..............................................26

2章在生產環境中運行雲原生應用程序.................27
2.1 面臨的困難....................................28
2.1.1 碎片化的變化................................30
2.1.2 有風險的部署................................31
2.1.3 認為變化是例外..............................35
2.1.4 生產環境的不穩定性..........................35
2.2 解決辦法......................... ............36
2.2.1 持續交付....................................37
2.2.2 可重複性....................................41
2.2.3 安全部署....................................46
2.2.4 變化是一定的................................49
小結..............................................52

3章云原生軟件平台.................................53
3.1 雲(原生)平台的發展..........................54
3.1.1 從雲計算開始................................54
3.1.2 雲原生的“撥號音” .........................56
3.2 雲原生平台的核心原則..........................59
3.2.1 先聊聊容器................................. 60
3.2.2 支持“不斷變化” ...........................61
3.2.3 支持“高度分佈式” .........................64
3.3 人員分工......................... ............68
3.4 雲原生平台的其他功能..........................70
3.4.1 平台支持整個軟件開發生命週期................70
3.4.2 安全性、變更控制和合規性(管控功能) .......73
3.4.3 控制進入容器的東西..........................75
3.4.4 升級與安全漏洞修補..........................77
3.4.5 變更控制....................................79
小結..............................................81

2部分雲原生模式
4章事件驅動微服務:不只是請求/響應................85
4.1 我們(通常)學習的是命令式編程................86
4.2 重新介紹事件驅動的計算........................88
4.3 我的全球食譜..................................89
4.3.1 請求/ 響應................................. 90
4.3.2 事件驅動....................................96
4.4 命令查詢職責分離模式..........................106
4.5 不同的風格,相同的挑戰........................108
小結..............................................110

5章應用程序冗餘:水平伸縮和無狀態.................111
5.1 雲原生應用程序會部署許多實例..................113
5.2 雲環境中的有狀態服務..........................114
5.2.1 解耦單體程序並綁定到數據庫..................115
5.2.2 錯誤處理會話狀態............................119
5.3 HTTP會話和黏性會話............................133
5.4 有狀態服務和無狀態應用程序....................136
5.4.1 有狀態服務是特殊的服務......................136
5.4.2 讓應用程序變得無狀態........................138
小結..............................................143

6章應用程序配置:不只是環境變量...................144
6.1 為什麼要討論配置..............................145
6.1.1 動態伸縮— 增加和減少應用程序實例的數量.....146
6.1.2 基礎設施變化會導致配置變化..................146
6.1.3 零停機時間更新應用程序配置..................148
6.2 應用程序的配置層..............................148
6.3 注入系統/環境值.............................. 153
6.3.1 實際案例:使用環境變量進行配置..............153
6.4 注入應用程序配置..............................162
6.4.1 配置服務器簡介..............................163
6.4.2 安全方面的額外需求..........................171
6.4.3 實際案例:使用配置服務器的應用程序配........171
小結..............................................174

7章應用程序生命週期:考慮不斷的變化...............175
7.1 運維同理心....................................177
7.2 單實例應用程序生命週期和多實例應用程序生命週..178
7.2.1 藍/ 綠升級..................................182
7.2.2 滾動升級....................................183
7.2.3 並行部署....................................184
7.3 協調多個不同的應用程序生命週期................187
7.4 實際案例:密碼輪換和應用程序生命週期..........191
7.5 處理臨時運行時環境............................200
7.6 應用程序生命週期狀態的可見性..................202
7.6.1 實際案例:健康端點和探測....................207
7.7 無服務器架構..................................210
小結..............................................212

8章如何訪問應用程序:服務、路由和服務發現.........214
8.1 服務抽象......................................217
8.1.1 服務示例:用Google 進行搜索.................218
8.1.2 服務示例:我們的博客聚合器..................220
8.2 動態路由......................................221
8.2.1 服務端負載均衡..............................221
8.2.2 客戶端負載均衡..............................222
8.2.3 路由刷新....................................223
8.3 服務發現......................................226
8.3.1 Web 的服務發現..............................229
8.3.2 服務發現和客戶端負載均衡....................230
8.3.3 Kubernetes 中的服務發現.....................232
8.3.4 實際案例:使用服務發現......................234
小結..............................................237

9章交互冗餘:重試和其他控制循環...................238
9.1 請求重試......................................240
9.1.1 基本的請求重試..............................240
9.1.2 實際案例:簡單的重試........................241
9.1.3 重試:可能出了什麼問題......................246
9.1.4 創建一個重試風暴............................247
9.1.5 實際案例:創建一個重試風暴..................248
9.1.6 避免重試風暴:友好的客戶端..................259
9.1.7 實際案例:成為一個更友好的客................259
9.1.8 什麼時候不需要重試..........................265
9.2 回邏輯........................................266
9.2.1 實際案例:實現回邏輯........................266
9.3 控制循環......................................272
9.3.1 了解控制循環的類型..........................272
9.3.2 如何控制控制循環............................273
小結..............................................275

10章前沿服務:斷路器和API網關.....................277
10.1 斷路器.......................................279
10.1.1 軟件中的斷路器.............................279
10.1.2 實現一個斷路器.............................282
10.2 API網關......................................294
10.2.1 雲原生軟件中的API 網關.....................296
10.2.2 API 網關拓撲...............................297
10.3 服務網格.....................................299
10.3.1 挎鬥.......................................299
10.3.2 控制平面...................................302
小結..............................................304

11章故障排除:如同大海撈針........................305
11.1 應用程序日誌.................................306
11.2 應用程序度量指標.............................310
11.2.1 從雲原生應用程序中獲取指標.................311
11.2.2 由雲原生應用程序推送指標...................314
11.3 分佈式跟踪...................................317
11.3.1 跟踪器的輸出...............................320
11.3.2 通過Zipkin 組合跟踪軌跡....................323
11.3.3 實現細節...................................328
小結..............................................329

12章云原生數據:打破數據單體......................331
12.1 每個微服務都需要一個緩存.....................334
12.2 從請求/響應到事件驅動........................337
12.3 事件日誌.....................................339
12.3.1 實際案例:實現一個事件驅動的微服務.........341
12.3.2 主題和隊列的新特點.........................354
12.3.3 事件載荷...................................358
12.3.4 冪等性.....................................360
12.4 事件溯源.....................................361
12.4.1 到目前為止的旅程...........................361
12.4.2 真實來源...................................363
12.4.3 實際案例:實現事件溯源.....................365
12.5 我們只是介紹了一些皮毛.......................368
小結.................... ..............