天天看點

《Storm分布式實時計算模式》——3.2 Trident topology

本節書摘來自華章計算機《storm分布式實時計算模式》一書中的第3章,第3.2節,作者:(美)p. taylor goetz brian o’neill 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

為了滿足這些需求,我們需要在topology中對疾病的發生進行統計。使用标準的storm topology進行統計會遇到難題,因為tuple可能重複發送,這會導緻重複計數的問題。下一節将會看到,trident提供了操作原語來解決這個問題。

我們将使用的topology,如圖3-1所示。

上述topology的代碼如下:

《Storm分布式實時計算模式》——3.2 Trident topology
《Storm分布式實時計算模式》——3.2 Trident topology

https://yqfile.alicdn.com/8f3ccc00d201386cd2c7e54e6d2b24079f053405.png

" >

《Storm分布式實時計算模式》——3.2 Trident topology
《Storm分布式實時計算模式》——3.2 Trident topology

https://yqfile.alicdn.com/341cd03b37714b631310fa1860e594409d79b95a.png" >

上述代碼表現了不同trident函數之間的布局關聯方式。首先,diagnosiseventspout函數發射疾病事件。然後事件由diseasefilter函數過濾,過濾掉我們不關心的疾病事件。之後,事件由cityassignment函數指派一個對應的城市名。然後hourassignment函數指派一個表示小時的時間戳,并且增加一個key citydiseasehour到tuple的字段中,這個key包括城市、小時和疾病代碼。後續就使用這個key進行分組統計并使用persistaggregate函數對統計量持久性存儲。統計量傳遞給outbreakdetector函數,如果統計量超過門檻值,outbreakdetector向後發送一個告警資訊。最後dispatchalert接收到告警資訊,記錄日志,并且結束流程。在後面,我們會深入了解每個步驟。

繼續閱讀