使用Eureka接入
背景说明
Shenyu提供了Shenyu-Sdk方便让服务能够快速接入shenyu网关, 客户端服务只需要依赖该sdk, 并做些简单配置, 即可类似调用本地接口一样调用网关暴露的API。
客户端接入网关时可使用注册中心做服务发现,支持的注册中心有nacos、eureka、etcd、zookeeper、consul, 下面为shenyu-bootstrap及应用客户端使用eureka为注册中心时的相关指引。
环境准备
需要参考 运维部署 , 选择一种方式启动shenyu-admin及shenyu-bootstrap.
shenyu-bootstrap
添加Maven依赖
在网关的pom.xml文件中引入如下依赖.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>${eureka-client.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</exclusion>
</exclusions>
</dependency>
配置文件调整
在网关的yml配置文件中添加如下配置.
spring:
cloud:
discovery:
enabled: true # 启用服务发现
eureka:
client:
enabled: true
serviceUrl:
defaultZone: http://localhost:8761/eureka/ # 此处填你的eureka注册中心地址
instance:
prefer-ip-address: true
应用客户端
添加Maven依赖
在应用客户端的pom.xml文件中引入如下依赖.
- Shenyu-Sdk 核心包
<dependencies>
<dependency>
<groupId>org.apache.shenyu</groupId>
<artifactId>shenyu-sdk-core</artifactId>
<version>2.5.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.shenyu</groupId>
<artifactId>shenyu-spring-boot-starter-sdk</artifactId>
<version>2.5.1-SNAPSHOT</version>
</dependency>
</dependencies>
- Shenyu-Sdk http实现包
http客户端实现, 目前提供实现okhttp, httpclient. 其他客户端实现可继承
AbstractShenyuSdkClient实现。
<!-- httpclient -->
<dependency>
<groupId>org.apache.shenyu</groupId>
<artifactId>shenyu-sdk-httpclient</artifactId>
<version>2.5.1-SNAPSHOT</version>
</dependency>
<!-- okhttp -->
<!--
<dependency>
<groupId>org.apache.shenyu</groupId>
<artifactId>shenyu-sdk-okhttp</artifactId>
<version>2.5.1-SNAPSHOT</version>
</dependency>
-->
配置文件调整
在应用客户端的yml配置文件中添加如下配置.
shenyu:
sdk:
enabled: true
register-type: eureka
server-lists: http://localhost:8761/eureka/
props:
retry:
enable: true
period: 100
maxPeriod: 1000
maxAttempts: 5
algorithm: roundRobin
scheme: http
# registerType : 服务注册类型,填写 eureka
# serverList: 为eureka注册类型时,配置成你的eureka注册中心地址,集群环境请使用(,)分隔
# retry 失败重试相关配置
# retry.period: 重试等待时间
# retry.maxPeriod: 最大重试等待时间
# retry.maxAttempts: 最大重试次数
# algorithm: 负载均衡
# scheme: 请求协议头
本地接口配置
-
在项目启动类上标注
@EnableShenyuClients(basePackages = "org.apache.shenyu.examples.sdk.http.api"), 其中basePackages中维护的是Shenyu-Sdk对应维护网关API接口的所在包位置. -
创建interface并使用
@ShenyuClient(name = "xxx", contextId = "ShenyuSdkApiName")注解标注, 其中name