服务容错保护:Spring Cloud Hystrix

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来实现请求的合并,以减少通信消耗和线程数的占用

你可能感兴趣的:(服务容错保护:Spring Cloud Hystrix)