1. 前言
微服务拥有完整的额熔断机制,比如限流,隔离,熔断等。具体详细信息还需要自己去查找资料研究一下。当我们的某个微服务中的某个接口出现错误后,这个微服务不会挂掉,而是以一种“优雅”的方式返回给用户回应。
2. 断路器的作用
首先,由于断路器允许开发人员处理服务故障,客户端可以以一种优雅的方式随时间动态地适应服务可用性的变化。
其次,在微服务架构中共享状态的断路器提供了网络效果,可以显著提高故障响应能力。
第三,断路器与智能路由和负载均衡相结合,可以自动用健康的服务实例替换故障的服务实例,从而促进自修复。
3. 代码的编写
3.1 加入依赖,修改父pom文件
熔断有两种依赖,一个是专业的熔断器:hystrix。一个是我们用于微服务之间通信的openfeign。其中openfeign已经包含了hystrix。但是为了学习熔断,我们还是使用hystrix。
我们在my-user和my-student的微服务中都加入这个依赖。
3.2 加入注解StuApplication.java
以my-student微服务为例
修改StuApplication.java,加入注解
3.3 修改配置文件my-student-dev.yml
3.4 加入断路器函数
可见我们在接口函数上面分别加入了熔断器
这段话的意思是指:若下面函数(getStudent)出现错误的时候,熔断器便自动会去执行postFallBack这个方法。commandProperties={…}:服务降级的一些设置,当调用函数等待超过5s,就会自动发生服务降级,去执行postFallBack。
其他函数也是加入如上两个断路器设置。
3.5 熔断函数
设计期望:当发生熔断后,返回前端代码201。
4. 总结
熔断有很多策略,会设计到很多知识,这里展示的只是一个最简单的应用。还没想到如何测试熔断,所以先写上再说。