paulwong

          淺釋STORM

          STORM是一個(gè)消息處理引擎,可以處理源源不斷的進(jìn)來的消息,這些消息的處理是可以按步驟的。

          處理的方式有各種自定義:

          1. 可自定義消息處理的步驟

          2. 可自定義每種類型的消息需要多少個(gè)進(jìn)程來處理

          3. 每個(gè)步驟里的消息是在某個(gè)進(jìn)程里的線程來做處理的

          4. 可自定義每個(gè)步驟里的消息的線程數(shù)

          5. 可以增加和刪除要處理的消息類型
          如果要處理某種消息了,要怎么辦呢?

          1. 定義數(shù)據(jù)來源組件(SPOUT)

          2. 定義處理步驟(BOLT)

          3. 組合成一個(gè)消息處理流程框架TOPOLOGY

          4. 定義處理消息的進(jìn)程的數(shù)量、定義每個(gè)步驟并發(fā)時(shí)可用的線程數(shù)

          5. 部署TOPOLOGY
          當(dāng)一個(gè)TOPOLOGY被部署到STORM時(shí),STORM會(huì)查找配置對(duì)象的WORKER數(shù)量,根據(jù)這個(gè)數(shù)量相應(yīng)的啟動(dòng)N個(gè)JVM,然后根據(jù)每個(gè)步驟配置的NUMTASKS生成相應(yīng)個(gè)數(shù)的線程,然后每個(gè)步驟中配置的數(shù)量實(shí)例化相應(yīng)個(gè)數(shù)的對(duì)象,然后就啟動(dòng)一個(gè)線程不斷的執(zhí)行SPOUT中的nextTuple()方法,如果這個(gè)方法中有輸出結(jié)果,就啟動(dòng)另一線程,并在此線程中將這個(gè)結(jié)果作為參數(shù)傳到下一個(gè)對(duì)象的excue方法中。

          如果此時(shí)又有一個(gè)步驟BOLT需要執(zhí)行的話,也是新取一個(gè)線程去執(zhí)行BOLT中的方法啟動(dòng)的線程不會(huì)越過NUMTASKS的數(shù)量。



          posted on 2014-05-09 22:56 paulwong 閱讀(257) 評(píng)論(0)  編輯  收藏 所屬分類: STORM

          主站蜘蛛池模板: 阜南县| 汨罗市| 永德县| 庄河市| 江阴市| 英超| 龙里县| 农安县| 天台县| 贡觉县| 城口县| 定西市| 北川| 白水县| 北宁市| 宜兰市| 井陉县| 仁布县| 从化市| 鹰潭市| 平谷区| 古蔺县| 托克托县| 盐城市| 丽江市| 铜鼓县| 两当县| 嘉兴市| 新宁县| 武安市| 鸡东县| 始兴县| 基隆市| 乡宁县| 莱西市| 连江县| 长兴县| 缙云县| 九江县| 泉州市| 漠河县|