《ZeroMQ:雲時代極速訊息通信庫》是2015年電子工業出版社出版的圖書,作者是Pieter Hintjens(皮特.亨特金斯)。
基本介紹
- 書名:ZeroMQ:雲時代極速訊息通信庫
- 作者:Pieter Hintjens(皮特.亨特金斯)
- 譯者:盧濤、李穎
- 出版社:電子工業出版社
- 出版時間:2015年
- 頁數:536 頁
- 定價:108 元
- 開本:16 開
- ISBN:9787121253119
內容簡介,目錄信息,
內容簡介
本書介紹ZeroMQ 的API、套接字和模式的使用。通過建立應用程式來講解如何使用ZeroMQ 編程技術構建多執行緒應用程式,並創建自己的訊息傳遞架構。本書設計了大量工作實例來實現請求- 應答模式的高級使用和容錯性,並對發布- 訂閱模式的性能、可靠性、狀態分發與監控進行了擴展。 本書面向的讀者是希望製作大規模分散式軟體的專業程式設計師和有志於這方面研究的專業人士,旨在幫助他們解決大規模、可擴展、低成本、高效率的問題,書中還展現了ZeroMQ所需的網路和分散式計算概念。
目錄信息
前言 ...................xix
第 1章基礎知識 ..3
修復這個世界 ..............................................3
本書的讀者對象...........................................5
獲取示例......................................................5
問過就必有收穫...........................................5
在字元串上的小註解 .................................10
版本報告....................................................12
獲得訊息....................................................12
分而治之....................................................16
用 ØMQ編程 .............................................21
獲取正確的上下文 ..............................22
執行徹底的退出 ..................................22
為什麼我們需要 ØMQ ..............................23
套接字的可擴展性 .....................................27
從 ØMQ v2.2升級到 ØMQ v3.2 ................28
警告:不穩定的典範! ..............................29
第 2章套接字和模式 ................................................... 31
套接字 API .................................................32
把套接字接入網路拓撲 ......................32
使用套接字來傳輸數據 .......................34
單播傳輸 .............................................35
ØMQ不是一個中性載體.....................35
I/O執行緒 ...............................................36
訊息傳遞模式 ............................................37
高級別訊息傳遞模式 ...........................38
處理訊息 .............................................38
處理多個套接字 ..................................41
多部分訊息 .........................................44
中間層及代理 ......................................45
動態發現問題 ......................................46
共享佇列(DEALER和 ROUTER套接字) ..................................................48
ØMQ的內置代理功能 ........................53
傳輸橋接 .............................................55
處理錯誤和 ETERM...................................56
處理中斷信號 ............................................61
檢測記憶體泄漏 ............................................63
使用 ØMQ編寫多執行緒程式 .......................64
執行緒間信令(PAIR套接字) ......................69
節點協調....................................................71
零拷貝........................................................75
發布 -訂閱訊息封包..................................76
高水位標記 ................................................78
訊息丟失問題的解決方案..........................80
第 3章高級請求 -應答模式 ......................................... 83
請求 -應答機制 .........................................83
簡單的應答封包 ..................................84
擴展的應答封包 ..................................84
這有什麼好處呢 ..................................87
請求 -應答套接字回顧 .......................88
請求 -應答組合 .........................................88
REQ到 REP組合 ................................89
DEALER到 REP組合 ........................89
REQ到 ROUTER組合 ........................90
DEALER到 ROUTER組合 ................90
DEALER到 DEALER組合 ................90
ROUTER到 ROUTER組合 ................90
無效組合 .............................................91
探索 ROUTER套接字 ...............................91
身份和地址 .........................................92
ROUTER錯誤處理 .............................93
負載均衡模式 ............................................94
ROUTER代理和 REQ工人 ................95
ROUTER代理及 DEALER工人 .........97
負載均衡的訊息代理 ...........................98
用於 ØMQ的一個高級別的 API .............. 105
高級別 API的特點 ............................ 107
CZMQ高級別 API ............................ 108
異步客戶端 /伺服器模式 ......................... 115
能夠工作的示例:跨代理路由 ................ 120
建立詳情 ........................................... 120
單集群架構 ....................................... 121
擴展到多個集群 ................................ 122
聯盟與對等比較 ................................ 124
命名規範 ........................................... 126
狀態流原型 ....................................... 127
本地流和雲端流原型 ......................... 130
總結 ................................................... 137
第 4章可靠的請求 -應答模式 .................................... 147
什麼是“可靠性”..................................... 147
可靠性設計 .............................................. 148
客戶端可靠性(懶惰海盜模式).............. 149
基本可靠佇列(簡單海盜模式).............. 154
健壯的可靠佇列(偏執海盜模式)........... 157
信號檢測.................................................. 166
置若罔聞地將它關閉 ......................... 166
單向信號檢測 .................................... 167
桌球信號檢測 .................................... 167
針對偏執海盜的信號檢測 ................. 168
契約和協定 .............................................. 170
面向服務的可靠佇列(管家模式)........... 170
異步管家模式 .......................................... 195
服務發現.................................................. 201
冪等服務.................................................. 203
下線的可靠性(泰坦尼克模式)....... 203
高可用性對(雙星模式).......................... 216
詳細需求 ........................................... 218
避免腦裂症狀 .................................... 220
雙星實現 ........................................... 221
雙星反應器 ....................................... 228
無代理可靠性(自由職業者模式)........... 234
模型一:簡單的重試和故障轉移 ...... 235
模型二:粗暴獵槍屠殺 ..................... 238
模式三:複雜和討厭的 ..................... 244
結論 ......................................................... 256
第 5章高級發布 -訂閱模式 ....................................... 257
發布 -訂閱模式的優點和缺點 ................. 257
發布 -訂閱跟蹤(特濃咖啡模式)........... 259
最後一個值快取....................................... 262
慢速訂閱者檢測(自殺蝸牛模式)........... 267
高速訂閱者(黑盒模式).......................... 270
可靠的發布 -訂閱(克隆模式)............... 272
集中式與分散式 ................................ 273
將狀態表示為鍵 -值對 ..................... 273
得到帶外的快照 ................................ 284
重新發布來自客戶端的更新 ............. 290
處理子樹 ........................................... 295
臨時值 ............................................... 298
使用反應器 ....................................... 306
在雙星模式中添加可靠性 ................. 311
集群的散列映射協定 ......................... 321
構建一個多執行緒棧和 API .................. 325
第 6章 ØMQ社區 ..................................................... 341
ØMQ社區的架構..................................... 342
如何製作真正的大型架構........................ 343
軟體架構的心理學 ............................ 344
契約 ................................................... 346
過程 ................................................... 348
瘋狂,美麗,並且容易 ..................... 348
陌生人,遇見陌生人 ......................... 349
無限的財富 ....................................... 349
照管和培育 ....................................... 350
ØMQ過程: C4 ........................................ 351
語言 ................................................... 351
目標 ................................................... 352
熱身 ................................................... 354
許可和所有權 .................................... 355
對補丁程式的要求 ............................ 356
開發過程 ........................................... 357
建立穩定的版本 ................................ 361
公共契約的演變 ................................ 362
一個實際例子 .......................................... 364
Git分支是有害的 ..................................... 368
簡單性與複雜性的對比 .....................369
更改延遲 ...........................................369
學習曲線 ...........................................369
出故障的成本 ....................................369
前期協調 ...........................................369
可擴展性 ...........................................370
驚奇和期望 .......................................370
參與的經濟學 ....................................370
在衝突中的強壯性 ............................370
隔離的保證 .......................................370
能見度 ...............................................371
結論 ...................................................371
為創新而設計 ..........................................371
雙橋傳說 ...........................................371
ØMQ的路線圖是如何失去的 ........... 372
垃圾桶化的設計 ................................ 374
複雜化的設計 .................................... 376
簡約化的設計 .................................... 377
職業倦怠.................................................. 379
成功模式.................................................. 380
懶惰的完美主義者 ............................ 381
仁慈暴君 ........................................... 381
天和地 ............................................... 381
門戶開放 ........................................... 381
大笑的小丑 ....................................... 382
留心的將軍 ....................................... 382
社會工程師 ....................................... 382
不朽的園丁 ....................................... 382
滾石 ................................................... 382
海盜幫 ............................................... 383
快閃族 ............................................... 383
加那利看守 ....................................... 383
執行絞刑的劊子手 ............................ 383
歷史學家 ........................................... 383
煽動者 ............................................... 384
神秘人 ............................................... 384
第 7章使用ØMQ的高級架構 .................................... 385
用於彈性設計的面向訊息模式 ................ 386
第 1步:內部化的語義 ..................... 387
第 2步:描繪一個粗略的架構 .......... 387
第 3步:決定契約 ............................ 388
第 4步:編寫一個最小的端到端解決方案 ................................................. 388
第 5步:解決一個問題,然後重複 .. 389
Unprotocol ............................................... 389
契約是艱難的 .................................... 390
如何編寫 Unprotocol ......................... 391
為什麼使用 GPLv3的公開規範 ........ 392
使用 ABNF........................................ 393
廉價或討厭的模式 ............................ 393
序列化數據 .............................................. 395
ØMQ組幀 ......................................... 396
序列化語言 ....................................... 396
序列化庫 ........................................... 397
手寫的二進制序列化 ......................... 399
代碼生成 ........................................... 400
傳輸檔案.................................................. 406
狀態機...................................................... 417
使用 SASL認證 ....................................... 424
大型檔案發布: FileMQ........................... 426
為什麼要製作 FileMQ ....................... 426
最初的設計切片: API ...................... 426
最初的設計切片:協定 ..................... 427
構建和嘗試 FileMQ........................... 429
內部架構 ........................................... 430
公共 API ............................................ 431
設計說明 ........................................... 432
配置 ................................................... 433
檔案穩定性 ....................................... 434
遞交通知 ........................................... 434
符號連結 ........................................... 435
恢復和後期加入者 ............................ 435
測試用例:曲目工具 ......................... 437
得到一個官方連線埠號 ............................... 439
第 8章分散式計算的框架 .......................................... 441
用於現實世界的設計 ............................... 442
無線網路的秘密生活 ............................... 443
為什麼網狀網路現在還沒出現 .......... 444
一些物理知識 .................................... 445
現狀是什麼 ....................................... 446
結論 ................................................... 448
發現 ......................................................... 448
通過原始套接字先發制人的發現 ...... 448
使用 UDP廣播協同發現 ................... 450
一台設備上的多個節點 ..................... 455
設計 API ............................................ 456
關於 UDP的更多內容....................... 465
分拆一個庫項目....................................... 466
點對點訊息傳遞....................................... 467
UDP信標幀 ...................................... 467
真正的對等連線(和諧模式) ........... 469
檢測失蹤 ........................................... 471
群發訊息.................................................. 472
測試與模擬 .............................................. 474
使用斷言 ........................................... 474
前期測試 ........................................... 475
Zyre測試儀 ....................................... 476
測試結果 ........................................... 479
跟蹤活動 ........................................... 481
處理阻塞節點 .................................... 481
分散式日誌記錄和監視............................ 484
一個合理的最小實現 ......................... 485
協定斷言 ........................................... 488
二進制日誌記錄協定 ......................... 489
內容分發.................................................. 490
編寫 Unprotocol ....................................... 493
結論 ......................................................... 494
第 9章後記 .... 497
番外篇...................................................... 497
Rob Gagnon的故事 ........................... 497
Tom van Leeuwen的故事 .................. 497
Michael Jakl的故事 .......................... 498
Vadim Shalts的故事 .......................... 498
本書是如何誕生的 ................................... 499
消除摩擦.................................................. 500
許可 ......................................................... 502
索引 ................. 503