常用于实现熔断降级的框架有Hystrix
、Sentinel
,我们常说的Spring Cloud
项目说的其实是Spring Cloud Netflix
,Hystrix
以及前面学习过的Ribbon
都是Netflix
系的家族成员,所以使用Hystrix
可以非常简单的与当前项目中使用到的OpenFeign
、Ribbon
整合,但笔者并没有选择Hystrix
,而是选择阿里系的Sentinel
。
为什么选择Sentinel
而不是Hystrix
?从接入简单考虑可能选择Hystrix
是不错的选择,但笔者对Hystrix
比较陌生,陌生到只听过名字。笔记在去年做的Dubbo
项目中使用过Sentinel
,所以对Sentinel
很熟悉,并且看过它的一点底层源码,例如,如何统计当前时间窗口的QPS
、计算并发使用的线程数等。所以笔者选择的是自己熟悉的。
Sentinel
与Hystrix
谁更好?由于不了解Hystrix
,所以这个问题笔者回答不了,但合适最重要,能够达到目的,并且不会消耗应用资源,不影响性能就可以。并不是不愿意去学Hystrix
,只是觉得没有必要,学一个这种框架从入门到熟悉部分源码也就两三天时间。使用Sentinel
有一个好处,文档是中文的,使用文档介绍的也比较齐全,对入门较友好。
按照惯性,本篇先介绍如何将Sentinel
与OpenFeign
整合使用,并且熔断降级策略使用动态配置,将配置存储在配置中心。
sck-demo
项目源码地址:sck-demo
(这是一个使用Spring Cloud Ku