断路器(Hystrix Ribbon)
2019-04-02 本文已影响0人
喽喽喽被使用
-
【服务中心】集群,Eureka Server
-
【服务提供者】集群,Eureka Client
-
【服务消费者】应用,Eureka Ribbon
-
未加熔断机制,测试
4.1 关闭【服务提供者】中的某个服务;
4.2 访问地址http://localhost:52610/ribbonInfo,多次刷新(肯定出错,嘻嘻)
访问52601会出现短暂的阻塞等待,假如,正式环境,访问量巨大,就会有服务崩溃的风险,甚至是连锁反应(雪崩)
熔断机制,保护您的应用安全,是您的贴身陪伴!!!(访问不通时,会做出及时响应) -
修改【服务消费者】Eureka Ribbon,假如熔断机制
5.1 pom文件添加依赖:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>
5.2 启动类添加注解
@EnableHystrix //启用hystrix熔断机制相关配置
5.3 修改业务层 EurekaRibbonService
@Service public class EurekaRibbonService { @Autowired RestTemplate restTemplate; @HystrixCommand(fallbackMethod = "getInfoFailure") //新增@HystrixCommand注解,设置服务调用失败的回调方法 fallbackMethod = "getInfoFailure" public String getInfo() { System.out.println("调用服务 EUREKA-CLIENT/info"); String message = restTemplate.getForObject("http://EUREKA-CLIENT/info", String.class); System.out.println("调用 EUREKA-CLIENT/info 返回信息: " + message); System.out.println("调用 EUREKA-CLIENT/info 成功!"); return message; } public String getInfoFailure() { return "网络繁忙,请稍后重试-_-,服务消费方返回的信息"; } }
-
重启【服务提供者】Eureka Client、【服务消费者】Eureka Ribbon集群
-
再试试上面的操作,不出意外,是这样吧,骚年!
【断路器 Ribbon】结束!!!
ps:
1. 集群注册中心可能会导致不同服务注册到不同节点,效果不是很明显(比如,正常情况某些端口你的访问不到!!!正常现象)
2. 其实阻塞等待时间还好,本人猜测是Spring框架做过处理,所以和加入熔断器之后的等待时间差不多,不是所有工作别人都能帮咱们做好的!!!