Soul网关源码分析-接入 Spring Cloud 应用

上一讲中,我对进入soul的dubbo应用的请求链路进行了分析,从这一讲开始,准备对springCloud应用接入soul的请求转发处理进行分析。

在进行源码分析前,先捋清楚运行一个springCloud应用需要哪些东西,Eureka作为springCloud推荐使用的注册中心,我们先简单了解一下Eureka 到底是什么,Eureka 是 Netflix 开源的注册中心组件,分成 Eureka Client 和 Eureka Server 两个角色。整体架构如下图所示:
在这里插入图片描述
Eureka-Server :通过 REST 协议暴露服务,提供应用服务的注册和发现的功能。
Application Server :应用服务提供者,内嵌 Eureka-Client ,通过它向 Eureka-Server 注册自身服务。
Application Client :应用服务消费者,内嵌 Eureka-Client ,通过它从 Eureka-Server 获取服务列表。

OK,既然已经了解了Eureka的作用,那么要想运行一个springCloud应用,需要先启用一个Eureka注册中心,要先达到这个目的,将soul-examples-eureka应用启动起来即可,是因为这个应用中的pom依赖已经添加了Eureka的支持,如下:

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

启动完成后,访问http://localhost:8761/这个地址可以看到Eureka管理控制台,如下图所示:
在这里插入图片描述
接着再运行soul-examples-springcloud,将springCloud应用启动起来,可以看到,在启动后,会往soul-admin中注册元数据信息,如下:

2021-01-22 01:31:44.516  INFO 28600 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils  : springCloud client register success: {"appName":"springCloud-test","context":"/springcloud","path":"/springcloud/order/save","pathDesc":"","rpcType":"springCloud","ruleName":"/springcloud/order/save","enabled":true} 
2021-01-22 01:31:44.528  INFO 28600 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils  : springCloud client register success: {"appName":"springCloud-test","context":"/springcloud","path":"/springcloud/order/findById","pathDesc":"","rpcType":"springCloud","ruleName":"/springcloud/order/findById","enabled":true} 
2021-01-22 01:31:44.538  INFO 28600 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils  : springCloud client register success: {"appName":"springCloud-test","context":"/springcloud","path":"/springcloud/order/path/**/name","pathDesc":"","rpcType":"springCloud","ruleName":"/springcloud/order/path/**/name","enabled":true} 
2021-01-22 01:31:44.549  INFO 28600 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils  : springCloud client register success: {"appName":"springCloud-test","context":"/springcloud","path":"/springcloud/order/path/**","pathDesc":"","rpcType":"springCloud","ruleName":"/springcloud/order/path/**","enabled":true} 
2021-01-22 01:31:44.560  INFO 28600 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils  : springCloud client register success: {"appName":"springCloud-test","context":"/springcloud","path":"/springcloud/test/**","pathDesc":"","rpcType":"springCloud","ruleName":"/springcloud/test/**","enabled":true} 

从日志信息可以看出,springCloud中的服务已经被成功注册到soul-admin中,然后再访问Eureka的管理控制台,可以看到多了springCloud应用,如下图所示:
在这里插入图片描述
接着我们来看看接入了soul之后,http请求预期应该经过什么处理到达springCloud应用后台,如下图:
在这里插入图片描述

下面通过postman发起请求测试一下,结果发现报错了,如下图所示:
在这里插入图片描述
根据之前分析请求链路的经验,这个报错肯定是走到AbstractSoulPlugin插件获取选择器时报错了,至于报错的具体原因,明天再继续分析。

总结:
虽然同样是http请求,但是springCloud和springBoot应用相比,多了一个注册中心,所以请求的处理会比较复杂一些,但是相信有之前的分析经验,最终可以将这个报错定位出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值