Soul-源码阅读4-接入sofa应用

今天计划:
1.运行examples下面的 sofa-rpc服务
2.学习文档,结合sofa插件,发起http请求soul网关,体验sofa代理

准备工作

  1. 启动下mysql和zookeeper

  2. 启动zk

  3. 启动soul-admin 和 soul-bootstrap

  4. 先需要设置 sofa 插件 的注册中心,因为 Soul Bootstrap 服务网关需要从注册中心获取到 sofa 服务的实例列表。进入界面:系统管理 --> 插件管理 找到插件:sofa,点击编辑,将状态修改为开启(是个开关图标)
    在这里插入图片描述

  5. 运行 soul-example 目录 的 soul-examples-sofa 工程

前人老哥踩坑记录

  • 如果请求加上参数运行不成功,bug
    参考老哥博客:https://blog.csdn.net/baidu_27627251/article/details/112726694
    需要更新最新版版本:修复pr描述:https://github.com/dromara/soul/pull/992

运行examples下面的 sofa-rpc服务

1、启动后,请求接口一直失败,看日志台报错,后面看bootstrap的日志台中没有sofa插件,

2021-01-18 19:42:54.510 ERROR 16624 --- [-work-threads-2] o.d.soul.plugin.base.utils.CheckUtils    : can not match selector data: divide

2021-01-18 19:22:48.722  INFO 16624 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[global] [org.dromara.soul.plugin.global.GlobalPlugin]
2021-01-18 19:22:48.722  INFO 16624 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[sign] [org.dromara.soul.plugin.sign.SignPlugin]
2021-01-18 19:22:48.722  INFO 16624 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[waf] [org.dromara.soul.plugin.waf.WafPlugin]
2021-01-18 19:22:48.722  INFO 16624 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[rate_limiter] [org.dromara.soul.plugin.ratelimiter.RateLimiterPlugin]
2021-01-18 19:22:48.722  INFO 16624 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[hystrix] [org.dromara.soul.plugin.hystrix.HystrixPlugin]
2021-01-18 19:22:48.722  INFO 16624 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[resilience4j] [org.dromara.soul.plugin.resilience4j.Resilience4JPlugin]
2021-01-18 19:22:48.722  INFO 16624 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[divide] [org.dromara.soul.plugin.divide.DividePlugin]
2021-01-18 19:22:48.722  INFO 16624 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[webClient] [org.dromara.soul.plugin.httpclient.WebClientPlugin]
2021-01-18 19:22:48.722  INFO 16624 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[divide] [org.dromara.soul.plugin.divide.websocket.WebSocketPlugin]
2021-01-18 19:22:48.722  INFO 16624 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[apache-dubbo-body-param] [org.dromara.soul.plugin.apache.dubbo.param.BodyParamPlugin]
2021-01-18 19:22:48.723  INFO 16624 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[dubbo] [org.dromara.soul.plugin.apache.dubbo.ApacheDubboPlugin]
2021-01-18 19:22:48.723  INFO 16624 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[monitor] [org.dromara.soul.plugin.monitor.MonitorPlugin]
2021-01-18 19:22:48.723  INFO 16624 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[response] [org.dromara.soul.plugin.httpclient.response.WebClientResponsePlugin]
2021-01-18 19:22:48.723  INFO 16624 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[response] [org.dromara.soul.plugin.apache.dubbo.response.DubboResponsePlugin]

看到组内同学的分享才知道是因为没有启用sofa的依赖-。-

<!--        sofa plugin start-->
        <dependency>
            <groupId>com.alipay.sofa</groupId>
            <artifactId>sofa-rpc-all</artifactId>
            <version>5.7.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-client</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>soul-spring-boot-starter-plugin-sofa</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!--        sofa plugin end-->

加了依赖后重启boot-strap, 看到出现了sofa插件了。

 load plugin:[alibaba-dubbo-body-param] [org.dromara.soul.plugin.alibaba.dubbo.param.BodyParamPlugin]
2021-01-18 19:48:02.757  INFO 7812 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[sofa] [org.dromara.soul.plugin.sofa.SofaPlugin]
2021-01-18 19:48:02.757  INFO 7812 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[dubbo] [org.dromara.soul.plugin.alibaba.dubbo.AlibabaDubboPlugin]
2021-01-18 19:48:02.757  INFO 7812 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[monitor] [org.dromara.soul.plugin.monitor.MonitorPlugin]
2021-01-18 19:48:02.757  INFO 7812 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[response] [org.dromara.soul.plugin.httpclient.response.WebClientResponsePlugin]
2021-01-18 19:48:02.758  INFO 7812 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[response] [org.dromara.soul.plugin.sofa.response.SofaResponsePlugin]
2021-01-18 19:48:02.758  INFO 7812 --- [           main] o.d.s.w.configuration.SoulConfiguration  : load plugin:[response] [org.dromara.soul.plugin.alibaba.dubbo.response.DubboResponsePlugin]
2021-01-18 19:48:03.176  INFO 7812 --- [           main] b.s.s.d.w.WebsocketSyncDataConfiguration : you use websocket sync soul data.......

如果没有打开插件,启动boot-strap,会报NPE

在这里插入图片描述

  • 当我们看到 sofa client register success ,说明 sofa 服务已经注册成功了,看控制台出现了sofa相关的插件。

  • 还打印了成功加载sofa相关的元数据。

2021-01-18 19:38:34.927  INFO 2092 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils  : sofa client register success: {"appName":"sofa","contextPath":"/sofa","path":"/sofa/insert","pathDesc":"Insert a row of data","rpcType":"sofa","serviceName":"org.dromara.soul.examples.dubbo.api.service.DubboTestService","methodName":"insert","ruleName":"/sofa/insert","parameterTypes":"org.dromara.soul.examples.dubbo.api.entity.DubboTest","rpcExt":"{\"loadbalance\":\"hash\",\"retries\":3,\"timeout\":-1}","enabled":true} 
2021-01-18 19:38:34.984  INFO 2092 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils  : sofa client register success: {"appName":"sofa","contextPath":"/sofa","path":"/sofa/findById","pathDesc":"Find by Id","rpcType":"sofa","serviceName":"org.dromara.soul.examples.dubbo.api.service.DubboTestService","methodName":"findById","ruleName":"/sofa/findById","parameterTypes":"java.lang.String","rpcExt":"{\"loadbalance\":\"hash\",\"retries\":3,\"timeout\":-1}","enabled":true} 
2021-01-18 19:38:35.028  INFO 2092 --- [pool-2-thread-1] o.d.s.client.common.utils.RegisterUtils  : sofa client register success: {"appName":"sofa","contextPath":"/sofa","path":"/sofa/findAll","pathDesc":"Get all data","rpcType":"sofa","serviceName":"org.dromara.soul.examples.dubbo.api.service.DubboTestService","methodName":"findAll","ruleName":"/sofa/findAll","parameterTypes":"","rpcExt":"{\"loadbalance\":\"hash\",\"retries\":3,\"timeout\":-1}","enabled":true} 

  • 在soul-admin 的plugin-list 的sofa菜单 看到选择器信息。
  • sofa examples 里配置是 contextPath 是 /sofa
soul:
  sofa:
    adminUrl: http://localhost:9095
    contextPath: /sofa
    appName: sofa
  • 访问接口http://localhost:9195/sofa/findAll,获得数据。
{
    "code": 200,
    "message": "Access to success!",
    "data": {
        "name": "hello world Soul Sofa , findAll",
        "id": "998968953"
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值