http协议
转成 Spring Cloud协议
。http协议
转成 Spring Cloud协议
。核心模块 shenyu-plugin-springcloud
核心类 org.apache.shenyu.plugin.springcloud.SpringCloudPlugin
引入相关依赖,开启插件,请参考:Spring Cloud快速开始 。
Spring Cloud
应用客户端接入,请参考:Spring Cloud服务接入 。
<dependency> <groupId>org.apache.shenyu</groupId> <artifactId>shenyu-spring-boot-starter-plugin-springcloud</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>${eureka-client.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-commons</artifactId> <version>${spring-cloud-commons.version}</version> </dependency> <dependency> <groupId>org.apache.shenyu</groupId> <artifactId>shenyu-spring-boot-starter-plugin-httpclient</artifactId> <version>${project.version}</version> </dependency>
<dependency> <groupId>org.apache.shenyu</groupId> <artifactId>shenyu-spring-boot-starter-plugin-springcloud</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>${nacos-discovery.version}</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-commons</artifactId> <version>${spring-cloud-commons.version}</version> </dependency> <dependency> <groupId>org.apache.shenyu</groupId> <artifactId>shenyu-spring-boot-starter-plugin-httpclient</artifactId> <version>${project.version}</version> </dependency>
spring: cloud: discovery: enabled: true eureka: client: enabled: true serviceUrl: defaultZone: http://localhost:8761/eureka/ instance: prefer-ip-address: true
spring: cloud: discovery: enabled: true nacos: discovery: server-addr: 127.0.0.1:8848 # Spring Cloud Alibaba Dubbo use this. enabled: true namespace: ShenyuRegisterCenter
注意
在ShenYu 2.5.0(包括)之后,ShenYu使用自有的
shenyu-loadbalancer
作为负载均衡客户端,你只需要在springcloud插件的规则配置中配置负载均衡。 如果你没有配置负载均衡,将使用默认的roundRobin
算法。在ShenYu 2.4.3(包括)之前,ShenYu使用
Ribbon
作为负载均衡客户端,你必须如下配置负载均衡。
spring: cloud: loadbalancer: ribbon: enabled: true
shenyu-admin
--> 基础配置 --> 插件管理-> springCloud
,设置为开启。如果您想在springCloud插件中使用灰色路由,可以单击“灰色”按钮。
当开启灰度是,网关的负载平衡算法将从当前节点列表中选择一个节点进行路由,并且您可以通过修改节点权重以更改负载平衡算法中节点的权重。
需要注意的是,如果您的业务实例没有使用shenyu-client-springcloud
的客户端进行业务注册发现,您应该在当前选择器页面上手动添加节点信息进行灰度路由。
处理配置详解:
serviceId
:serviceId。
gray
:启用灰度路由。
protocol
:协议默认值为‘http://’。
upstreamUrl
: 服务器节点地址。
weight
: 服务器节点权重。
status
:true:服务器可用,false:服务器不可用。
timestamp
:节点的启动时间。
warmup
:节点的预热时间,参与负载均衡计算。
规则处理,即handle
字段,是网关对流量完成最终匹配后,可以进行处理的操作。更多信息请参考插件管理中的 插件处理管理 。
shenyu-client-springcloud
的规则配置规则配置详解:
timeout
:设置请求超时时间。loadbalance
:负载均衡算法,有三个可选项:roundRobin
,random
,hash
未使用 shenyu-client-springcloud
的规则配置
规则配置详解:
path
:请求路径。timeout
:设置请求超时时间。Eureka
或 Nacos
服务注册发现中心, 如果你使用eureka, 启动 shenyu-examples-eureka
即可ShenYu Admin
shenyu-examples-springcloud
在 shenyu-admin
--> 基础配置 --> 插件管理-> springCloud
,设置为开启。
在ShenYu Bootstrap
配置服务注册发现中心, 请查看 [2.3 在ShenYu Bootstrap配置SpringCloud](#2.3 在ShenYu Bootstrap配置SpringCloud)
如果你想使用注册到ShenYu的灰度流量,你必须配置灰度路由。
如果你使用shenyu-client-springcloud
注册服务到ShenYu
,你可以不用配置规则,如果你想改变规则,请查看[2.5.3 规则配置](#2.5.3 规则配置)
Eureka
或 Nacos
服务注册发现中心, 如果你使用eureka, 启动 shenyu-examples-eureka
即可ShenYu Admin
shenyu-examples-springcloud
在 shenyu-admin
--> 基础配置 --> 插件管理-> springCloud
,设置为开启。
在ShenYu Bootstrap
配置服务注册发现中心, 请查看 [2.3 在ShenYu Bootstrap配置SpringCloud](#2.3 在ShenYu Bootstrap配置SpringCloud)
如果你想使用未注册到ShenYu的灰度流量,你必须配置灰度流量相关的配置
你必须在规则配置中配置path
字段,path
字段为你的服务uri,例如:/springcloud/new/feature/gateway/not
, timeout
为你的服务允许的超时时间。
rpc_type
字段进行访问### shengyu getway proxy not support POST http://localhost:9195/springcloud/new/feature/gateway/not Accept: application/json Content-Type: application/json rpc_type: springCloud
shenyu-admin
--> 基础配置 --> 插件管理-> springCloud
,设置为关闭。