高伸縮性系統:Erlang/OTP大型分散式容錯設計 | 運動資訊第一站 - 2024年11月
高伸縮性系統:Erlang/OTP大型分散式容錯設計
這是一本罕見的站在核心設計者而非普通開發者角度介紹Erlang/OTP系統的權威書籍。兩位作者均是深耕分散式運算領域超過20年的專家。
本書內容兼具深度與廣度,不僅帶領讀者通過一步步實踐的方式深入剖析了Erlang/OTP中各類核心進程的行為模式的設計原理,並且還介紹了特殊進程、自訂行為模式、發行包製作等高級主題。
除此之外,還用了大量篇幅向讀者介紹了Erlang/OTP系統中的設計原則、架構分散式系統的方法,以及在此基礎上實現容錯和規模伸縮所需瞭解的相關知識。
林建入是一家遠端工作的資深程式師,熟悉網路通訊協定與分散式系統設計以及其他。優點是開朗、話多,熱愛家庭,志存高遠,親切友好。缺點是一有機會就溜去遊戲廳打拳皇,玩了20年竟也不膩,我都拍著胸口佩服我自己,但是最近總被愛妻抓回家有點困擾。
如果你不是資深硬核小眾精英程式師,我不建議你買這本Erlang神書,因為它會讓你太快地完成工作導致閒置時間過多不知如何是好,或者讓你過度沉迷其源碼與實現機制,廢寢忘食導致身體機能下降和精神過度亢奮。
第 1章 概述 1
定義問題 2
OTP 4
Erlang 6
工具和庫 7
系統設計原則 9
Erlang 節點 10
分散式、基礎設施、多核 11
總結 12
通過本書你將學到什麼 13
第 2章 Erlang.簡介. 18
遞迴與模式匹配 18
受函數式的影響 22
玩轉匿名函數 22
列表推導:生成與測試 23
進程與消息傳遞 25
不怕出錯 30
用於監督的連結與監視器 31
連結 31
監視器 33
記錄 34
映射組 37
宏 38
模組升級 39
ETS:Erlang 元素存儲 41
分散式 Erlang 44
命名與通信 45
節點間的連接與可見性 45
總結 47
接下來是什麼 47
第 3章 行為模式. 49
進程的骨架 49
設計模式 52
回檔模組 53
抽取出通用的行為模式 56
啟動 server 57
client函數 60
server迴圈 62
server內建函式 64
通用伺服器 65
消息傳遞:冰山之下 68
總結 71
接下來是什麼 72
第 4章 通用型伺服器.gen_server. 73
gen_server 73
behavior指令 74
啟動一個 server 75
消息傳遞 77
同步式消息傳遞 78
非同步式消息傳遞 79
其他消息 81
未處理的消息 82
同步用戶端 83
終止 84
調用超時 86
鎖死 89
通用型 server的超時問題 90
使 behavior休眠 92
全域化 92
連結 behavior 94
總結 94
接下來是什麼 95
第 5章 深入控制 OTP行為模式 96
sys模組 96
追蹤與記錄 96
系統消息 98
你自己的追蹤函數 98
統計資訊和當前狀態 99
sys 模組總結 102
分裂時的可選項 103
記憶體管理與垃圾回收 104
分裂時應該避免使用的可選項 108
超時 109
總結 109
接下來是什麼 109
第 6章 有限狀態機. 110
Erlang 風格的有限狀態機 111
Coffee FSM 112
硬體樁 114
Erlang 版咖啡機 114
gen_fsm 118
一個基於行為模式的例子 119
啟動 FSM 119
發送事件 123
終止 132
總結 133
親力親為 134
電話控制器 134
讓我們測試一下 136
接下來是什麼 138
第 7章 事件處理器. 139
事件 139
通用事件管理器/處理器 141
啟動/停止事件管理器 141
添加事件處理器 142
刪除事件處理器 144
發送同步的或非同步的事件 145
獲取資料 148
對錯誤以及無效返回值的處理 150
交換事件處理器 152
融會貫通 154
SASL警報處理器 157
總結 159
接下來是什麼 159
第 8章 監督者 160
監督樹 161
OTP監督者 165
監督者行為模式 166
啟動監督者 166
監督者規格 169
動態子進程 176
非 OTP相容進程 184
可伸縮性和短期進程 186
確定性同步啟動 187
測試你的監督策略 188
與傳統方法相比又如何 190
總結 190
接下來是什麼 191
第.9.章 OTP.application 192
OTP application是如何運行的 193
OTP application的結構 194
回檔模組 198
啟動和停止 application 198
application資源檔 202
基站控制器的 application文件 204
啟動 application 205
環境變數 208
application的類型與終止策略 210
分散式 application 211
分階段啟動 215
內含型 application 217
內含型 application 的分階段啟動 217
將監督者與 application組合到一起 219
SASL應用 220
進度報告 224
錯誤報告 225
崩潰報告 226
監督者報告 227
總結 228
接下來是什麼 229
第.10.章 基於特殊進程打造自己的 behavior 230
特殊進程 230
互斥體 231
啟動特殊進程 232
互斥體的狀態 235
處理退出 236
系統消息 237
跟蹤與日誌事件 238
合在一起 239
動態模組和休眠 243
屬於你自己的 behavior 244
創建 behavior 時的要求 245
一個處理 TCP流的例子 245
總結 249
接下來是什麼 250
第 11章 系統原則與發行包製作. 251
系統原則252
發行包目錄結構 253
發行包資源檔 257
創建發行包 260
創建 boot 文件 262
打包發行包 271
啟動腳本以及目標上的配置 275
參數和標誌 277
init模組 289
rebar3 290
生成一個 rebar3 發行包項目 292
使用 rebar3 創建發行包 295
使用 rebar3 處理製作發行包時的專案依賴問題 298
總結 300
接下來是什麼 304
第 12章 發行包升級 305
軟體升級 305
第一個版本的咖啡機 FSM 308
添加一個新狀態 311
為發行包創建升級 314
負責升級的代碼 318
應用程式升級檔 322
高級指令 325
發行包升級文件 328
低級指令 330
安裝升級 332
發行包處理器 334
升級環境變數 338
升級特殊進程 338
在分散式環境下升級 339
升級模擬器和核心 application 340
使用 Rebar3進行升級 341
總結 344
接下來是什麼 346
第 13章 分散式架構 347
節點類型與家族 348
聯網 351
分散式 Erlang 353
通訊端與 SSL 359
面向服務和微服務的架構 361
點對點 362
介面 364
總結 366
接下來是什麼 367
第.14.章 永不停止的系統 368
可用性 368
容錯 369
彈性 370
可靠性 371
資料共用 375
一致性和可用性之間的權衡 383
總結 384
接下來是什麼 385
第.15.章 水準規模伸縮 386
水準規模伸縮與垂直規模伸縮 386
容量規劃 390
容量測試 392
平衡你的系統 394
找尋瓶頸 396
系統藍圖 398
負載調節與背壓 399
總結 401
接下來是什麼 403
第 16章 監視與搶救性支援 404
監視 405
日誌 406
指標 411
警報 414
搶救性支持 416
總結 418
接下來是什麼 420
索引 421