Dubbo服务示例演示
官方说明文档:https://dromara.org/zh-cn/docs/soul/user-dubbo.html
启动示例项目
dubbo以Zookeeper作为注册中心,所以需要本地先启动zookeeper。
启动了zookeeper之后,接着还要在我们的后台管理启动dubbo的插件。
以上两步完成之后,则可以启动我们的示例代码,直接run我们的TestAlibabaDubboApplication
即可启动。
启动完成之后,和Http协议同样,我们的Soul会主动发现我们的规则,在插件管理的dubbo下即可看到我们所定义的规则了。
访问测试
我们以findById这个方法为例,可以看到通过访问9195端口即可访问到我们的示例项目的方法。
当我们把规则关掉之后,就会发现找不到规则,无法访问服务器。
再看我们示例代码中怎么实现的,在每个方法上使用@SoulDubboClient
注解,将该方法配置到Soul的规则里,就可以通过Suol网关代理访问了。
@Override
@SoulDubboClient(path = "/findById", desc = "Query by Id")
public DubboTest findById(final String id) {
DubboTest dubboTest = new DubboTest();
dubboTest.setId(id);
dubboTest.setName("hello world Soul Alibaba Dubbo, findById");
return dubboTest;
}
Dubbo协议支持的插件
通过Debug可以看出,execute
方法中会遍历如下插件进行操作,目前我们只配置了dubbo
,也就是它的Selector和Rule,至于其他几个插件,后面研究一下再做说明。
plugin | class |
---|---|
sign | SignPlugin |
waf | WafPlugin |
rate_limiter | RateLimiterPlugin |
hystrix | HystrixPlugin: |
resilience4j | Resilience4JPlugin |
dubbo | AlibabaDubboPlugin |
monitor | MonitorPlugin |
先看一下dubbo插件的玩法:它提供了选择器和规则两级配置。
通过选择器我们配置了所有dubbo协议的请求经由后续规则处理。
后面的规则指定了具体调用的方法。