sentinel与hystrix对比
近期有同事再提要不要使用sentinel。所以我就对现在已经用hystrix。先看两者的线程模型。大部分对比项是sentinel开源工程对比的,本人做了一些修改以及增加了一些对比项和说明。

从线程模型上看sentinel使用的是tomcat/jetty/other本身的线程池。hystrix使用的是自己创建的线程池
|
Items |
Sentinel |
Hystrix |
remark |
|
隔离策略 |
信号量隔离(并发线程数限流)(模拟信号量) |
线程池隔离/信号量隔离 |
Sentinel不创建线程依赖tomcat或jetty容器的线程池,存在的问题就是运行容器的线程数量限制了sentinel设置值的上限可能设置不准。 比如tomcat线程池为10,sentinel设置100是没有意义的,同时隔离性不好 hystrix使用自己创建的线程池,隔离性会更好 |
|
熔断降级策略 |
基于响应时间、异常比率、异常数 |
基于异常比率 |
快速失败的本质功能 |
|
实时统计实现 |
滑动窗口(LeapArray) |
滑动窗口(基于 RxJava) |
|
|
动态规则配置 |
支持多种数据源 |
支持多种数据源 |
|
|
扩展性 |
多个扩展点 |
插件的形式 |
|
|
基于注解的支持 |
支持 |
支持 |
|
|
限流 |
基于 QPS,支持基于调用关系的限流 |
有限的支持(并发线程数或信号量大小) |
快速失败的本质功能 |
|
流量整形 |
支持预热模式、匀速器模式、预热排队模式 |
不支持(排队) |
支持排队好吧 |
|
系统自适应保护 |
支持(仅对linux生效) |
不支持 |
所谓的自适应就是设置一个服务器最大允许处理量的阈值。(有比没有强,但是要知道最大负载量是多少。) |
|
控制台 |
提供开箱即用的控制台,可配置规则、查看秒级监控、机器发现等 |
简单的监控查看接近实时数据 |
控制台是非常有竞争力的功能,因为能集中配置限制数据更方便,但是展示数据和实时性没有hystrix直观。 |
|
配置持久化 |
ZooKeeper, Apollo, Nacos |
Git/svn/本地文件 |
Sentinel客户端采用直接链接持久化存储,应用客户端引用了更多的依赖,同样的存储链接可能有多个配置 |
|
动态配置 |
支持 |
支持 |
hystrix可能需要手动触发,sentinel增加了额外的端口进行配置文件控制,应该也支持spring boot动态配置 |
|
黑白名单 |
支持 |
不支持 |
个人觉得这个功能用的不是很多 |
|
springcloud集成 |
高 |
非常高 |
Spring boot使用hystrix会更方便 |
|
整体优势 |
集中配置设置及监控+更细的控制规则 |
漂亮的界面+接近实时的统计结果 |
集中配置可能更有吸引力,但是配置值是多少以及让谁控制依然是很头疼的事情。运维控制可能不知道哪个应该优先哪个不优先,应该调整到多大。什么时候更适合使用sentinel?个人认为docker容器化部署之后sentinel可能更会发挥作用,但是会有另外的竞品出现做选型。 |
sentinel与hystrix对比的更多相关文章
- 阿里巴巴开源限流组件Sentinel初探
1 Sentinel主页 https://github.com/alibaba/Sentinel/wiki/主页 1.1 Sentinel介绍 随着微服务的流行,服务和服务之间的稳定性变得越来越重要. ...
- Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
摘要: 本文对Hystrix.Resilience4j.Sentinel进行对比,并探讨如何使用一行代码这种极简的方式,将Hystrix迁移到Sentinel. Hystrix 自从前段时间 宣布停止 ...
- 替代 Hystrix,Spring Cloud Alibaba Sentinel 快速入门
提起 Spring Cloud 的限流降级组件,一般首先想到的是 Netflix 的 Hystrix. 不过就在2018年底,Netflix 宣布不再积极开发 Hystrix,该项目将处于维护模式.官 ...
- 限流降级神器,带你解读阿里巴巴开源 Sentinel 实现原理
Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度来帮助用户保护服务的稳定性. 大家可能会问:Se ...
- SpringCloud 中集成Sentinel+Feign实现服务熔断降级
Sentine 1.背景 Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度来帮助用户保护服务的稳 ...
- Dubbo学习系列之十(Sentinel之限流与降级)
各位看官,先提个问题,如果让你设计一套秒杀系统,核心要点是啥???我认为有三点:缓存.限流和分离.想当年12306大面积崩溃,还有如今的微博整体宕机情况,感觉就是限流降级没做好,"用有限的资 ...
- 阿里sentinel说明及使用
使用说明 如果只是为了让使 用Sentinel 的限流功能,只需要引入相关的jar包依赖. 添加依赖 添加相关模块的Adapter Sentinel为每个构建项目的各个组件都打包成了相应的Adapte ...
- Spring Cloud微服务Sentinel+Apollo限流、熔断实战总结
在Spring Cloud微服务体系中,由于限流熔断组件Hystrix开源版本不在维护,因此国内不少有类似需求的公司已经将眼光转向阿里开源的Sentinel框架.而以下要介绍的正是作者最近两个月的真实 ...
- Spring Cloud微服务限流之Sentinel+Apollo生产实践
Sentinel概述 在基于Spring Cloud构建的微服务体系中,服务之间的调用链路会随着系统的演进变得越来越长,这无疑会增加了整个系统的不可靠因素.在并发流量比较高的情况下,由于网络调用之间存 ...
随机推荐
- java课后实验性问题1
一.一个java类文件中只能有一个公有类吗? 测试代码 public class Test{ public static void main(String[] args){ } public clas ...
- Server2012R2实现活动目录(Active Directory)双域控制器互为冗余
在活动目录中部署两台主控域控制器,两台域控制器互为冗余. Server 2012 R2新建活动目录和DC refer to: https://www.cnblogs.com/jfzhu/p/40061 ...
- Mac 卸载Python3.6
Mac 自带的 Python 已经能够满足我们的需要了,因此很多同学在安装完 Python 之后,又想要将其删除,或者称之为卸载. 对于删除 Python,我们首先要知道其具体都安装了什么,实际上,在 ...
- 重新部署环境之后,总是提示表doesn't have a default value
SQLSTATE[HY000]: General error: 1364 Field 'college' doesn't have a default value 数据库严格模式开启了,解决方法: ...
- UML期末复习题——2.3:UML State Diagram
第三题 状态图 重要概念: 1.定义:事件.状态和转换: 事件:指一件值得注意的事情的发生. 状态:指对象在事件发生之间某时刻所处的情形. 转换:两个状态之间的关系.它表明当某事件发生时,对象从先前 ...
- JAVA将两个byte数组合并为一个
/** * 将两个byte数组合并为一个 * @param data1 要合并的数组1 * @param data2 要合并的数组2 * @return 合并后的新数组 */ public stati ...
- iOS如何将RGB565的原始图像数据转为UIImage对象
我们在做一些图像处理时,往往会涉及到RGB565这种图像数据格式.由于其每个像素仅占2个字节,对于不需要像素透明度的情况下使用RGB565既能基本能保证图像的色彩,又能降低图像数据尺寸,节省带宽.因此 ...
- [maven][转]pom配置之:snapshot快照库和release发布库
在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次.我们知道,maven的依赖管理是基于版本管理的, ...
- keytool命令的使用
## 打印所有证书指纹.如果是cacerts,则指本机安装的jdk的key store:如果是一个jks文件,则是其他key store keytool -list -keystore <cac ...
- 同一个电脑配置两个github账号
mac中.ssh文件夹在根目录下,所以表示成 ~/.ssh/. 一.同一个电脑配置两个github账号1.分别为两个GitHub账号生成SSH密钥 $ cd ~/.ssh $ ssh-keygen - ...