掌握分佈式跟蹤:微服務和復雜系統性能分析
馮文輝
- 出版商: 電子工業
- 出版日期: 2022-03-01
- 售價: $864
- 貴賓價: 9.5 折 $821
- 語言: 簡體中文
- 頁數: 416
- ISBN: 7121386828
- ISBN-13: 9787121386824
-
相關分類:
Microservices 微服務、SOA
- 此書翻譯自: Mastering Distributed Tracing: Analyzing performance in microservices and complex systems
立即出貨
買這商品的人也買了...
-
$1,650$1,617 -
$680$530 -
$520$411 -
$607Kubernetes 微服務實戰 (Hands-On Microservices with Kubernetes)
-
$680$537 -
$564複雜軟件設計之道:領域驅動設計全面解析與實戰
-
$534$507 -
$560$437 -
$420$332 -
$580$458 -
$500$390 -
$1,575$1,496 -
$594$564 -
$539$512 -
$764解構領域驅動設計
-
$680$476 -
$520$406 -
$594$564 -
$630$599 -
$1,000$790 -
$534$507 -
$534$507 -
$636$604 -
$630$599 -
$659$626
商品描述
本書是作者基於其在Uber跟蹤團隊擔任技術主管時的個人經歷而寫的。本書分4部分共14章,內容包括:為什麽需要分佈式跟蹤、跟蹤一次HotROD之旅、分佈式跟蹤基礎、OpenTracing的埋點基礎、異步應用程序埋點、跟蹤標準與生態系統、使用服務網格進行跟蹤、關於採樣、跟蹤的價值、分佈式上下文傳播、集成指標與日誌、通過數據挖掘提煉洞見、在大型組織中實施跟蹤、分佈式跟蹤系統的底層架構。希望讀者能通過本書瞭解分佈式跟蹤及其相關應用的基本原則和設計思路,從而找到將其應用到自己的項目和系統中的有效方法。本書的目標讀者包括應用程序開發人員、SRE工程師、DevOps工程師、框架和基礎設施開發人員、技術經理和管理人員、跟蹤團隊等。
目錄大綱
I 引言 1
1 為什麽需要分佈式跟蹤 2
微服務與雲原生應用程序 3
什麽是可觀測性 5
微服務的可觀測性挑戰 7
傳統的監控工具 9
指標 10
日誌 11
分佈式跟蹤 12
我在跟蹤領域的經歷 14
為何編寫本書 17
總結 18
參考資料 19
2 跟蹤一次HotROD之旅 20
先決條件 21
從預打包的二進制文件運行 21
從Docker鏡像運行 22
從源代碼運行 22
啟動Jaeger 24
初識HotROD 26
架構 29
數據流 30
上下文日誌 32
span標記與日誌 35
確定延遲的來源 37
資源使用屬性 50
總結 53
參考資料 54
3 分佈式跟蹤基礎 55
想法 56
請求相關性 56
黑盒推理 57
特定於域的模式 57
元數據傳播 57
剖析分佈式跟蹤 59
採樣 60
保留因果關系 60
請求間因果關系 62
跟蹤模型 63
事件模型 63
span模型 65
時鐘偏差調整 67
跟蹤分析 69
總結 70
參考資料 70
Ⅱ 數據收集問題 73
4 OpenTracing的埋點基礎 74
先決條件 76
項目源代碼 76
Go開發環境 77
Java開發環境 78
Python開發環境 78
MySQL數據庫 78
查詢工具(curl或wget) 79
跟蹤後端(Jaeger) 79
OpenTracing 80
練習1:Hello應用程序 83
用Go語言實現Hello應用程序 84
用Java語言實現Hello應用程序 88
用Python語言實現Hello應用程序 92
練習總結 94
練習2:第一個跟蹤 94
步驟1:創建跟蹤器實例 94
步驟2:啟動span 99
步驟3:註釋span 102
練習總結 107
練習3:跟蹤函數和傳遞上下文 108
步驟1:跟蹤單個函數 109
步驟2:將多個span合並為一個跟蹤 111
步驟3:傳播進程內上下文 115
練習總結 123
練習4:跟蹤RPC請求 124
步驟1:拆解單體 124
步驟2:在進程之間傳遞上下文 127
步驟3:應用OpenTracing推薦的標記 136
練習總結 141
練習5:使用baggage 141
在Go中使用baggage 142
在Java中使用baggage 142
在Python中使用baggage 143
練習總結 143
練習6:自動埋點 143
Go中的開源埋點 144
Java中的自動埋點 146
Python中的自動埋點 148
練習7:額外練習 151
總結 151
參考資料 152
5 異步應用程序埋點 153
先決條件 154
項目源代碼 154
Java 開發環境 155
Kafka、ZooKeeper、Redis與Jaeger 155
Tracing Talk聊天應用程序 156
實現 158
運行應用程序 162
觀察跟蹤 163
使用OpenTracing埋點 166
Spring埋點 167
tracer resolver 167
Redis埋點 168
Kafka埋點 170
埋點異步代碼 178
總結 183
參考資料 183
6 跟蹤標準與生態系統 184
埋點形式 185
分析跟蹤部署和互操作性 188
跟蹤的五種含義 190
瞭解受眾 192
生態系統 193
跟蹤系統 193
X-Ray、Stackdriver等 194
標準項目 194
總結 200
參考資料 201
7 使用服務網格進行跟蹤 202
服務網格 203
服務網格的可觀測性 206
先決條件 207
項目源代碼 207
Java開發環境 208
Kubernetes 208
Istio 208
Hello應用程序 210
使用Istio進行分佈式跟蹤 213
使用Istio生成服務圖 223
分佈式上下文和路由 225
總結 228
參考資料 228
8 關於採樣 230
基於頭部的一致性採樣 231
概率採樣 231
速率限制採樣 232
保證吞吐量的概率採樣 234
自適應採樣 235
上下文敏感的採樣 244
實時採樣或調試採樣 244
如何處理過採樣 247
基於尾部的一致性採樣 249
部分採樣 253
總結 253
參考資料 253
Ⅲ 從跟蹤中獲取價值 255
9 跟蹤的價值 256
作為知識庫的跟蹤 257
服務圖 257
深度,路徑感知服務圖 259
檢測架構問題 262
性能分析 263
關鍵路徑分析 263
識別跟蹤模式 265
範例 269
延遲直方圖 271
長期性能分析 273
總結 273
參考資料 274
10 分佈式上下文傳播 275
布朗跟蹤平面 276
Pivot Tracing 280
混沌工程 283
流量標記 285
生產環境測試 286
生產環境調試 287
在生產環境中進行開發 288
總結 289
參考資料 289
11 集成指標與日誌 291
可觀測性的三大支柱 292
先決條件 294
項目源代碼 294
Java開發環境 295
在Docker中運行服務器 295
在Kibana中聲明索引模式 296
運行客戶端 297
Hello應用程序 298
與指標集成 299
通過跟蹤埋點實現標準指標 299
向標準指標中添加上下文 303
上下文感知的指標API 308
與日誌集成 309
結構化日誌記錄 309
將日誌與跟蹤上下文關聯起來 311
上下文感知的日誌API 316
在跟蹤系統中捕獲日誌 316
是否需要單獨的日誌記錄和跟蹤後端 318
總結 319
參考資料 320
12 通過數據挖掘提煉洞見 321
特徵提取 322
數據挖掘管道的組件 323
跟蹤後端 324
跟蹤完成觸發器 324
特徵提取器 325
聚合器 326
特徵提取練習 326
先決條件 328
項目源代碼 328
在Docker中運行服務器 329
在Elasticsearch中定義索引映射 330
Java開發環境 331
微服務模擬器 331
在Kibana中定義索引模式 334
span計數作業 336
跟蹤完成觸發器 338
特徵提取器 340
觀測趨勢 341
謹防推斷 349
歷史分析 350
實時分析 350
總結 353
參考資料 353
Ⅳ 部署和維護跟蹤基礎設施 355
13 在大型組織中實施跟蹤 356
為什麽很難部署跟蹤埋點 357
減少採用障礙 358
標準框架 359
內部適配器庫 360
默認啟用跟蹤 361
monorepo 361
與現有的基礎設施集成 362
從哪裡開始 362
構建文化 364
解釋價值 364
與開發人員工作流集成 365
跟蹤質量指標 366
故障排除指南 369
跳出關鍵路徑 369
總結 369
參考資料 370
14 分佈式跟蹤系統的底層架構 371
為什麽需要自己“造輪子” 372
定製和集成 372
帶寬成本 372
把控數據 373
押註新興標準 373
架構和部署模式 374
基本架構:代理+收集器+查詢服務 374
流式架構 377
多租戶 378
安全 381
在多個數據中心運行 382
監控和故障診斷 384
彈性 386
過採樣 386
調試跟蹤 387
數據中心故障轉移導致的流量峰值 387
無休止的跟蹤 387
長跟蹤 388
總結 388
參考資料 388
後記 390
參考資料 393