发表于: 2020-07-28 21:00:29

1 1395


今天完成的事情:

服务降级:向客户端返回一个友好提示,不让客户端等待,fallback。总的来说相当于是一个兜底的方法。

哪些情况下会发生服务降级:

1.程序运行异常。

2.超时。

3.服务熔断触发服务降级。

4.线程池/信号量打满导致服务降级。


服务降级可以用在服务端,也可以用在客户端,不过一般常用于客户端。

具体实现:

导入依赖:

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

配置yml文件;

在主启动类上添加@EnableHystrix注解。

然后在conroller方法上添加@HystrixCommand注解:

@HystrixCommand(fallbackMethod = "portHandler")
@GetMapping(value = "/clientB/port")
public String port(){
return feignStudentService.port();
}

public String portHandler(){
return "请稍后重试";
}

相当于如果请求/clientB/port出错后使用portHandler方法。

测试:

由于只启动了8081端口的服务端,所以当轮询到8080端口时请求会出错,于是便服务降级到portHandler方法,返回提示。

还可以在注解上添加commandProperties属性来设置返回时间:

如图所示当请求超过1500ms时就直接服务降级。


服务熔断:达到最大服务访问后,直接拒绝访问,然后调用服务降级的方法返回友好提示。类似保险丝。

服务降级——进而熔断——>恢复调用链路

熔断机制可以在检测节点微服务调用响应正常后,恢复调用链路

服务熔断使用很简单,只需要在服务降级命令的基础上加一些代码即可。

服务限流:秒杀等高并发操作,严禁一窝蜂的过来拥挤,一秒钟N个有序进行。


使用nginx代理两台web:

如果其中一台service挂了,并不影响另一台的使用,如果随机到挂了的那一台,会有友好提示:



将整个项目部署到服务器:

测试没问题:

提交任务了。

收获:学会使用Hystrix服务降级与服务熔断。

明天计划完成的事情:深度思考,准备复盘。


返回列表 返回列表
评论

    分享到