数据同步配置

本篇主要讲解如何配置数据同步策略,数据同步是指在 shenyu-admin 后台操作数据以后,使用何种策略将数据同步到 Apache ShenYu 网关。Apache ShenYu 网关当前支持ZooKeeperWebSocketHttp长轮询NacosEtcdConsul进行数据同步。

数据同步配置 - 图1

数据同步原理请参考设计文档中的 数据同步原理

WebSocket同步配置(默认方式,推荐)

  • Apache ShenYu网关配置

    首先在 pom.xml 文件中引入以下依赖:

  1. <!-- apache shenyu data sync start use websocket-->
  2. <dependency>
  3. <groupId>org.apache.shenyu</groupId>
  4. <artifactId>shenyu-spring-boot-starter-sync-data-websocket</artifactId>
  5. <version>${project.version}</version>
  6. </dependency>

数据同步配置 - 图2

然后在 yml 文件中进行如下配置:

  1. shenyu:
  2. sync:
  3. websocket :
  4. urls: ws://localhost:9095/websocket
  5. # urls:是指 shenyu-admin的地址,如果有多个,请使用(,)分割。

数据同步配置 - 图3

  • shenyu-admin 配置

    yml 文件中进行如下配置:

  1. shenyu:
  2. sync:
  3. websocket:
  4. enabled: true

数据同步配置 - 图4

当建立连接以后会全量获取一次数据,以后的数据都是增量的更新与新增,性能好。而且也支持断线重连 (默认30秒)。推荐使用此方式进行数据同步,也是Apache ShenYu默认的数据同步策略。

Zookeeper同步配置

请注意,从 ShenYu 2.5.0 起将不再支持 Zookeeper 3.4.x 或更低版本。如果您已经使用了 Zookeeper 3.4.x 或更低的版本,您需要使用更高的 Zookeeper 版本并重新初始化数据。

  • Apache ShenYu网关配置

    首先在 pom.xml 文件中引入以下依赖:

    1. <!-- apache shenyu data sync start use zookeeper-->
    2. <dependency>
    3. <groupId>org.apache.shenyu</groupId>
    4. <artifactId>shenyu-spring-boot-starter-sync-data-zookeeper</artifactId>
    5. <version>${project.version}</version>
    6. </dependency>

    数据同步配置 - 图5

然后在 yml 文件中进行如下配置:

  1. shenyu:
  2. sync:
  3. zookeeper:
  4. url: localhost:2181
  5. # url: 配置成你的 zookeeper 地址,集群环境请使用(,)分隔
  6. sessionTimeout: 5000
  7. connectionTimeout: 2000

数据同步配置 - 图6

  • shenyu-admin 配置

yml 文件中进行如下配置:

  1. shenyu:
  2. sync:
  3. zookeeper:
  4. url: localhost:2181
  5. # url: 配置成你的 zookeeper 地址,集群环境请使用(,)分隔
  6. sessionTimeout: 5000
  7. connectionTimeout: 2000

数据同步配置 - 图7

使用zookeeper同步机制也是非常好的,时效性也高,但是要处理zookeeper环境不稳定,集群脑裂等问题。

Http长轮询同步配置

  • Apache ShenYu网关配置

首先在 pom.xml 文件中引入以下依赖:

  1. <!-- apache shenyu data sync start use http-->
  2. <dependency>
  3. <groupId>org.apache.shenyu</groupId>
  4. <artifactId>shenyu-spring-boot-starter-sync-data-http</artifactId>
  5. <version>${project.version}</version>
  6. </dependency>

数据同步配置 - 图8

然后在 yml 文件中进行如下配置:

  1. shenyu:
  2. sync:
  3. http:
  4. url: http://localhost:9095
  5. # url: 配置成你的 shenyu-admin 的 ip 与端口地址,多个admin集群环境请使用(,)分隔。

数据同步配置 - 图9

  • shenyu-admin 配置

yml 文件中进行如下配置:

  1. shenyu:
  2. sync:
  3. http:
  4. enabled: true

数据同步配置 - 图10

使用Http长轮询进行数据同步,会让网关很轻量,但时效性略低。它是根据分组key来拉取,如果数据量过大,过多,会有一定的影响。原因是一个组下面的一个小地方更改,都会拉取整个组的数据。

Nacos同步配置

  • Apache ShenYu网关配置

首先在 pom.xml 文件中引入以下依赖:

  1. <!-- apache shenyu data sync start use nacos-->
  2. <dependency>
  3. <groupId>org.apache.shenyu</groupId>
  4. <artifactId>shenyu-spring-boot-starter-sync-data-nacos</artifactId>
  5. <version>${project.version}</version>
  6. </dependency>

数据同步配置 - 图11

然后在 yml 文件中进行如下配置:

  1. shenyu:
  2. sync:
  3. nacos:
  4. url: localhost:8848
  5. # url: 配置成你的 nacos地址,集群环境请使用(,)分隔。
  6. namespace: 1c10d748-af86-43b9-8265-75f487d20c6c
  7. username:
  8. password:
  9. acm:
  10. enabled: false
  11. endpoint: acm.aliyun.com
  12. namespace:
  13. accessKey:
  14. secretKey:
  15. # 其他参数配置,请参考 naocs官网。

数据同步配置 - 图12

  • shenyu-admin 配置

yml 文件中进行如下配置:

  1. shenyu:
  2. sync:
  3. nacos:
  4. url: localhost:8848
  5. # url: 配置成你的 nacos地址,集群环境请使用(,)分隔。
  6. namespace: 1c10d748-af86-43b9-8265-75f487d20c6c
  7. username:
  8. password:
  9. acm:
  10. enabled: false
  11. endpoint: acm.aliyun.com
  12. namespace:
  13. accessKey:
  14. secretKey:
  15. # 其他参数配置,请参考 naocs官网。

数据同步配置 - 图13

Etcd 同步配置

  • Apache ShenYu网关配置

首先在 pom.xml 文件中引入以下依赖:

  1. <!-- apache shenyu data sync start use etcd-->
  2. <dependency>
  3. <groupId>org.apache.shenyu</groupId>
  4. <artifactId>shenyu-spring-boot-starter-sync-data-etcd</artifactId>
  5. <version>${project.version}</version>
  6. <exclusions>
  7. <exclusion>
  8. <groupId>io.grpc</groupId>
  9. <artifactId>grpc-grpclb</artifactId>
  10. </exclusion>
  11. <exclusion>
  12. <groupId>io.grpc</groupId>
  13. <artifactId>grpc-netty</artifactId>
  14. </exclusion>
  15. </exclusions>
  16. </dependency>

数据同步配置 - 图14

然后在 yml 文件中进行如下配置:

  1. shenyu:
  2. sync:
  3. etcd:
  4. url: http://localhost:2379
  5. # url: 配置成你的 etcd,集群环境请使用(,)分隔。

数据同步配置 - 图15

  • shenyu-admin 配置

yml 文件中进行如下配置:

  1. shenyu:
  2. sync:
  3. etcd:
  4. url: http://localhost:2379
  5. # url: 配置成你的 etcd,集群环境请使用(,)分隔。

数据同步配置 - 图16

Consul 同步配置

  • Apache ShenYu网关配置

首先在 pom.xml 文件中引入以下依赖:

  1. <!-- apache shenyu data sync start use consul-->
  2. <dependency>
  3. <groupId>org.apache.shenyu</groupId>
  4. <artifactId>shenyu-spring-boot-starter-sync-data-consul</artifactId>
  5. <version>${project.version}</version>
  6. </dependency>

数据同步配置 - 图17

然后在 yml 文件中进行如下配置:

  1. shenyu:
  2. sync:
  3. consul:
  4. url: http://localhost:8500
  5. waitTime: 1000 # 查询等待时间
  6. watchDelay: 1000 # 数据同步间隔时间

数据同步配置 - 图18

  • shenyu-admin 配置

yml 文件中进行如下配置:

  1. shenyu:
  2. sync:
  3. consul:
  4. url: http://localhost:8500

数据同步配置 - 图19

Apache ShenYu网关和shenyu-admin 重新配置数据同步策略后,需要重启服务。

Apache ShenYu网关 和 shenyu-admin 必须使用相同的同步策略。