天天看點

《Storm企業級應用:實戰、運維和調優》——3.9 事務

本節書摘來自華章計算機《storm企業級應用:實戰、運維和調優》一書中的第3章,第3.9節,作者:馬延輝 陳書美 雷葆華著, 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

這裡的事務是專門針對topology提出來的,是為了解決元組在處理失敗重新發送後的一系列問題的。簡而言之,事務拓撲(transactional topology)就是指storm以并行和順序處理混合的方式處理元組,一方面是處理消息,将消息分為一批批,并行處理同一批内的消息以及批與批之間的消息;另一方面是送出消息,按嚴格的順序送出,總之實作對消息精确的處理。

(1)事務拓撲的特點

事務性拓撲這一特性使消息在語義上確定能夠以安全的方式重發消息,并保證它們隻被處理一次。在不支援事務性拓撲的情況下,無法在保證準确性、可擴充性、容錯性的前提下完成計算。

(2)事務拓撲的目的

事務拓撲的目的是滿足對消息處理有着極其嚴格要求的場景,如實時計算某個使用者的頁面點選次數,要求結果完全精确。

(3)事務拓撲的原理

事務拓撲是storm 0.7引入的特性,0.8之後版本已經被封裝為trident,提供了更加友善和直覺的接口。

storm的事務拓撲是完全基于底層的spout/bolt/acker原語實作的,通過一層巧妙的封裝得出一個優雅的實作,這也是storm最大的魅力之一。

storm使用zookeeper儲存事務中繼資料,預設就是拓撲使用的zookeeper。可以通過修改transactional.zookeeper.servers和transactional.zookeeper.port配置參數鍵指定其他的zookeeper。

在使用事務性拓撲時,資料源要能夠重發,有時候甚至要重複多次,是以需要确認資料源spout是否具備這項能力。

繼續閱讀