两台服务之间数据同步
数据同步
数据同步机制有很多种,我之前在项目中有遇到两台服务器之间文件同步、集中管理平台服务器同步配置信息给节点,最近也看到了SpringCloud Alibaba组件之一Nacos配置管理相关的文章,也从中学到了数据同步的一种实现方式,如果后续我有遇到或想到一些同步机制的方法或想法,会持续更新这篇文章。
nacos-数据同步机制
nacos是alibaba SpringCloud下的配置管理组件,nacos分为服务端和客户端,服务端主要提供界面配置功能,客户端主要提供同步服务端配置信息的功能。这里我写一下大概的一种实现机制,以后可以作为参考的一种想法:
- 客户端注册监听器 ,将自己要监听的数据类型注册到管理中心;
- 客户端定时轮询任务,执行定时任务,每隔一段时间主动向服务端发起http请求获取配置信息 ;
- 本地数据检查,对比服务端获取到的信息和本地缓存中存储的信息 ,如果不一致,则回调监听器
- 本地数据存储文件,为了防止客户端和服务端均宕机导致无法正常获取数据,将配置数据写入本地文件做个备份 ;
思考:
- 为什么要使用客户端拉取这种模式而不用服务端推送模式?
我的理解是如果采用服务端推送模式,如果是建立长连接的话,需要做的维护工作要更多一些:要保证连接不失效、要耗费连接资源;如果是通过http短连接去推送,需要做的工作:维护客户端ip列表,这种方式明显不合适,因为客户端可能众多,ip变了都还要通知到服务端,增加了客户端和服务端的耦合性。 - 这种同步机制还有没有可以改进的地方?