天天看點

Jstorm vs Storm

Jstorm 是由Storm演化而來,在架構和實作上都有很大的相似度,并且沿用了Storm的程式設計接口,Storm的程式在很多版本上,可以無縫遷移到Jstorm。整體上說,Jstorm更穩定,靈活性更高,性能更高。

  • Jstorm Nimbus 實作HA

    當一台nimbus挂了,自動熱切到備份nimbus

  • 徹底解決Storm雪崩問題

    底層RPC 采用netty + disruptor,保證發送速度和接受速度是比對的

  • rebalance

    Storm采取的政策更自動化,可能會影響穩定性。而Jstorm則采取更穩定的政策,在下面的情況發生時,都不會rebalance,可以手動relanbance

1. 添加supervisor時, 會觸發任務rebalance
 2. Supervisor shutdown時, 觸發任務rebalance
 3. 送出新任務時,當worker數不夠時,觸發其他任務做rebalance
           
  • Jstorm排程政策更穩定

    當新拓撲送出時,Jstorm不會去搶占老任務占用的資源cpu,memory,disk,net。

  • Jstorm減少對ZK的通路量

    去掉大量無用的watch,task的心跳時間延長一倍,Task心跳檢測無需全ZK掃描

  • Jstorm排程更強大

    可以從4個次元對任務進行資源配置設定,CPU,Memory,Disk,Net。需要開啟Cgroups,具體

    http://blog.csdn.net/zengqiang1/article/details/78451307
  • Jstorm預設一個task,一個cpu slot,當task消耗更多的cpu時,可以申請更多cpu slot
  • Jstorm 預設task,不申請disk slot,當task 磁盤IO較重時,可以申請disk slot
  • Jstorm可以強制某個component的task 運作在不同的節點上
  • Jstorm 可以強制topology運作在單獨一個節點上
  • Jstorm可以自定義任務配置設定

    提前預約任務配置設定到哪台機器上,哪個端口,多少個cpu slot,多少記憶體,是否申請磁盤

  • JstormWorker 内部全流水線模式,Spout nextTuple和ack/fail運作在不同線程

    nextTuple中 做sleep和wait操作不會block ack/fail 動作

  • Jstorm底層使用ZeroMq, 比storm快30%
  • Jstorm底層使用netty時, 和storm快10%,并且穩定非常多

Jstorm 為什麼性能更好

  • Zeromq 減少一次記憶體拷貝
  • 增加反序列化線程
  • 重寫采樣代碼,大幅減少采樣影響
  • 優化ack代碼
  • 優化緩沖map性能
  • Java 比clojure更底層

作者:glowd

原文:

https://blog.csdn.net/zengqiang1/article/details/78448694

版權聲明:本文為部落客原創文章,轉載請附上博文連結!

繼續閱讀