2013-06-05 462 views
2

我是Storm的新手,一直在探索其功能以符合我們的CEP要求。我偶然發現的不同例子通過消息代理,數據庫實現輪詢服務。如何實現基於推送的噴口,即在噴口內運行的Thrift服務器?我應該如何讓我的客戶知道我的噴嘴正在運行的位置,以便他們能夠推送數據?推式風暴水龍頭

+0

爲什麼不讓他們將數據推到一個隊列作爲@Gordon提到... N則u消耗和飼料,以烏爾嘴的消息.. 。像[風暴](https://github.com/nathanmarz/storm/wiki)等類似[Kakfka](http://kafka.apache.org/)的消息隊列可以讓你的生活更美好,我相信..你的要求究竟是什麼? – user2720864

回答

4

噴嘴的設計和打算投票,所以你不能推動他們。但是,許多人所做的就是使用像Redis,Thrift或Kafka這樣的服務作爲服務,您可以將消息推送給消費者,然後您的消費者就可以對消息進行輪詢。

1

控制你在哪裏和什麼時候噴口運行是有限的,所以有外部過程直接與噴口進行通信有點麻煩。這當然是可能的,但這不是最簡單的解決方案。

標準解決方案是將消息推送到某個外部消息隊列,讓您的噴口輪詢該消息隊列。

有一些做的正是這個常用消息隊列服務,如卡夫卡,紅隼和JMS,在storm-contrib

0

我沒有一大堆的經驗,無論是風暴或卡夫卡噴口實現/一般而言,紅隼或CEP,但我正在尋找類似的解決方案 - 推動風暴噴口。如何使用事件源和Storm羣集之間的負載平衡器?對於將rsyslog中的系統日誌消息推送到Storm的用例,負載均衡器可以跟蹤Storm節點正在運行的偵聽節點,哪些節點正在運行,並根據不同的參數分配傳入的負載。我不太願意在來源和噴口之間引入另一層,如消息總線。

編輯:我讀了你的博客並總結說,如果一個聆聽鯨魚嘴的唯一問題是一個消息來源如何找到它,那麼消息總線可能是錯誤的答案。基於簡單的網絡狀態或更高級別的應用程序邏輯,在接收器上引導網絡流量有更簡單/更好的解決方案。但是,是的,如果你想使用所有額外的消息總線功能,那麼顯然卡夫卡/凱斯特雷爾將是不錯的選擇。

0

這不是Storm的典型用法,顯然你不能將同一臺機器上的多個噴口實例綁定到同一個端口。在分佈式設置中,存儲API的當前IP地址和端口是個好主意,例如到ZooKeeper,然後平衡器將請求轉發到您的API。

下面是簡單的REST API項目上的風暴:

https://github.com/timjstewart/restexpress-storm