soul-admin 与 网关的数据通过websocket方式同步
参考官网
https://dromara.org/zh-cn/docs/soul/user-dataSync.html
- soul-admin 侧默认开启配置

- 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>
-
网关侧默认开启websocket默认配置

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

- websocket 同步
websocket 和 zookeeper 机制有点类似,将网关与 admin 建立好 websocket 连接时,admin 会推送一次全量数据,后续如果配置数据发生变更,则将增量数据通过 websocket 主动推送给 soul-web
- 直接从目录结构中可以看到这两个类WebsocketCollector, WebsocketDataChangedListener从命名以及方法名可以看出一个是接收网关侧上报数据的处理类,一个是数据变更是同步到网关的。

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

-
跟踪下来找到selectorDataHandler 实现类 (工厂模式的应用)

-
进入AbstractDataHandler

- 继续跟进同步跟踪到同步到内存数据的逻辑

总结
- 以selector 的数据变更为主线,跟踪admin数据变更到同步到网关侧内存的过程
- 具体内存处理逻辑没有细看,后续挑选某一个完整的主线看下内存数据维护的具体逻辑
本文详细介绍了Soul框架中,soul-admin与网关通过WebSocket进行数据同步的配置和原理。在soul-admin侧添加依赖启动WebSocket同步,网关侧默认开启配置。当数据变更时,admin会通过WebSocket推送全量或增量数据到网关,确保配置实时更新。核心类WebsocketCollector和WebsocketDataChangedListener分别负责接收和同步数据。整个过程类似于配置中心的简化版。

664

被折叠的 条评论
为什么被折叠?



