soul入门 第十一章 admin同步数据到网关小结

488 阅读2分钟

soul入门 第十一章 admin同步数据到网关小结

​ 目前,官方提供的同步数据用到的技术分别有websocket、http长轮询、zookeeper、nacos四种。下面 总结下四种方式的特点。

  • 1、websocket

​ 这种方式是默认方式,不依赖第三方组件,非常轻量级,可以实现双向实时通信。admin启动websocket服务,等待网关连接上来(第一次连接,推送所有数据到网关),并且管理连接,当配置数据有改动时,轮询所有连接,发送数据到网关。作为网关,admin后台的任何配置信息改动都必须如实传到网关,这怎么保证呢?一旦连接断开,那岂不是出大问题。为了解决websocket断开问题,网关侧起一个线程,每隔三秒判断连接是否关闭,如果关闭即刻发起重连,当重新连接上后,admin一样会全量数据推送,通过这种方式,基本可以解决admin和网关数据不一致问题,不一致的情况最多持续三秒。这种方式简单、可靠、高性能。不愧是默认使用方式。

  • 2、http长轮询

    该方式也不依赖其他组件。这里所说的长轮询,指的是网关启动了个线程,每隔五分钟请求admin是否有数据改变,admin会response是否有改变,如果有改变,网关会去请求数据。那怎么知道是否有改变呢,如何判断,全量数据比对?因为数据量不小这样将有损性能,soul采取的做法是,给每条记录计算摘要,摘要占用空间小,传输或者比较都更高效。那如果admin修改了数据时怎么实时反应到网关呢,其实在网关发起请求到admin时,admin把该连接保存为异步context,下一次有改动时,即可用该context把数据传到网关。这种方式也非常轻量,缺点就是实现逻辑稍微复杂。

  • 3、zookeeper

    该方式依赖第三方组件,暂时没仔细研究。

  • 4、nacos

    该方式依赖第三方组件,暂时没仔细研究。