Spring Cloud Hystrix 原理简介和实现(四)

简介: Spring Cloud Hystrix 原理简介和实现

缓存使用过程中的问题



在缓存使用过程中,我们需要在每次使用缓存的请求前后对HystrixRequestContext进行初始化和关闭,否则会出现如下异常:


java.lang.IllegalStateException: Request caching is not available.


这里我们通过使用过滤器,在每个请求前后初始化和关闭HystrixRequestContext来解决该问题:



微信图片_20220414205330.png


请求合并


微服务系统中的服务间通信,需要通过远程调用来实现,随着调用次数越来越多,占用线程资源也会越来越多。Hystrix中提供了@HystrixCollapser用于合并请求,从而达到减少通信消耗及线程数量的效果。


@HystrixCollapser的常用属性


batchMethod:用于设置请求合并的方法;


collapserProperties:请求合并属性,用于控制实例属性,有很多;


timerDelayInMilliseconds:collapserProperties中的属性,用于控制每隔多少时间合并一次请求;



功能演示



在UserHystrixController中添加testCollapser方法,这里我们先进行两次服务调用,再间隔200ms以后进行第三次服务调用:



微信图片_20220414205333.png



使用@HystrixCollapser实现请求合并,所有对getUserFuture的的多次调用都会转化为对getUserByIds的单次调用:



微信图片_20220414205337.png



访问接口测试http://localhost:8401/user/testCollapser,由于我们设置了100毫秒进行一次请求合并,前两次被合并,最后一次自己单独合并了。



微信图片_20220414205340.png



微信图片_20220414205344.png



Hystrix的常用配置


全局配置


微信图片_20220414205348.png



实例配置


微信图片_20220414205351.png




配置文件中相关key的说明


HystrixComandKey对应@HystrixCommand中的commandKey属性;


HystrixCollapserKey对应@HystrixCollapser注解中的collapserKey属性;


HystrixThreadPoolKey对应@HystrixCommand中的threadPoolKey属性



源码地址


https://gitee.com/pingfanrenbiji/springcloud-learning


使用到的模块


微信图片_20220414205356.png



参考文章


https://my.oschina.net/dyyweb/blog/1919586

https://blog.csdn.net/zhenghongcs/article/details/100984837


相关文章
|
27天前
|
安全 Java 数据安全/隐私保护
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
62 1
|
27天前
|
存储 XML 缓存
【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache功能的开发实战指南(一)
【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache功能的开发实战指南
62 0
|
21小时前
|
安全 Java API
Spring工厂API与原理
Spring工厂API与原理
22 10
|
1天前
|
监控 Java 微服务
第八章 Spring Cloud 之 Hystrix
第八章 Spring Cloud 之 Hystrix
|
24天前
Springcloud-ribbon和hystrix配置
Springcloud-ribbon和hystrix配置
7 0
|
27天前
|
XML 缓存 Java
天天用 Spring,bean 实例化原理你懂吗
天天用 Spring,bean 实例化原理你懂吗
17 0
|
1月前
|
SpringCloudAlibaba Java 测试技术
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
39 1
|
1月前
|
Java Nacos Sentinel
Spring Cloud Alibaba 面试题及答案整理,最新面试题
Spring Cloud Alibaba 面试题及答案整理,最新面试题
204 0
|
1月前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
148 0
|
1月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
98 0