1、开启多个Eureka Client服务实例
2、修改Ribbon项目:
①、在Ribbon项目中添加spring-cloud-starter-hystrix依赖
②、在Ribbon项目启动类中添加@EnableCircuitBreaker注解开启断路器功能
③、在服务消费端的Service中添加@HystrixCommand注解来指定回调方法
④、创建请求命令:
1、同步执行
2、异步执行:重新定义实现
两者皆发射一次observable
⑤、定义服务降级:
使用@HystrixCommand中的fallbackMethod参数指定具体实现服务降级的方法
⑥、异常处理:
异常的获取——只要在fallback实现方法中增加Throwable e对象的定义
⑦、命令名称、分组和线程池划分:
1、命令名称:commandKey
2、分组:groupKey
3、线程池划分:threadPoolKey
Hystrix会根据命令组组织信息统计
⑧、请求缓存:
1、@CacheResult:用来标记请求命令的结果应该被缓存,与@HystrixCommand注解结合使用
2、@CacheRemove:用来让请求命令的缓存失效,失效的缓存根据定义的key决定
3、@CacheKey:用来在请求的参数上标记,使其作为缓存的Key值,如果没有标注则会使用所有参数
4、定义缓存Key:通过@CacheResult和@CacheRemove的cacheKeyMethod方法指定具体的生成函数
⑨、缓存清理:
@CacheRemove中的CommandKey是必须的,指定请求缓存的请求命令
⑩、请求合并:
Hystrix提供了HystrixCollapser来实现请求的合并,以减少通信消耗和线程数的占用