Soul源码总结-01-29

  • .跑通hystrix,resilienc4j,sentinel插件
  • 比较3个熔断插件的不同点,输出源码解析与比较文章
  • 总结

Demo

首先启动项目soul-admin以及soul-bootstrap,以soul-examples中的soul-example-http为例,注册到soul网关上。同时在soul-admin插件管理中心开启hystrix插件在这里插入图片描述
同时配置selector以及相关的rule,这里以http://localhost:9195/http/order/findById?id=2为例,制定相应的熔断策略在这里插入图片描述
在这里插入图片描述
设置这些规则以后,我们用superbenchmarker进行压测在这里插入图片描述
从soul网关控制台日志中可以看到以下日志,说明压测会触发hystrix进行断路保护机制,在这里插入图片描述

探究hystrix插件

hystrix插件和其他插件相同,都会执行 AbstractSoulPlugin 类的 execute() 方法,然后在HystrixPlugin中覆写doExecute方法,核心代码如下在这里插入图片描述
为了更好的理解hystrix工作原理,这里附上官方文档flow chart
在这里插入图片描述
简单来讲,hystrix会将一个请求包装成一个 HystrixCommand 或者 HystrixObservableCommand 对象,然后执行Hystrix command,然后根据cache以及相应的隔离模式来进行fallback处理或者返回一个成功的response。值得注意的是,HystrixCommand执行的时候都会直接或间接的调用toObservable().toBlocking().toFuture(),因此每个command都依赖于Observable的实现。
在Hystrix插件中提供了一个Command接口,并且根据Semaphore隔离模式和线程池隔离模式实现了两个不同的Command类: HystrixCommandHystrixCommandOnThread
在HystrixPlugin会根据soul-admin同步的数据创建HystrixHandle对象,并通过fetchCommand()方法根据隔离模式来创建不同的command来执行。核心代码如下
在这里插入图片描述

总结

Hystrix插件的底层原理大概就是如上所述,如果想深究Hystrix的工作原理,可以参考官方文档: Hystrix: how it works. Soul网关里所做的就是把Hystrix依赖做了又一层的封装,让Hystrix插件化来体现热插拔的设计思想。稍后会对resilienc4j以及sentinel插件进行进一步解析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值