多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[toc] ![](https://img.kancloud.cn/c8/be/c8be279bf16bb0a5540744f8634b2062_541x166.png) ![](https://img.kancloud.cn/32/48/3248196775118577ce67d82265a3a837_601x96.png) ## 技术选型 与Hystrix进行对比。 | 对比项 | Sentinel | Hystrix | | --- | --- | --- | | 隔离策略 | 基于并发数(信号量隔离) | 线程池隔离/信号量隔离 | | 熔断降级策略 | 基于响应时间或失败比率 | 基于失败比率 | | 实时指标实现 | 滑动窗口 | 滑动窗口(基于 RxJava) | | 规则配置 | 支持多种数据源 | 支持多种数据源 | | 扩展性 | 多个扩展点 | 插件的形式 | | 基于注解的支持 | 即将发布 | 支持 | | 调用链路信息 | 支持同步调用 | 不支持 | | 限流 | 基于 QPS / 并发数,支持基于调用关系的限流 | 不支持 | | 流量整形 | 支持慢启动、匀速器模式 | 不支持 | | 系统负载保护 | 支持 | 不支持 | | 实时监控 API | 各式各样 | 较为简单 | | 控制台 | 开箱即用,可配置规则、查看秒级监控、机器发现等 | 不完善 | | 常见框架的适配 | Servlet、Spring Cloud、Dubbo、gRPC 等 | Servlet、Spring Cloud Netflix | ### 隔离策略 #### 信号量隔离 线程池隔离的思想是: 把tomcat中先一个线程池分成两个线程池。比如tomcat线程池中初始有200个线程, 分成两个线程池A , B后, A线程池有50个线程可以用, B线程池有150个线程可以用。将访问量较大的接口单独配置给一个线程池, 其他接口使用另一个线程池 , 使其访问量激增时不要影响其他接口的调用。 #### 信号量隔离 可以把信号量理解成一个计数器 , 对这个计数器在`单位时间内`规定一个计数上限, 代表一个接口被访问的最大量。 ## Sentinel 是如何工作的 Sentinel 的主要工作机制如下: * 对主流框架提供适配或者显示的 API,来定义需要保护的资源,并提供设施对资源进行实时统计和调用链路分析。 * 根据预设的规则,结合对资源的实时统计信息,对流量进行控制。同时,Sentinel 提供开放的接口,方便您定义及改变规则。 * Sentinel 提供实时的监控系统,方便您快速了解目前系统的状态。 ## 我们可以从Sentinel中学到什么 ### 插槽化设计 在 Sentinel 里面,所有的资源都对应一个资源名称以及一个 Entry。Entry 可以通过对主流框架的适配自动创建,也可以通过注解的方式或调用 API 显式创建;每一个 Entry 创建的时候,同时也会创建一系列功能插槽(slot chain)。