soul网关学习数据同步方式初窥websocket

本文详细介绍了Soul框架中,soul-admin与网关通过WebSocket进行数据同步的配置和原理。在soul-admin侧添加依赖启动WebSocket同步,网关侧默认开启配置。当数据变更时,admin会通过WebSocket推送全量或增量数据到网关,确保配置实时更新。核心类WebsocketCollector和WebsocketDataChangedListener分别负责接收和同步数据。整个过程类似于配置中心的简化版。

soul-admin 与 网关的数据通过websocket方式同步

参考官网

https://dromara.org/zh-cn/docs/soul/user-dataSync.html

  1. soul-admin 侧默认开启配置

在这里插入图片描述

  1. pom 中添加依赖
   <!--soul data sync start use websocket-->
   <dependency>
     <groupId>org.dromara</groupId>
     <artifactId>soul-spring-boot-starter-sync-data-websocket</artifactId>
     <version>${last.version}</version>
   </dependency>
  1. 网关侧默认开启websocket默认配置
    在这里插入图片描述

  2. 原理分析

先来张高清无码图,下图展示了 Soul 数据同步的流程,Soul 网关在启动时,会从从配置服务同步配置数据,并且支持推拉模式获取配置变更信息,并且更新本地缓存。而管理员在管理后台,变更用户、规则、插件、流量配置,通过推拉模式将变更信息同步给 Soul 网关,具体是 push 模式,还是 pull 模式取决于配置。关于配置同步模块,其实是一个简版的配置中心。

在这里插入图片描述

  1. websocket 同步

websocket 和 zookeeper 机制有点类似,将网关与 admin 建立好 websocket 连接时,admin 会推送一次全量数据,后续如果配置数据发生变更,则将增量数据通过 websocket 主动推送给 soul-web

  1. 直接从目录结构中可以看到这两个类WebsocketCollector, WebsocketDataChangedListener从命名以及方法名可以看出一个是接收网关侧上报数据的处理类,一个是数据变更是同步到网关的。

在这里插入图片描述

7.接下来看网关测如何接收到变更数据 SoulWebSocketClient

在这里插入图片描述

  1. 跟踪下来找到selectorDataHandler 实现类 (工厂模式的应用)
    在这里插入图片描述

  2. 进入AbstractDataHandler

在这里插入图片描述

  1. 继续跟进同步跟踪到同步到内存数据的逻辑
    在这里插入图片描述

总结

  1. 以selector 的数据变更为主线,跟踪admin数据变更到同步到网关侧内存的过程
  2. 具体内存处理逻辑没有细看,后续挑选某一个完整的主线看下内存数据维护的具体逻辑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值