soul网关学习笔记三

目录

一、dubbo服务接入网关

二、源码分析

三、今天的学习分析、总结


今天是学习soul网关的第三天,今天的目标是使用soul项目提供的dubbo例子,同样业务项目中dubbo协议调用的服务可以接入soul网关。

一、dubbo服务接入网关

soul官方源码中,提供了dubbo协议服务的例子:

soul-examples-dubbo下soul-examples-alibaba-dubbo-service项目。先看下相关配置文件,application.yml下的配置与昨天学习http的例子几乎是一样,在此就不再赘述。运行TestAlibabaDubboApplication,这次启动报错了,根据出错提示无法连接zookeeper。启动zookeeper,然后运行TestAlibabaDubboApplication,这次启动成功。

测试是否成功接入网关,在Postman中测试:

没有请求成功,提示未找到对应的选择器,检查我们的配置。于是登录soul-admin查看:dubbo插件还关闭着,然后编辑,开启dubbo插件

因为 Soul Bootstrap 和 Soul Admin 暂时不支持插件修改的自动加载,所以我们此时需要手动重启下。再次请求:

总结:

根据以上的摸索,在dubbo协议的服务中,如何引入soul网关:

1、修改 pom.xml 文件,引入 soul-client-apache-dubbo 依赖,它是 Soul 对 Apache Dubbo 2.7.X 的集成支持。

<!-- 引入 Soul 针对 Dubbo 的集成的依赖 -->

<dependency>

<groupId>org.dromara</groupId>

<artifactId>soul-client-apache-dubbo</artifactId>

<version>2.1.2-RELEASE</version>

</dependency>

友情提示:如果使用 Alibaba Dubbo 2.6.X 的话,引入 soul-client-alibaba-dubbo 依赖。

2、在application.yml中,开启soul网关配置:

soul:

  dubbo:

    adminUrl: http://localhost:9095

    contextPath: /dubbo

appName: dubbo

3、在业务调用接口使用@SoulDubboClient注解

 

二、源码分析

在soul-admin的元数据中,我们可以看到dubbo-example里面接口信息,对于soul网关来说这些就是每一个服务的元数据信息,网关根据我们的请求查找对应的元数据,对请求进行转发,过滤,负载,那么这些元数据是如何记录到soul中的?

在官方提供的dubbo-example中DubboTestService中可以发现@SoulDubboClient注解,查看SoulDubboClient注解,可以看到有path、ruleName、enable等字段,再看看哪里使用了该注解。

根据引用查找发现AlibabaDubboServiceBeanPostProcessor当中,引用了SoulDubboClient,并且发现了一段很重要的代码:

RegisterUtils.doRegister(buildJsonParams(serviceBean, soulDubboClient, method), url, RpcTypeEnum.DUBBO);

查看AlibabaDubboServiceBeanPostProcessor源码,我们了解到如下内容:

1、在onApplicationEvent中,获取业务项目中所有的@service注解的业务类;

2、获取业务类中带有@SoulDubboClient注解的方法;

3、根据SoulDubboClient注解的内容,通过RegisterUtils.doRegister()方法向soul-admin注册该方法。

这样我们也就知道,soul-admin是如何获取到这些元数据的。网关有了这些元数据,就可以对其进行相应的操作。那么,soul-admin又是如何通知Soul Bootstrap?

根据控制台打印的日志:

可以看到初始化dubbo引用的打印日志,那么就去查看ApplicationConfigCache源码。ApplicationConfigCache这里主要是缓存了业务接口的配置。再查看对应的引用可以找到:

然后再继续向上溯源,可以知道网关是以订阅的模式同步这些元数据,同步的方法就要查看对应的各类同步中心。

 

三、今天的学习分析、总结

  1. 通过对官方例子dubbo-example的使用,了解soul对dubbo服务的支持;
  2. 根据业务代码使用的SoulDubboClient入手,知道业务接口是如何注册到soul-admin;
  3. 之后再去思考soul-bootstrap又是如何同步业务的接口、网关设置信息;
  4. 如此不断的往上溯源很有意思,不过就是很容易很其他的类干扰,去了解其他的内容。
  5. 路漫漫,先针对一个内容点去深度了解,再慢慢去了解广度的知识。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值