参考:Hystrix Sentinel Resilience4j对比 - 知乎
断路器对比Sentinel、Hystrix、resilience4j
Spring Cloud Config、Apollo、Nacos配置中心选型及对比
| 对比项 | nacos | Spring Cloud Consul | Eureka |
|---|---|---|---|
| 开源 协议 | Apache-2.0 license | AGPL-3.0 license | Apache-2.0 license |
| 最近 更新 | 更新频繁(latest:2.1.1, Aug 8 2022) | 更新频繁(latest:1.5.0, Jul 11 2022) | 已停止更新 |
| 应用内/外 | 外部应用,侵入性小 | 外部应用,侵入性小 | 直接集成到应用中,依赖于应用自身完成服务的注册与发现 |
| CAP原则 | 遵循CP(一致性+分离容忍) 和AP(可用性+分离容忍)原则 | 遵循CP(一致性+分离容忍)原则, 服务注册稍慢,由于其一致性导致了在Leader挂掉时重新选举,期间整个consul服务不可用 | 遵循AP(可用性+分离容忍)原则,有较强的可用性,服务注册快,但一致性较差 |
| 配置中心功能 | 是,符合Spring boot的开发规范,支持动态刷新 | 是 | 否 |
| 访问协议 | HTTP/动态DNS/UDP | HTTP/DNS | HTTP |
| 集成支持 | spring cloud/k8s/dubbo | spring cloud/k8s | 只支持SpringCloud集成 |
| 雪崩保护 | 支持 | 不支持 | 支持 |
| 界面 | 界面友好(中文界面) | 管理界面不友善( 简单英文界面) | 英文界面 |
| 易用性 | 极易,中文文档,案例丰富,社区活跃 | 应用稍复杂 | 容易 |
| 其它特点 | Spring Cloud官方推荐的组件之一 | Spring Cloud官方组件 | Spring Cloud官方组件 |
| 对比项 | nacos | Spring Cloud Consul | Spring Cloud Config |
|---|---|---|---|
| 开源 协议 | Apache-2.0 license | AGPL-3.0 license | Apache-2.0 license |
| 最近 更新 | 更新频繁(latest:2.1.1, Aug 8 2022) | 更新频繁(latest:1.5.0, Jul 11 2022) | 更新频繁(latest:3.1.4, Sep 6 2022) |
| 配置回滚 | 支持 | 支持 | 支持 |
| 多集群多环境 | 支持 | 支持 | 支持 |
| 监听查询 | 支持 | 支持 | 支持 |
| 配置格式校验 | 支持 | 支持 | 支持 |
| 通信协议 | HTTP | HTTP | HTTP |
| 动态调整配置参数 | 支持 | 支持 | 支持 |
| 动态刷新 | 支持 | 支持 | 支持 |
| 高可用 | 支持 | 支持 | 支持 |
| 多数据中心 | 支持 | 支持 | 支持 |
| 案例 | 案例丰富(阿里巴巴,蚂蚁金融,拼多多,爱奇艺等) | 作为配置中心使用,案例较少 | 案例暂未发现 |
| 权限管理 | 支持 | 不支持 | 不支持 |
| 界面 | 界面友好(中文界面) | 管理界面不友善( 简单英文界面) | 没有界面,管理麻烦 |
| 易用性 | 极易,中文文档,案例丰富,社区活跃 | 应用稍复杂 | 依赖繁多,部署和易用性较差(后端存储需要:GIt, Gitlab;配置批量刷新,需要Spring Cloud Bus,依赖Kafka或RabbitMQ) |
| 其它特点 | Spring Cloud官方推荐的组件之一, 文档丰富 | Spring Cloud官方组件,使用前需了解Spring Cloud Config管理规范 | Spring Cloud官方组件, 遵循Spring Cloud Config的配置管理规范 后端存储支持丰富(支持Git、SVN、MySQL、Vault、本地存储等) |
系统自适应: 结合应用的机器负载、CPU 使用率,整体平均响应时间、入口 QPS 和并发线程数等几个维度的监控指标从而决定是否调用进行限流操做
| 比较项 | Sentinel | Resilience4j | Hystrix |
|---|---|---|---|
| 开源 协议 | Apache-2.0 license | Apache-2.0 license | Apache-2.0 license |
| 最近 更新 | 更新频繁(latest:2.1.1, Aug 8 2022) | 更新较慢(latest:1.7.1, Jun 25 2021) | 已停止更新 |
| 特点 |
|
| --- |
| 隔离策略 | 信号量隔离 | 信号量隔离 | 信号量/线程池隔离 |
| 熔断降级策略 | 异常比率/响应时间/异常数 | 异常比率/响应时间 | 异常比率 |
| 控制台 | 实时监控、机器发现、规则管理等能力。 | 不提供 | 提供监控查看 |
| 系统自适应 | 支持( 结合应用的机器负载、CPU 使用率,整体平均响应时间、入口 QPS 和并发线程数等维度进行限流操做 ) | 不支持 | 不支持 |
| 基于注解的支持 | 支持 | 支持 | 支持 |
| 限流 | 基于QPS、调用关系的限流 | 限速器(Rate Limiter)限流 | 有限的支持 |
| 流量模式 | 支持预热模式、匀速器模式、预热排队模式 | 支持简单的Rtate Limiter模式 | 不支持 |
| 业界案例 |
|
| --- |
| 对比项 | Loadbalancer | Ribbon |
|---|---|---|
| 开源 协议 | Apache-2.0 license | Apache-2.0 license |
| 最近 更新 | latest:v3.1.4, Sep 7 2022 | latest:2.4.8, Aug 6 2021 |
| 来源 | Spring Cloud官方组件 | Netflix旗下产品 |
| 说明 | Spring Cloud 采用 LoadBalancer作为 Ribbon 的替代方案, 提供两种负载均衡的客户端:RestTemplate 和 WebClient。 | 目前已停更进维 |
| 对比项 | Loki | ELK |
|---|---|---|
| 开源 协议 | AGPL-3.0 license | ElasticSearch: SSPL+Elastic license 2.0 Logstash: Unknown, Unknown licenses found Kibana: Elastic License 2.0 etc |
| 最近 更新 | latest:v2.6.1, Jul 18 2022 | latest: Elasticsearch: 8.4.1, Aug 30 2022 Logstash: 8.4.1, Aug 30 2022 Kibana: 8.4.1, Aug 30 2022 |
| 部署 | 部署简单轻量 | 部署复杂(需同时部署ElasticSearch, Logstash, Kibana) |
| 操作 | 操作简单 | 操作复杂 |
| 资源占用 | 存储占用资源较少(日志数据压缩存储) | 存储占用资源多 |
| 索引 | 标签索引 | 全文索引 |
| 特点 | 水平可扩展,高可用,多租户 高效,易于操作, | 功能丰富(大多功能用不到) 支持复杂操作 |
| K8s支持 | 天生支持K8s Pod日志存储, 自动发现Pod日志, 支持Pod元数据存储及查询 | 不支持,需专门配置日志收集代理 |