服务容错&Hystrix|学习笔记

简介: 快速学习服务容错&Hystrix

开发者学堂课程【阿里巴巴分布式服务框架 Dubbo 快速入门:重试次数】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/624/detail/9475


服务容错&;Hystrix


内容简介:

一、集群容错

二、集群容错模式

三、集群模式配置

四、整合 Hystrix

五、进行测试


一、集群容错

在集群调用失败时,Dubbo 提供了多种容错方案,缺省为 fallover 重试。


二、集群容错模式

1、Failover Cluster:

失败自动切换,例如 A 服务调 B 服务,当 B 服务超时后,配置一个重试次数 retries=“2”,可以重新切换到能提供 B 服务的其他机器。

2、Failfast Cluster:

快速失败,只发起一次调用,失败即立即报错,通常用于非幂等性的写操作,比如新增记录。

3、Failsafe Cluster:

失败安全,出现异常时,直接忽略。通常勇于写入审计日志等操作。

4、Failback Cluster:

失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作,一次成功调用的操作。

5、Forking Cluster:

并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks=“2”来设置最大并行数。

6、Broadcast Cluster:

广播调用所有提供者,逐个调用,任意一台报错则报错。通常用于通知所有提供者更新缓存或日志等本地资源信息


三、集群模式配置

按照以下示例在服务提供方和消费方配置集群模式:

<dubbo:service cluster=”failsafe”/><dubbo:reference cluster=”failsafe:/>标签中不写默认为失败自动切换。


四、整合 Hystrix

Hystrix 旨在通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

Hystrix 具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以及监控和被指等功能。(此技术的详细细节已在 spring-boot 课程中讲过)

如何用 Hystrix 进行服务容错?

第一步导入 spring-cloud hystix starter 依赖

<dependency>

<groupld>org.springframework.cloud</groupld>

<artifactld>spring-cloud-starter-netflix-hystrix</artifactld>

<version>1 4.4.RELEASE</version>

</dependency>

第二步在 Application 类上增加@EnableHystrix 来启用 hystrix starter:

@SpringBootApplication

@EnableHystrix

public class ProviderApplication {


五、进行测试

1、在服务提供者处导入相关依赖

首先编辑 Edit starters 功能,选中 spring-cloudery 里的短路保护(如下两张图)

image.png

image.png

第二步开启服务容错:@EnableHystrix

第三步提供的服务,获取用户地址列表的,让其超时,服务可能在运行期间出现异常,判断是否出现异常,代码为

if(Math.random()>0.5){

throw  new  RuntimeException();

}

服务可能会不定期出现异常,若出现异常,只需要将方法写上注解,代码为@HystrixCommand,如果出现异常就可以直接进行补错。

2、启动提供者

如果出现错误,也是远程调用出现错误,解决方法为:在调用消费者中也导入 Edit Starter,同时在 BootOrderServiceConsumer 加上服务容错的功能,代码为@EnableHystrix

也在 OrderServiceImpl.java 中加上注解。

代码为:

@ HystrixCommand(fallbackMethod=“hello“)

//有一个hello方法进行容错

public Listhello (String userId) {

//TODO Auto- generated method stub

//出错的时候进行调用

return Arrays.asList(new UserAddress(10,”测试地址”,“1“,”测试“,”测试“,isDefault)

//出错时返回另外一个用户

3、启动消费者

由于远程调用 userService 有可能出错,多次调用,看出错了是否能走 hello 方法,多次刷新,测试结果有正确的,也有出错的,因此可以用 Hystrix 方便地模拟出,方法出错之后,会返回什么效果。


相关文章
|
6月前
服务熔断器-Hystrix
服务熔断器-Hystrix
58 2
|
5月前
springCloud之服务降级熔断Hystrix、OpenFeign
springCloud之服务降级熔断Hystrix、OpenFeign
327 0
|
2月前
|
Java 对象存储 开发者
故障隔离与容错处理:Hystrix在Spring Cloud和Netflix OSS中的应用
故障隔离与容错处理:Hystrix在Spring Cloud和Netflix OSS中的应用
53 3
|
5月前
|
监控 Java UED
Java一分钟之-Spring Cloud Netflix Hystrix:容错管理
【6月更文挑战第9天】Spring Cloud Hystrix是用于微服务容错管理的库,通过断路器模式防止服务雪崩。本文介绍了Hystrix的基本概念,如断路器、线程隔离和fallback机制,并展示了如何快速上手,包括添加依赖、启用注解和编写Hystrix命令。此外,还讨论了常见问题(如断路器打开、资源泄漏和不当的Fallback策略)及其解决方案。通过自定义Hystrix指标监控,可以进一步优化系统性能。理解Hystrix工作原理并适时调整配置,对于构建健壮的微服务至关重要。
200 3
|
6月前
|
SpringCloudAlibaba Java 测试技术
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
152 1
|
6月前
|
监控 微服务
Hystrix熔断器设计思想(学习笔记)附(服务监控hystrixDashboard识图)
Hystrix熔断器设计思想(学习笔记)附(服务监控hystrixDashboard识图)
56 0
|
6月前
|
监控 Java Sentinel
springcloud4-服务熔断hystrix及sentinel
springcloud4-服务熔断hystrix及sentinel
68 0
|
6月前
|
监控 数据可视化 Java
Spring Cloud Hystrix:服务容错保护
Spring Cloud Hystrix:服务容错保护
213 0
|
缓存 运维 监控
微服务技术系列教程(22) - SpringCloud- 服务保护机制Hystrix
微服务技术系列教程(22) - SpringCloud- 服务保护机制Hystrix
106 0
|
6月前
|
监控 Java API
Spring cloud Hystrix 、Dashboard、API(zuul)相关报错
Spring cloud Hystrix 、Dashboard、API(zuul)相关报错
61 2