sentinel與hystrix對比


近期有同事再提要不要使用sentinel。所以我就對現在已經用hystrix。先看兩者的線程模型。大部分對比項是sentinel開源工程對比的,本人做了一些修改以及增加了一些對比項和說明。

從線程模型上看sentinel使用的是tomcat/jetty/other本身的線程池。hystrix使用的是自己創建的線程池

Items

Sentinel

Hystrix

remark

隔離策略

信號量隔離(並發線程數限流)(模擬信號量)

線程池隔離/信號量隔離

Sentinel不創建線程依賴tomcatjetty容器的線程池,存在的問題就是運行容器的線程數量限制了sentinel設置值的上限可能設置不准。

比如tomcat線程池為10sentinel設置100是沒有意義的,同時隔離性不好

hystrix使用自己創建的線程池,隔離性會更好

 

熔斷降級策略

基於響應時間、異常比率、異常數

基於異常比率

快速失敗的本質功能

實時統計實現

滑動窗口(LeapArray)

滑動窗口(基於  RxJava)

 

動態規則配置

支持多種數據源

支持多種數據源

 

擴展性

多個擴展點

插件的形式

 

基於注解的支持

支持

支持

 

限流

基於  QPS,支持基於調用關系的限流

有限的支持(並發線程數或信號量大小)

快速失敗的本質功能

流量整形

支持預熱模式、勻速器模式、預熱排隊模式

不支持(排隊)

支持排隊好吧

系統自適應保護

支持僅對linux生效

不支持

所謂的自適應就是設置一個服務器最大允許處理量的閾值。(有比沒有強,但是要知道最大負載量是多少。)

控制台

提供開箱即用的控制台,可配置規則、查看秒級監控、機器發現等

 

 

簡單的監控查看接近實時數據

 

 

控制台是非常有競爭力的功能,因為能集中配置限制數據更方便,但是展示數據和實時性沒有hystrix直觀。

配置持久化

ZooKeeper, Apollo,  Nacos

 

Git/svn/本地文件

Sentinel客戶端采用直接鏈接持久化存儲,應用客戶端引用了更多的依賴,同樣的存儲鏈接可能有多個配置

動態配置

支持

支持

hystrix可能需要手動觸發,sentinel增加了額外的端口進行配置文件控制,應該也支持spring boot動態配置

黑白名單

支持

不支持

個人覺得這個功能用的不是很多

springcloud集成

非常高

Spring boot使用hystrix會更方便

整體優勢

集中配置設置及監控+更細的控制規則

 

漂亮的界面+接近實時的統計結果

集中配置可能更有吸引力,但是配置值是多少以及讓誰控制依然是很頭疼的事情。運維控制可能不知道哪個應該優先哪個不優先,應該調整到多大。什么時候更適合使用sentinel?個人認為docker容器化部署之后sentinel可能更會發揮作用,但是會有另外的競品出現做選型。

       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM