本文介绍如何快速使用 Spring Cloud SOFA Router。
操作步骤
在项目工程中添加 Spring Cloud SOFA Router 依赖。
说明不要配置版本,版本由 dependencyManagement 控制。
本例中采用 OpenFeign 作为服务框架,因此会引入相关依赖。
同时项目中需引入负载均衡模块,请根据所使用的 Spring Cloud 版本在 LoadBalancer 或 Ribbon 中进行选择(本示例使用 Spring Cloud 2021 版本为例,因此选择 LoadBalancer)。
为了获得路由配置,还需要引入动态配置模块作为数据源,可以选择使用 DRM 或 Nacos。本示例将引入 DRM 动态配置,以便于通过 SOFA 微服务控制台进行功能展示。
最后本示例为了通过 SOFA 微服务控制台展示路由功能,将引入
spring-cloud-starter-sofa-registry
。
<dependency> <groupId>com.alipay.cloud</groupId> <artifactId>spring-cloud-starter-sofa-drm</artifactId> </dependency> <!-- 引入服务框架 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <!-- 引入负载均衡 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency> <!-- 引入动态配置 --> <dependency> <groupId>com.alipay.cloud</groupId> <artifactId>spring-cloud-starter-sofa-drm</artifactId> </dependency> <!-- 可替换为其他注册中心 --> <dependency> <groupId>com.alipay.cloud</groupId> <artifactId>spring-cloud-starter-sofa-registry</artifactId> </dependency>
Spring Cloud SOFA 提供了多种路由算法,本例中使用基于动态规则的路由进行服务路由的快速体验。
启动服务提供者和消费者,为服务提供者启动两个以上节点,以观察路由是否生效。
两个服务提供者的服务注册元数据中加入标识用于路由区分。
为 Demo 提供者应用创建一个新的路由规则。
添加路由操作请参见 服务路由。
SOFA 微服务支持对应用和访问路径设置规则,应用和访问路径均可以有多条规则,它们合并为一个规则组,如上图所示,创建了一个规则组为
testRules
。此处仅设置一条规则testRule
作为示例。SOFA 的路由规则分为流量匹配和流量目的地两个重要的配置。流量匹配是用于挑选哪些请求会应用此规则,流量目的地则是用于判断当规则可应用于请求时,请求应该路由到哪些地址,判断条件是根据注册中心元数据中的信息来判断的。此处为简化说明,不设置流量匹配,即所有流量均运用此规则,流量目的地仅设置一个,让所有请求都只访问一个提供者。
通过 curl 命令循环调用消费者应用,在路由规则创建前,会随机调用到两个提供者中的一个。在规则创建后,就只会调用到一个提供者。