服务容错思路和组件|学习笔记

简介: 快速学习服务容错思路和组件

开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第二阶段服务容错思路和组件】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/684/detail/11870


服务容错思路和组件

 

内容介绍:

一、常见的容错思路

二、常见的容错组件

 

要防止雪崩的扩散,我们就要做好服务的容错,容错说白了就是保护自己不被猪队友拖垮的一些措施,下面介绍常见的服务容错思路和组件。

一、常见的容错思路

常见的容错思路有隔离、超时、限流、熔断、降级这几种,下面分别介绍一下。

1、隔离

它是指将系统按照一定的原则划分为若干个服务模块,各个模块之间相对独立,无强依赖。

当有故障发生时,能将问题和影响隔离在某个模块内部,而不扩散风险,不波及其它模块,不影响整体的系统服务。常见的隔离方式有:线程池隔离和信号量隔离.

image.png

⑴线程池隔离:A 服务中每个方法都有一个线程值,如果b方法出现问题了,就会出现线程堆积,方法 b 也只是消耗其中的线程,不会影响到方法 a 和 c。

2、超时

在上游服务调用下游服务的时候,设置一个最大响应时间,如果超过这个时间,下游未作出反应,就断开请求,释放掉线程。

 image.png

3、限流

限流就是限制系统的输入和输出流量已达到保护系统的目的。为了保证系统的稳固运行,一旦达到的需要限制的阈值,就需要限制流量并采取少量措施以完成限制流量的目的。

image.png

4、熔断

在互联网系统中,当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用。这种牺牲局部,保全整体的措施就叫做熔断。

image.png

⑴服务熔断一般有三种状态:

①熔断关闭状态(Closed)

服务没有故障时,熔断器所处的状态,对调用方的调用不做任何限制

②熔断开启状态(Open)

后续对该服务接口的调用不再经过网络,直接执行本地的fallback方法

③半熔断状态(Half-Open)

尝试恢复服务调用,允许有限的流量调用该服务,并监控调用成功率。如果成功率达到预期,则说明服务已恢复,进入熔断关闭状态;如果成功率仍旧很低,则重新进入熔断关闭状态。

5、降级

降级其实就是为服务提供一个托底方案, 一旦服务无法正常调用,就使用托底方案。

image.png

A服务调用B服务时,当A服务发现B服务有问题,立即断掉和B服务的访问,使用备用方案。

 

二、常见的容错组件

1、Hystrix

Hystrix 是由 Netflix 开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。

2、Resilience4l

Resilicence4J 一款非常轻量、简单,并且文档非常清晰、丰富的熔断工具,这也是Hystrix 官方推荐的替代产品。不仅如此,Resilicence4j 还原生支持 Spring Boot 1.x/2.x,而且监控也支持和 prometheus 等多款主流产品进行整合。

3、 Sentinel

Sentinel 是阿里巴巴开源的一款断路器实现,本身在阿里内部已经被大规模采用,非常稳定。

下面是三个组件在各方面的对比:

 

Sentinel

Hystrix

resilience4j

隔离策略

信号量隔离(并发线程数限

线程池隔离/信号

量隔离

信号星隔离

 

熔断降级策略

基于响应时间、异常比率、异常数

 

基于异常比率

基于异常比率、响应时

实时统计实现

滑动窗口(LeapArray)

滑动窗口(基于 Rxlava)

Ring Bit Buffer

动态规则配置

支持多种数据源

支持多种数据源

有限支持

扩展性

多个扩展点

插件的形式

接口的形式

基于注解的支持

支持

支持

支持

限流

基于 QPS,支持基于调用关系的限流

有限的支持

Rate Limite

流量整形

支持预热模式、匀速器模式、预热排队模式

不支持

简单的 Rate Limiter 模

系统自适应保护

支持

不支持

不支持

控制台

提供开箱即用的控制台,可配置规则、查看秒级监控、机器发现等

简单的监控查看

不提供控制台,可对接其它监控系统

相关文章
|
存储 缓存 网络协议
Linux系统之ARP命令的基本使用
【7月更文挑战第2天】Linux系统之ARP命令的基本使用
621 3
|
Java Shell 数据安全/隐私保护
部署基于Dragonwell的Java运行环境
本场景介绍如何部署和使用Dragonwell运行环境。
|
弹性计算 Cloud Native Serverless
云原生应用示例:智能物流管理系统
在电商行业的快速发展中,某企业借助阿里云服务构建了一个云原生智能物流管理系统。此系统基于微服务架构,利用ECS、Kubernetes、ESS及RDS等服务来支撑其核心功能,并采用Serverless函数计算FC处理前端需求,配合消息队列MQ确保通信顺畅。ARMS的应用实现了性能监测与故障快速响应。同时,通过PAI分析数据以提高物流效率,OSS与CDN则优化了文件存储与全球访问速度。此外,系统还整合了Docker及GitLab CI/CD以支持快速迭代,并通过WAF、SLS等工具保障了安全性和合规性,整体上提供了高效、智能且低成本的物流解决方案。
419 7
|
3月前
|
缓存 供应链 定位技术
1688 item_search_img 接口深度分析及 Python 实现
1688拍立淘接口通过图片搜索商品,支持URL或本地图,用于找供应商、比价、选品等。基于图像识别技术,返回同款或相似商品信息,适用于供应链管理。需用appkey+签名认证,支持分页与排序,Python实现调用方便。注意图片质量与格式,控制调用频率,可构建高效的供应链工具。
|
数据采集 Web App开发 JavaScript
利用Selenium和XPath抓取JavaScript动态加载内容的实践案例
利用Selenium和XPath抓取JavaScript动态加载内容的实践案例
|
10月前
|
Linux
Linux 操作系统
在 Linux 中,UID(用户 ID)是标识用户身份的重要概念。UID 唯一标识每个用户,通过 UID 可区分不同用户类别:UID 0 为超级用户,1-999 为系统用户,1000 及以上为普通用户。因此,正确选项为:UID 标识用户、可区分用户类别、普通用户 UID 大于 1000。
|
存储 SQL 分布式计算
MaxCompute产品使用合集之表中的某个列设置为string类型,并且超过了8M,该如何处理
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
308 8
|
9月前
|
5G 网络架构 UED
网速只拼Mbps?解码网速真相的五大关键因素
Mbps(兆比特每秒)是衡量数据传输速度的单位,表示每秒传输的百万比特数。它是评估网络性能的核心指标,广泛应用于家用宽带、移动网络和企业级网络中。Mbps 数值越高,理论上数据传输越快,但实际体验还受网络拥塞、丢包率和信号强度等因素影响。例如,在网络高峰时段或信号较弱的地方,即使Mbps数值高,也可能出现卡顿。5G和光纤技术显著提升了Mbps速率,但仍需考虑硬件设备如路由器和网卡的性能瓶颈。理解Mbps及其影响因素,有助于用户选择合适的网络服务并优化网络体验。
997 1
|
人工智能 自然语言处理 机器人
Prompt learning 教学[进阶篇]:简介Prompt框架并给出自然语言处理技术:Few-Shot Prompting、Self-Consistency等;项目实战搭建知识库内容机器人
Prompt learning 教学[进阶篇]:简介Prompt框架并给出自然语言处理技术:Few-Shot Prompting、Self-Consistency等;项目实战搭建知识库内容机器人
Prompt learning 教学[进阶篇]:简介Prompt框架并给出自然语言处理技术:Few-Shot Prompting、Self-Consistency等;项目实战搭建知识库内容机器人
|
关系型数据库 MySQL 数据库连接
MySQL 1040 - Too many connections 如何解决?
【10月更文挑战第11天】MySQL 1040 - Too many connections 如何解决?
1341 1