2013-08-30 107 views
3

我正在從事網絡分析工作。我將使用kafka,storm和mongodb。 Kafka給暴風雨來源,Storm處理數據並將數據存儲在mongodb中。在風暴中設計拓撲?

要求

  1. 風暴接收一個字符串,它是在elf格式。

  2. 對數據進行過濾(某些過濾器用於刪除未定義的數據)。

  3. 不得不精靈字符串轉換爲DBOBJECT

  4. 保存在MongoDB中的DBOBJECT。

對於上述要求如何創建拓撲結構(可以使用多少螺栓)。

性能是否與螺栓的數量成正比?

我是否可以爲transactional拓撲或trident拓撲?

任何幫助或建議將是偉大的。

+0

使用'TopologyBuilder'?你有沒有閱讀[風暴教程](https://github.com/nathanmarz/storm/wiki/Tutorial)關於定義Spouts和Bolts,然後連接它們? –

+0

@ChrisMantle首先謝謝。編輯我的問題了解更多信息 – karthick

回答

3

我會建議在設計螺栓時遵循Unix的哲學:「做一件事,做得好」。

  • Bolt'A'過濾數據。
  • 螺栓'B'將螺栓'A'的輸出轉換爲DBObject並將其保存到MongoDB。

這樣你就可以保持你的拓撲結構簡單。每個螺栓簡單而專注的責任。如果失敗了,你確切知道問題是什麼。當然,你可以告訴Storm每個螺栓需要多少個並行。

我不認爲你需要任何特殊的抽象(三叉戟或交易)。常規的Storm拓撲在這裏很好地爲您服務。

任何順便說一句,風暴文檔是優秀的!

+0

感謝您的想法。噴口---> bolt1 ----> bolt2 ----> mongodb。我有一個疑問,bolt2取決於bolt1,所以它每次都會等待bolt1,即使bolt2沒有任何任務。 – karthick

+0

這不是問題。考慮你將在Akka actors系統中實現這個。並不是每個演員都應該在時間軸上的任何點上做點什麼。風暴也是如此。 – Chiron

+0

即使在線程中,線程也會等待其他人完成他們的工作。 – Chiron