Apache底下的分散式即時運算系統Storm睽違一年,終於釋出主要版本更新Storm 2.0,這個版本在效能跟功能上,都有重大改善,其核心重新以Java實作,不只改善了效能,更方便功能的擴充,而新版本也改變了與資料串流系統Kafka整合的方式。

Apache Storm是一個開源分散式計算系統,可以處理與Hadoop類似的工作,只不過Hadoop只能以批次進行,但是Storm卻能連續無限的處理資料串流,進行像是即時分析、線上機器學習或是ETL等工作。Apache Storm的執行速度非常快,其基準測試每個節點每秒可以處理超過一百萬個值組(Tuple)。

開發團隊重新設計Storm的核心,把原本用Clojure實作的部分拿掉,現在整個核心都是以純Java實作,除了提高了效能之外,也讓Storm內部的API更容易使用以及擴展,官方提到,過去Storm中使用Clojure實作的部分也沒有不好,只是因為Clojure學習障礙比較高,阻礙了許多新進貢獻者,而在改成Java後,Storm程式碼將更容易維護。

Storm 2.0的核心簡化了執行緒模型,並且加入了高效能的訊息傳輸子系統,以及輕量級的背壓(Back Pressure)模型,以向後相容的前提,提高訊息吞吐量並降低延遲,這些改進讓Storm 2.0成為一個可以打破1微秒延遲障壁的串流引擎。Storm 2.0中加入了一個新類型API,讓使用者可以更簡單地以函式表達串流運算,這些API建立在核心之上,核心會自動融合多重操作,並最佳化工作管線。

另外,Storm 2.0與Kafka的整合大幅度地變更,原本Storm 1.x版本的Kafka整合是使用storm-kafka模組,但是由於Kafka棄用了底層的客戶端函式庫,因此Storm的使用者,現在必須轉而使用storm-kafka-client模組,這個模組是整合kafka-clients函式庫撰寫而成。官方表示,新舊模組的搬遷很簡單,他們也提供了說明文件,讓使用者對照新舊模組的功能。

值得注意的是,storm-kafka-client模組在Storm 1.x的時候,允許Kafka以自己的機制管理接口(Spout)與其負責的磁區,但後來經官方評估,認為這個機制並不適合Storm,因此在1.2.0棄用,並於2.0完全移除。而且storm-kafka-client模組的訂閱接口也被移除,官方提到,除非使用者自定義訂閱實作,否則不會有影響。


Advertisement

更多 iThome相關內容