【高性能网关soul学习】3. dubbo代理

3.高性能网关Soul学习之dubbo代理

本文主要目标
1.运行 soul-examples 下面的http服务
2.根据 官方文档,结合dubbo插件,发起http请求soul网关,体验http代理


dubbo代理demo

  1. 本地启动一个zk,默认端口2181

  2. 开启dubbo插件

    1. 在 soul-admin --> 插件管理-> dubbo 设置为开启。
    2. 在dubbo插件的配置中,配置如下:配置dubbo的注册中心。
      {"register":"zookeeper://localhost:2181"}
    3. 插件需要配合依赖 starter 进行使用,具体请看:dubbo用户
  3. 启动 dubbo 服务
    这里我们选择使用examples中的 soul-examples-alibaba-dubbo-service 项目,直接启动即可

    • 查看 example项目的控制台可以看到在最后的打印日志dubbo client register success,表示注册成功
    • 这个时候打开插件列表中的dubbo插件,可以看到多了一个名为 /dubbo 的选择器,和相对应的一组路由
      dubbo插件选择器及路由
  4. 直接请求被网关代理的dubbo接口,调用结果如下。使用http的方式直接调用dubbo接口成功

GET http://localhost:9195/dubbo/findById?id=1

HTTP/1.1 200 OK
Content-Type: application/json
content-length: 111

{
  "code": 200,
  "message": "Access to success!",
  "data": {
    "name": "hello world Soul Alibaba Dubbo, findById",
    "id": "1"
  }
}

Response code: 200 (OK); Time: 363ms; Content length: 111 bytes

dubbo注册源码大致流程

  • 查看demo,可以知道dubbo接口方法注册到soul网关是通过 @SoulDubboClient 注解实现的,通过搜索可以看到是alibabaDubboServiceBeanPostProcessor类在处理该注解
    • SoulAlibabaDubboClientConfiguration配置类启动时加载了一个bean alibabaDubboServiceBeanPostProcessor
    • alibabaDubboServiceBeanPostProcessor 实现了 ApplicationListener
      • 因此启动时候通过 onApplicationEvent 监听event触发对类进行筛选,对于包含 @SoulDubboClient 的method进行解析,并上传到 soul-admin 服务中
      • 上传配置接口 /soul-client/dubbo-register
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页