發表於2024-12-03
本書是一本指導Storm用戶實踐應用的指南,從Storm組件的應用細節、Storm的代碼邏輯,到如何優化拓撲性能,以及如何在生産環境中部署Storm集群,作者將TheLadders的項目實踐經驗都整理歸納並在本書中完整呈現,配上大量圖例說明,還附帶瞭應用代碼演示,使讀者可以在短時間內學到作者花費多年纔總結齣來的Storm知識精華。
目 錄?Contents
譯者序
序
前言
緻謝
關於本書
關於原書封麵插圖
第1章 Storm簡介 1
1.1 什麼是大數據 1
1.1.1 大數據的四大特性 2
1.1.2 大數據工具 3
1.2 Storm如何應用於大數據應用場景 5
1.3 為什麼你希望使用Storm 9
1.4 小結 10
第2章 Storm核心概念 11
2.1 問題定義:GitHub提交數監控看闆 11
2.1.1 數據:起點和終點 12
2.1.2 分解問題 12
2.2 Storm基礎概念 13
2.2.1 拓撲 13
2.2.2 元組 15
2.2.3 流 16
2.2.4 spout 17
2.2.5 bolt 18
2.2.6 流分組 20
2.3 在Storm中實現GitHub提交數監控看闆 22
2.3.1 建立一個Storm工程 22
2.3.2 實現spout 23
2.3.3 實現bolt 26
2.3.4 集成各個部分組成拓撲 29
2.4 小結 30
第3章 拓撲設計 31
3.1 拓撲設計方法 32
3.2 問題定義:一個社交熱力圖 32
3.3 將解決方案映射至Storm的邏輯 33
3.3.1 考慮數據流本身施加的要求 33
3.3.2 將數據點錶示為元組 34
3.3.3 確定拓撲組成的步驟 35
3.4 設計的初步實現 38
3.4.1 spout:從數據源讀取數據 38
3.4.2 bolt:連接至外部服務 39
3.4.3 bolt:將數據寄放在內存裏 41
3.4.4 bolt:持久化存儲到數據庫 45
3.4.5 定義組件間的流分組策略 47
3.4.6 在本地集群模式中構建一個拓撲 48
3.5 擴展拓撲 49
3.5.1 理解Storm中的並行機製 50
3.5.2 調整拓撲配置來解決設計中遺留的瓶頸 54
3.5.3 調整拓撲以解決數據流中固有的瓶頸 60
3.6 拓撲的設計範式 63
3.6.1 分解為功能組件的設計方法 65
3.6.2 基於重分配來分解組件的設計方法 65
3.6.3 最簡單的功能組件與最少的重分配次數 69
3.7 小結 70
第4章 設計健壯的拓撲 71
4.1 對可靠性的要求 71
4.2 問題定義:一個信用卡授權係統 72
4.2.1 有重試特性的概念性解決方案 72
4.2.2 定義數據點 74
4.2.3 在Storm上實現帶有重試特性的方案 74
4.3 bolt基礎實現 76
4.3.1 AuthorizeCreditCard的實現 76
4.3.2 ProcessedOrderNotification的實現 77
4.4 消息處理保障 78
4.4.1 元組狀態:處理完成或失敗 78
4.4.2 bolt中的錨定、應答和容錯 80
4.4.3 spout在消息處理保障中的角色 84
4.5 迴放語義 87
4.5.1 Storm中可靠性的級彆 87
4.5.2 在Storm拓撲中檢查僅一次處理 88
4.5.3 檢查拓撲中的可靠性保障 89
4.6 小結 94
第5章 拓撲由本地到遠程的實施 95
5.1 Storm集群 96
5.1.1 解析工作結點 98
5.1.2 基於信用卡授權拓撲的上下文來理解工作結點 99
5.2 Storm集群容錯中的快速失敗機製 100
5.3 安裝Storm集群 101
5.3.1 配置Zookeeper集群 101
5.3.2 在 Storm 的主結點和工作結點上安裝依賴組件 102
5.3.3 安裝Storm到主結點和工作結點 102
5.3.4 通過storm.yaml配置主結點和工作結點 102
5.3.5 在監督機製下啓動Nimbus和Supervisor 103
5.4 在Storm集群上運行拓撲 104
5.4.1 重新考慮如何將拓撲組件組閤在一起 104
5.4.2 在本地模式下運行拓撲 105
5.4.3 在一個遠程 Storm 集群上運行拓撲 105
5.4.4 在一個遠程Storm集群上部署拓撲 106
5.5 Storm UI及其在集群中的角色 107
5.5.1 Storm UI:Storm集群概要 107
5.5.2 Storm UI:獨立拓撲概要 111
5.5.3 Storm UI:獨立spout/bolt概要 115
5.6 小結 118
第6章 對Storm進行調優 120
6.1 問題定義:Daily Deals!重生版 121
6.1.1 創建概念性解決方案 121
6.1.2 將方案轉換為Storm設計 122
6.2 初始化實施 122
6.2.1 spout:讀取自一個數據源 124
6.2.2 bolt:查找推薦商品 125
6.2.3 bolt:為每個商品查詢詳細信息 126
6.2.4 bolt:保存推薦的商品詳情 127
6.3 調優:我想為它提速 128
6.3.1 Storm UI:調優的定位工具 128
6.3.2 為性能值建立一個基綫集 130
6.3.3 判斷瓶頸 131
6.3.4 spout:控製數據流入拓撲的速率 135
6.4 延遲率:當外部係統依然能正常工作時 137
6.4.1 在拓撲中模擬延遲 137
6.4.2 延遲的外因和內因 139
6.5 Storm的指標統計API 143
6.5.1 使用Storm的內建
CountMetric 143
6.5.2 設置一個指標接收器 144
6.5.3 創建一個自定義的SuccessRateMetric 145
6.5.4 創建一個自定義的MultiSuccessRateMetric 147
6.6 小結 149
第7章 資源衝突 150
7.1 調整一個工作結點上運行的工作進程數量 152
7.1.1 問題 152
7.1.2 解決方案 152
7.1.3 討論 153
7.2 修改工作進程(JVM)上的內存分配 153
7.2.1 問題 153
7.2.2 解決方案 154
7.2.3 討論 154
7.3 定位拓撲上運行的工作結點/進程 154
7.3.1 問題 154
7.3.2 解決方案 155
7.3.3 討論 155
7.4 在一個Storm集群中的工作進程衝突 156
7.4.1 問題 157
7.4.2 解決方案 157
7.4.3 討論 158
7.5 在一個工作進程(JVM)中的內存衝突 159
7.5.1 問題 162
前 言?Preface在TheLadders,我們從Storm剛發布時就開始使用(那時的版本號還是0.5.x)。剛開始,我們隻在一些非關鍵的業務流程上部署Storm,在很長的一段時間裏,我們的Storm集群都一直處於持續運行的狀態,且十分穩定。正因為沒齣過什麼問題,所以我們也沒花太多的心思在上麵。直到需要應對更多業務時,我們意識到Storm剛好是最閤適的解決方案,可結果在實施的過程中暴露齣瞭各種各樣的問題。例如,我們需要在生産環境中去應對資源爭奪,缺乏對底層運行原理的充分認知,不斷尋找優化性能的次優方案,麵臨缺少可視化的係統運行狀態監控,等等。
這促使我們花費大量的時間和精力去研究本書中即將呈現的內容。在學習理解Storm的過程中,我們多次翻閱瞭所有可找得到的文檔,深入研究相關源代碼,整理最適閤的Storm解決方案,不斷總結“最佳實踐”,並且我們還增加瞭自定義的監控係統,便於更有效地排查故障和優化方案。
你可以在網上輕鬆查到有關Storm的原理文檔,但我們發現,市麵上依然缺少可以基於生産環境,指導使用Storm的實踐應用文檔。我們為此在博客上撰寫瞭大量有關Storm的使用經驗,所以當Manning找到我們希望閤作一本Storm書籍時,大傢一拍即閤。我們有太多的知識想和大傢一起分享,希望可以幫助大傢少走我們曾走過的彎路,避開一些我們曾踩過的坑。
雖然我們分享齣來的內容主要是基於在生産環境中,如何對Storm集群做優化、調試和故障排查,但我們更希望強調這裏對Storm原理所需要的深入理解,同時展示齣Storm的靈活性和廣泛適用性,即使我們僅能代錶眾多使用Storm公司中的一員。
在本書中,我們將盡可能演示基於Storm下不同類型的應用案例,講解Storm的核心概念,以便更容易理解如何在生産環境中執行優化、調試和故障排查。希望這種形式能適用於不同層次的讀者,無論是剛接觸Storm的新人,還是擁有豐富經驗而且遇到過和我們有相似經曆的開發者。
本書絕對是一個團隊協作的結晶,無論是來自Manning的夥伴,還是來自TheLadders的同事,大傢都從最開始就盡可能地支持我們,耐心地協助我們完成測試和驗證所有想法。
無論你的Storm使用經驗處於什麼樣的層次,都希望本書能對你有所幫助,我們也很享受撰寫本書的過程,因為每一天我們都學到瞭更多關於Storm的知識。
緻 謝?Acknowledgements感謝TheLadders所有為我們提供反饋和支持的同事,無論如何,這都是一本屬於集體的書,指導著我們在集群上實現更多更酷的功能。
也感謝來自Manning並為本書撰寫提供大量幫助的夥伴,這是一個很棒的團隊,在閤作期間我們從他們身上學到瞭很多關於寫作的知識。特彆感謝編輯Dan Maharry,從第1章開始一直到最後一章完成,他為第一次寫書的我們提供瞭大量的幫助,指導我們在錯誤和挫摺中成長。
感謝所有參與本書的技術審校人員,感謝他們貢獻瞭自己私人的時間來核實書中的各技術要點:Antonios Tsaltas,Eugene Dvorkin,Gavin Whyte,Gianluca Righetto,Ioamis Polyzos,John Guthrie,Jon Miller,Kasper Madsen,Lars Francke,Lokesh Kumar,Lorcon Coyle,Mahmoud Alnahlawi,Massimo Ilario,Michael Noll,Muthusamy Manigandan,Rodrigo Abreau,Romit Singhai,Satish Devarapalli,Shay Elkin,Sorbo Bagchi以及Tanguy Leroux。其中我要著重感謝Michael Rose,感謝他為本書提供瞭大量高質量的反饋,可以說是本書最重要的技術審校人員。
感謝那些創造瞭Storm的人,沒有他們,我們就不會有日夜奮鬥的理由!我們還會堅持使用Storm,也期待未來Storm可以帶來更新的改進。
感謝Andrew Montalenti在我們早期手稿中提供的反饋,這給瞭我們很大的啓發,並支撐我們完成瞭本書,他寫的推薦序也很棒,我們沒辦法要求更多瞭。
最後還要感謝Eleanor Roosevelt,她那句被大量錯誤引用的勵誌名言“美國在哪裏都講速度,燥熱、骯髒、惹是生非的速度”,鼓舞著我們在睏難中前進,持續地學習Storm。
我們在看頒奬儀式時學到的一件事情,就是一定要感謝一路走來幫助我們的每一個人。
Sean Allen感謝Chas Emerick,如果不是因為和他激烈的爭論,我可能根本不會下決心來寫一本書,如果沒有他的付齣,可能就不會有人有機會讀到這本書瞭。Stephanie,感謝他在我每次都想放棄的時候鼓勵我堅持下去。Kathy Sierra,感謝他在Twitter上和我溝通,讓我能梳理清晰寫作的思路。感謝Matt Chesler和Doug Grove,他們幫助糾正瞭第7章的寫作方嚮。感謝在TheLadders嚮我谘詢問題的夥伴,是他們幫助我完成瞭第8章。感謝Tom Santero,幫我審閱瞭我在分布式係統上的一些細節。感謝Matt,幫我做瞭大量寫書期間必須要做但我又不想做的事情。
Matthew Jankowski首先感謝我的妻子Megan,她是我永恒的動力來源,無論寫書會占用多少時間,她都錶現齣無限的耐心,給予我堅定的支持。可以說沒有她,我是無法完成本書的。還有我的女兒Rylan,感謝她齣生在寫作的這段時間裏,她給瞭我很大的啓迪,也許她到現在還根本沒意識到吧。感謝我的傢人、朋友和同事,感謝他們的無限支持和建議。感謝Sean和Peter在剛開始聽到這個想法後,就願意一起參與到本書的創作,這的確是一段漫長的經曆,感謝有他們一起一路走來。
關 於 本 書?About this book大數據的概念日趨流行,能用於處理實時流數據的工具顯得尤其重要,Apache Storm就是這樣一個能處理無限流數據的工具。
本書不僅供新手入門,也不隻針對高階學習。盡管理解大數據技術以及分布式係統可以幫助閱讀,但我們並不希望這是作為閱讀本書的前提條件。我們盡可能嘗試迎閤新人或是熟悉該領域的讀者,本書最初的目的就在於呈現如何在生産環境中應用Storm的“最佳實踐”,但為瞭更深刻地瞭解Storm的應用,一些基礎知識還是有必要預習的,所以我們希望本書的內容可以麵嚮不同經驗層次的工程師。
如果你是剛開始學習Storm的新人,那麼我們建議先閱讀第1~4章,並且確保要全麵理解,因為這幾章包含瞭後麵所需要的全部基礎概念知識。如果你是有Storm應用經驗的讀者,那希望後麵的章節會對你們更有幫助。總之,設計開發基於Storm Storm應用實踐:實時事務處理之策略 下載 mobi epub pdf txt 電子書 格式
Storm應用實踐:實時事務處理之策略 下載 mobi pdf epub txt 電子書 格式 2024
Storm應用實踐:實時事務處理之策略 下載 mobi epub pdf 電子書越來越喜歡京東買東西,挺好的。
評分好。。。。。。。。。。
評分正品666
評分買迴來 還沒來得及看,先來評價
評分很不錯的書,值得細細品味
評分已經看完。老外寫的書就是好,循序漸進。可惜的最後一章的翻譯很差,雖然不影響我理解,但是可以推測最後一章沒用心翻譯。
評分看沒看,期待能不錯,補知識
評分已經看完。老外寫的書就是好,循序漸進。可惜的最後一章的翻譯很差,雖然不影響我理解,但是可以推測最後一章沒用心翻譯。
評分好東西,好東西
Storm應用實踐:實時事務處理之策略 mobi epub pdf txt 電子書 格式下載 2024