在Alibaba Sentinel 限流与熔断初探(技巧篇) 的示例中我选择了 sentinel-demo-apache-dubbo 作为突破点,故本文就从该项目入手,看看 Sentinel 是如何对 Dubbo 做的适配,让项目使用方无感知,只需要引入对应的依即可。
sentinel-apache-dubbo-adapter 比较简单,展开如下:
上面的代码应该比较简单,在正式进入源码研究之前,我先抛出如下二个问题:
1、限流、熔断相关的功能是在 Dubbo 的客户端实现还是服务端实现?为什么?
2、如何对 Dubbo 进行功能扩展而无需改动业务代码?
Dubbo 提供了 Filter 机制对功能进行无缝扩展,有关 Dubbo Filter 机制,大家可以查阅笔者的源码研究 Dubbo 系列:Dubbo Filter机制概述。
接下来我们带着上面的问题1开始本章的研究。