客户端接入配置

应用客户端接入是指将你的微服务接入到Apache ShenYu网关,当前支持HttpDubboSpring CloudgRPCMotanSofaTars等协议的接入。

将应用客户端接入到Apache ShenYu网关是通过注册中心来实现的,涉及到客户端注册和服务端同步数据。注册中心支持HttpZookeeperEtcdConsulNacos

本篇文章介绍将应用客户端接入到Apache ShenYu网关,应该如何配置。相关原理请参考设计文档中的 客户端接入原理

客户端接入配置 - 图1

Http方式注册配置

shenyu-admin配置

yml文件中配置注册类型为http,配置信息如下:

  1. shenyu:
  2. register:
  3. registerType: http
  4. props:
  5. checked: true #是否开启检测
  6. zombieCheckTimes: 5 #失败几次后剔除服务
  7. scheduledTime: 10 #定时检测间隔时间 (秒)

客户端接入配置 - 图2

shenyu-client配置

下面展示的是http服务作为客户端接入到Apache ShenYu网关时,通过Http方式注册配置信息。其他客户端接入时(DubboSpring Cloud等),配置方式同理。

在微服务中的 yml文件配置注册方式设置为http,并填写shenyu-admin服务地址列表,配置信息如下:

  1. shenyu:
  2. client:
  3. registerType: http
  4. serverLists: http://localhost:9095
  5. props:
  6. contextPath: /http
  7. appName: http
  8. port: 8188
  9. isFull: false
  10. # registerType : 服务注册类型,填写 http
  11. # serverList: 为http注册类型时,填写Shenyu-Admin项目的地址,注意加上http://,多个地址用英文逗号分隔
  12. # port: 你本项目的启动端口,目前springmvc/tars/grpc需要进行填写
  13. # contextPath: 为你的这个mvc项目在shenyu网关的路由前缀, 比如/order ,/product 等等,网关会根据你的这个前缀来进行路由.
  14. # appName:你的应用名称,不配置的话,会默认取 `spring.application.name` 的值
  15. # isFull: 设置true 代表代理你的整个服务,false表示代理你其中某几个controller;目前适用于springmvc/springcloud

客户端接入配置 - 图3

Zookeeper方式注册配置

shenyu-admin配置

  • 首先在 pom 文件中加入相关的依赖(默认已经引入):
  1. <dependency>
  2. <groupId>org.apache.shenyu</groupId>
  3. <artifactId>shenyu-register-server-zookeeper</artifactId>
  4. <version>${project.version}</version>
  5. </dependency>

客户端接入配置 - 图4

  • 然后在yml文件中配置注册类型为zookeeper,填写zookeeper服务地址和参数,配置信息如下:
  1. shenyu:
  2. register:
  3. registerType: zookeeper
  4. serverLists: localhost:2181
  5. props:
  6. sessionTimeout: 5000
  7. connectionTimeout: 2000

客户端接入配置 - 图5

shenyu-client配置

下面展示的是http服务作为客户端接入到Apache ShenYu网关时,通过Zookeeper方式注册配置信息。其他客户端接入时(DubboSpring Cloud等),配置方式同理。

  • 首先在 pom文件中加入相关的依赖:
  1. <!-- apache shenyu zookeeper register center -->
  2. <dependency>
  3. <groupId>org.apache.shenyu</groupId>
  4. <artifactId>shenyu-register-server-zookeeper</artifactId>
  5. <version>${shenyu.version}</version>
  6. </dependency>

客户端接入配置 - 图6

  • 然后在 yml 中配置注册类型为zookeeper,并填写Zookeeper服务地址和相关参数,如下:
  1. shenyu:
  2. client:
  3. registerType: zookeeper
  4. serverLists: localhost:2181
  5. props:
  6. contextPath: /http
  7. appName: http
  8. port: 8189
  9. isFull: false
  10. # registerType : 服务注册类型,填写 zookeeper
  11. # serverList: 为zookeeper注册类型时,填写zookeeper地址,多个地址用英文逗号分隔
  12. # port: 你本项目的启动端口,目前springmvc/tars/grpc需要进行填写
  13. # contextPath: 为你的这个mvc项目在shenyu网关的路由前缀, 比如/order ,/product 等等,网关会根据你的这个前缀来进行路由.
  14. # appName:你的应用名称,不配置的话,会默认取 `spring.application.name` 的值
  15. # isFull: 设置true 代表代理你的整个服务,false表示代理你其中某几个controller;目前适用于springmvc/springcloud

客户端接入配置 - 图7

Etcd方式注册配置

shenyu-admin配置

  • 首先在 pom 文件中加入相关的依赖(默认已经引入):
  1. <dependency>
  2. <groupId>org.apache.shenyu</groupId>
  3. <artifactId>shenyu-register-server-etcd</artifactId>
  4. <version>${project.version}</version>
  5. </dependency>

客户端接入配置 - 图8

  • 然后在 yml 配置注册类型为etcd, 填写etcd服务地址和参数,配置信息如下:
  1. shenyu:
  2. register:
  3. registerType: etcd
  4. serverLists : http://localhost:2379
  5. props:
  6. etcdTimeout: 5000
  7. etcdTTL: 5

客户端接入配置 - 图9

shenyu-client配置

下面展示的是http服务作为客户端接入到Apache ShenYu网关时,通过Etcd方式注册配置信息。其他客户端接入时(DubboSpring Cloud等),配置方式同理。

  • 首先在 pom 文件中加入相关的依赖:
  1. <!-- apache shenyu etcd register center -->
  2. <dependency>
  3. <groupId>org.apache.shenyu</groupId>
  4. <artifactId>shenyu-register-server-etcd</artifactId>
  5. <version>${shenyu.version}</version>
  6. </dependency>

客户端接入配置 - 图10

  • 然后在 yml 中配置注册类型为etcd, 并填写etcd服务地址和相关参数,如下:
  1. shenyu:
  2. client:
  3. registerType: etcd
  4. serverLists: http://localhost:2379
  5. props:
  6. contextPath: /http
  7. appName: http
  8. port: 8189
  9. isFull: false
  10. # registerType : 服务注册类型,填写 etcd
  11. # serverList: 为etcd注册类型时,填写etcd地址,多个地址用英文逗号分隔
  12. # port: 你本项目的启动端口,目前springmvc/tars/grpc需要进行填写
  13. # contextPath: 为你的这个mvc项目在shenyu网关的路由前缀, 比如/order ,/product 等等,网关会根据你的这个前缀来进行路由.
  14. # appName:你的应用名称,不配置的话,会默认取 `spring.application.name` 的值
  15. # isFull: 设置true 代表代理你的整个服务,false表示代理你其中某几个controller;目前适用于springmvc/springcloud

客户端接入配置 - 图11

Consul方式注册配置

shenyu-admin配置

  • 首先在 pom.xml 文件中加入相关的依赖:
  1. <!-- apache shenyu consul register start-->
  2. <dependency>
  3. <groupId>org.apache.shenyu</groupId>
  4. <artifactId>shenyu-register-server-consul</artifactId>
  5. <version>${project.version}</version>
  6. </dependency>
  7. <!--spring-cloud-starter-consul-discovery需要用户自行引入,建议选用2.2.6.RELEASE版本,其他版本不保证正常工作-->
  8. <dependency>
  9. <groupId>org.springframework.cloud</groupId>
  10. <artifactId>spring-cloud-starter-consul-discovery</artifactId>
  11. <version>2.2.6.RELEASE</version>
  12. </dependency>
  13. <!-- apache shenyu consul register end-->

客户端接入配置 - 图12

  • yml文件配置注册中心为consul, 额外还需要配置spring.cloud.consul, 配置信息如下:
  1. shenyu:
  2. register:
  3. registerType: consul
  4. props:
  5. delay: 1
  6. wait-time: 55
  7. spring:
  8. cloud:
  9. consul:
  10. discovery:
  11. instance-id: shenyu-admin-1
  12. service-name: shenyu-admin
  13. tags-as-metadata: false
  14. host: localhost
  15. port: 8500
  16. # registerType : 服务注册类型,填写 consul
  17. # delay: 对Metadata的监控每次轮询的间隔时长,单位为秒,默认1秒
  18. # wait-time: 对Metadata的监控单次请求的等待时间(长轮询机制),单位为秒,默认55秒
  19. # instance-id: consul服务必填,consul需要通过instance-id找到具体服务
  20. # service-name 服务注册到consul时所在的组名,不配置的话,会默认取 `spring.application.name` 的值
  21. # host: 为 consul 注册类型时,填写 consul 地址,默认localhost
  22. # port: 为 consul 注册类型时,填写 consul 端口, 默认是8500
  23. # tags-as-metadata: false, 必填,如果不填默认为true,则无法读取metadata里的URI信息导致selector的upstream数据更新失败。

客户端接入配置 - 图13

shenyu-client配置

注意,consul注册中心目前和SpringCloud服务不兼容,会和Eureka/Nacos注册中心冲突

下面展示的是http服务作为客户端接入到Apache ShenYu网关时,通过Consul方式注册配置信息。其他客户端接入时(DubboSpring Cloud等),配置方式同理。

  • 首先在 pom 文件中加入相关的依赖:
  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-consul-discovery</artifactId>
  4. <version>2.2.6.RELEASE</version>
  5. </dependency>

客户端接入配置 - 图14

  • 然后在 yml文件中配置注册方式为consul, 额外还需要配置spring.cloud.consul, 配置信息如下:
  1. shenyu:
  2. client:
  3. registerType: consul
  4. props:
  5. contextPath: /http
  6. appName: http
  7. port: 8188
  8. isFull: false
  9. spring:
  10. cloud:
  11. consul:
  12. discovery:
  13. instance-id: shenyu-http-1
  14. service-name: shenyu-http
  15. host: localhost
  16. port: 8500
  17. # registerType : 服务注册类型,填写 consul
  18. # shenyu.client.props.port: 你本项目的启动端口,目前springmvc/tars/grpc需要进行填写
  19. # contextPath: 为你的这个mvc项目在shenyu网关的路由前缀, 比如/order ,/product 等等,网关会根据你的这个前缀来进行路由.
  20. # appName:你的应用名称,不配置的话,会默认取 `spring.application.name` 的值
  21. # isFull: 设置true 代表代理你的整个服务,false表示代理你其中某几个controller;目前适用于springmvc
  22. # instance-id: consul服务必填,consul需要通过instance-id找到具体服务
  23. # service-name 服务注册到consul时所在的组名,不配置的话,会默认取 `spring.application.name` 的值
  24. # host: 为 consul 注册类型时,填写 consul 地址,默认localhost
  25. # spring.cloud.consul.port: 为 consul 注册类型时,填写 consul 端口, 默认是8500

客户端接入配置 - 图15

Nacos方式注册配置

shenyu-admin配置

  • 首先在 pom 文件中加入相关的依赖(默认已经引入):
  1. <dependency>
  2. <groupId>org.apache.shenyu</groupId>
  3. <artifactId>shenyu-register-server-nacos</artifactId>
  4. <version>${project.version}</version>
  5. </dependency>

客户端接入配置 - 图16

  • 然后在 yml文件中配置注册中心为nacos, 填写相关nacos服务地址和参数,还有nacos的命名空间(需要和shenyu-client保持一致),配置信息如下:
  1. shenyu:
  2. register:
  3. registerType: nacos
  4. serverLists : localhost:8848
  5. props:
  6. nacosNameSpace: ShenyuRegisterCenter

客户端接入配置 - 图17

shenyu-client配置

下面展示的是http服务作为客户端接入到Apache ShenYu网关时,通过Nacos方式注册配置信息。其他客户端接入时(DubboSpring Cloud等),配置方式同理。

  • 首先在 pom文件中加入相关的依赖:
  1. <dependency>
  2. <groupId>org.apache.shenyu</groupId>
  3. <artifactId>shenyu-register-client-nacos</artifactId>
  4. <version>${shenyu.version}</version>
  5. </dependency>

客户端接入配置 - 图18

  • 然后在 yml 中配置注册方式为nacos, 并填写nacos服务地址和相关参数,还需要Nacos命名空间(需要和shenyu-admin端保持一致),IP(可不填,则自动获取本机ip)和端口,配置信息如下:
  1. shenyu:
  2. client:
  3. registerType: nacos
  4. serverLists: localhost:8848
  5. props:
  6. contextPath: /http
  7. appName: http
  8. port: 8188
  9. isFull: false
  10. nacosNameSpace: ShenyuRegisterCenter
  11. # registerType : 服务注册类型,填写 nacos
  12. # serverList: 为nacos注册类型时,填写nacos地址,多个地址用英文逗号分隔
  13. # port: 你本项目的启动端口,目前springmvc/tars/grpc需要进行填写
  14. # contextPath: 为你的这个mvc项目在shenyu网关的路由前缀,比如/order ,/product 等等,网关会根据你的这个前缀来进行路由.
  15. # appName:你的应用名称,不配置的话,会默认取 `spring.application.name` 的值
  16. # isFull: 设置true 代表代理你的整个服务,false表示代理你其中某几个controller;目前适用于springmvc/springcloud
  17. # nacosNameSpace: nacos的命名空间

客户端接入配置 - 图19

总结,本文主要介绍了如何将你的微服务(当前支持HttpDubboSpring CloudgRPCMotanSofaTars等协议)接入到Apache ShenYu网关。介绍了注册中心的原理,Apache ShenYu网关支持的注册中心有HttpZookeeperEtcdConsulNacos等方式。介绍了以http服务作为客户端接入到Apache ShenYu网关时,使用不同方式注册配置信息。