Soul网关(4) - Sofa Demo

753 阅读3分钟

话不多说,上来就干

今天开始Soul网关的sofa框架demo测试

和上一篇使用soul源码项目自带的dubbo示例项目一样,这一篇,可以使用soul源码项目中自带的sofa项目(别问我为什么不自己新建一个sofa的demo项目,问就是不会,真的没搭过。。。)

项目配置

soul网关配置

依赖

pom文件引入sofa依赖

<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>${last.version}</version>
       </dependency>

sofa项目配置(以springboot的sofa框架为例)

依赖

	   <dependency>
           <groupId>org.dromara</groupId>
           <artifactId>soul-spring-boot-starter-client-sofa</artifactId>
           <version>${soul.version}</version>
       </dependency>

yml配置文件

 soul:
       sofa:
         adminUrl: http://localhost:9095
         contextPath: /sofa
         appName: sofa
      # adminUrl: 为你启动的soul-admin 项目的ip + 端口,注意要加 http://
      # contextPath: 为你的这个项目在soul网关的路由前缀,这个你应该懂意思把? 比如/order ,/product 等等,网关会根据你的这个前缀来进行路由.
      # appName:你的应用名称,不配置的话,会默认取sofa配置中application 中的名称

注解

在sofa项目中的实现类的方法上,增加soul网关注册注解 @SoulSofaClient

soul插件设置

在 soul-admin 插件管理中,把sofa 插件设置为开启,并且配置sofa的zookeeper协议和ip

测试

zookeeper

启动zookeeper,找到zookeeper文件-bin文件夹,点击zkServer.cmd,启动zookeeper

2021-01-19 00:08:30,095 [myid:] - INFO  [main:ZKDatabase@289] - Snapshot loaded in 143 ms, highest zxid is 0x3a, digest is 35334594556
2021-01-19 00:08:30,096 [myid:] - INFO  [main:FileTxnSnapLog@470] - Snapshotting: 0x3a to D:apache-zookeeper-3.6.2-binapache-zookeeper-3.6.2-bindata\version-2\snapshot.3a
2021-01-19 00:08:30,104 [myid:] - INFO  [main:ZooKeeperServer@529] - Snapshot taken in 8 ms
2021-01-19 00:08:30,121 [myid:] - INFO  [ProcessThread(sid:0 cport:2181)::PrepRequestProcessor@136] - PrepRequestProcessor (sid:0) started, reconfigEnabled=false
2021-01-19 00:08:30,122 [myid:] - INFO  [main:RequestThrottler@74] - zookeeper.request_throttler.shutdownTimeout = 10000
2021-01-19 00:08:30,140 [myid:] - INFO  [main:ContainerManager@83] - Using checkIntervalMs=60000 maxPerMinute=10000 maxNeverUsedIntervalMs=0
2021-01-19 00:08:50,040 [myid:] - INFO  [SyncThread:0:FileTxnLog@284] - Creating new log file: log.3b
2021-01-19 00:09:01,336 [myid:] - INFO  [SessionTracker:ZooKeeperServer@610] - Expiring session 0x100051517260000, timeout of 30000ms exceeded

一般出现 Creating new log file ,就是正常启动的标志

soul管理后台

启动soul网关的后台管理项目-soulAdmin,端口:9095

sofa示例项目

启动sofa示例项目,端口:28011

soul网关

启动soul网关,端口:9091

看到sofa服务注册到网关的init日志信息,就知道sofa已经正确注册到网关了

2021-01-19 01:14:07.221  INFO 28240 --- [ctReadThread-17] o.d.s.p.s.cache.ApplicationConfigCache   : init sofa reference success there meteData is :MetaData(id=1350647286545272832, appName=sofa, contextPath=null, path=/sofa/insert, rpcType=sofa, serviceName=org.dromara.soul.examples.dubbo.api.service.DubboTestService, methodName=insert, parameterTypes=org.dromara.soul.examples.dubbo.api.entity.DubboTest, rpcExt={"loadbalance":"hash","retries":3,"timeout":-1}, enabled=true)
2021-01-19 01:14:07.278  INFO 28240 --- [ctReadThread-17] o.d.s.p.s.cache.ApplicationConfigCache   : init sofa reference success there meteData is :MetaData(id=1350647286851457024, appName=sofa, contextPath=null, path=/sofa/findById, rpcType=sofa, serviceName=org.dromara.soul.examples.dubbo.api.service.DubboTestService, methodName=findById, parameterTypes=java.lang.String, rpcExt={"loadbalance":"hash","retries":3,"timeout":-1}, enabled=true)
2021-01-19 01:14:07.314  INFO 28240 --- [ctReadThread-17] o.d.s.p.s.cache.ApplicationConfigCache   : init sofa reference success there meteData is :MetaData(id=1350647287199584256, appName=sofa, contextPath=null, path=/sofa/findAll, rpcType=sofa, serviceName=org.dromara.soul.examples.dubbo.api.service.DubboTestService, methodName=findAll, parameterTypes=null, rpcExt={"loadbalance":"hash","retries":3,"timeout":-1}, enabled=true)

查看路由注册

soul后台管理,查看sofa网关配置,我们可以看到sofa的url都已经成功注册到网关

测试

网关路由请求

请求路径 localhost:9195/sofa/findAll 请求成功

下一篇,我们学习如何使用spring-cloud和soul配合使用的案例