天天看點

JStorm 2.2.1 版本正式釋出

對比2.1.1和去年的雙十一版本0.9.8.1有200%~300%的提升。在高并發和低并發的多個測試場景(word count)中,是flink性能的120%~200%,是storm的300%~400%。

jstorm主要從以下幾個方面對性能進行優化。

重構batch的實作方案

優化序列化和反序列過程,減少cpu和網絡消耗

優化消息關鍵路徑和metrics的cpu開銷

優化網絡接收和發送端的處理政策

增加disruptorqueue的異步batch操作

<a></a>

加入新的snapshot exactly once(隻處理一次)架構。

對比原有的trident解決方案有着數倍的性能提升。同時可以減少使用者在復原的過程中的處理邏輯。

同時支援at least once(至少處理一次場景)。對比原有的acker機制,可以減少acker的消息處理開銷,同時在高吞吐的場景中可以大量的減少acker消息占用的網絡帶寬。以提高任務性能。

完成jstorm on yarn支援。

現在jstorm可以實作快速的叢集部署,以及叢集的擴容和縮容。有效的提高叢集資源的彈性和使用率。

3, 重構backpressure設計,支援stage by stage的流控模式。

目前的設計更加輕量,讓backpressure在流控開啟和關閉時更加高效。

性能和穩定性對比原因的方案有着很大的提升。

引入window api。

支援tumbling window,sliding window

對應的window支援count和duration 模式

支援window的watermark機制

引入對flux的支援

flux是幫助建立和部署storm拓撲的程式設計架構及通用元件。幫助使用者更友善建立及部署jstorm流式計算拓撲的程式設計架構

通過maven shade的方式,對一些容易沖突的依賴包做shade。以解決jstorm依賴和使用者依賴之前的沖突問題。

優化shuffle grouping方案

合并shuffle, localorshuffle和localfirst。根據任務情況自動适配。

shuffle時會根據下遊節點的負載情況,做shuffle。以達到負載均衡。

增加nimbus的黑名單機制。

增加trident對消息batch模式的支援

支援叢集的全局配置推送

supervisor info和心跳中增加了buildts,便于區分出叢集中是否存在不同版本的supervisor

nimbus和supervisor通過ext子產品來支援外部插件

添加elastic search 5.11的支援, 感謝 @elloray 的pr

重構nimbus metrics 架構,将原topologymetricsrunnable打散成事件驅動

重構topology master的處理邏輯。改為事件驅動。提高topology的處理性能。

重構example 代碼, 增加大量example和測試用例

預設禁用stream metrics以及其他特定metrics,以減少發送的資料量

本地模式下啟用metrics

gauge的實作,由每分鐘單值,改為每分鐘采樣多次計算平均值

引入了一種近似計算的方式來計算histogram的值,以減少記憶體開銷

增加了full gc以及supervisor中網絡相關的metrics

fix 消息的亂序問題

fix supervisor上有大量的zookeeper連接配接的問題

fix task初始化時,deactivate的錯誤調用

fix spout并發高時,少量消息rootid重複,導緻消息失敗的問題。

fix 本地模式的一些bug

fix logwriter的bug

修複了task metrics中recvtps, processlatency沒有合并到task的bug

修複了asmcounter在flush時的線程同步問題

繼續閱讀