数据同步插件
概述
SyncBridge 是 ThingsGateway 中用于不同实例进程之间的数据同步插件,支持运行态数据同步和强制同步数据库配置(通道、设备、变量)。通过 SyncBridge,可以实现多实例部署场景下的数据一致性和高可用性,确保各实例之间的配置和数据保持同步。
核心功能
- 运行态数据同步:主站主动将运行态数据同步到其他实例
- 配置同步:支持强制同步数据库配置,包括通道、设备和变量
- 灵活的网络架构:支持主站作为 TcpClient 或 TcpService 启动
- 双向通信:基于 TCP 协议的双向通信机制
- 心跳检测:服务与客户端之间的心跳机制,确保连接稳定
- 安全验证:通过验证令牌确保数据同步的安全性
应用场景
- 分布式部署:多实例部署,实现负载均衡和高可用性
- 远程监控:将现场数据同步到远程监控中心
- 数据备份:实现数据的实时备份,提高系统可靠性
- 跨网络同步:在不同网络环境下实现数据同步
- 混合云部署:在本地和云端实例之间实现数据同步
工作原理
SyncBridge 采用主从架构,通过 TCP 协议实现实例之间的通信:
- 主站:作为数据源,负责主动同步运行态数据到其他实例
- 从站:作为数据目标,接收主站同步的数据
- 通信机制:基于 TCP 协议的双向通信,支持心跳检测和断线重连
- 数据同步:主站按照配置的同步间隔,将运行态数据发送到从站
- 配置同步:支持手动触发强制同步,将主站的配置同步到从站
插件属性配置
配置界面
详细配置项
| 配置项 | 说明 | 默认值 | 建议值 |
|---|---|---|---|
| 是否选择全部变量 | 是否选择全部变量,true时不需要单个变量添加业务属 性,只有主站需要添加变量 | False | 变量较多时建议启用 |
| 是否Tcp服务 | 是否开启Tcp服务,等待其他实例连接 | False | 主站作为服务端时启用 |
| 是否主站 | 是否主站,主站会主动同步运行态数据到其他实例 | False | 数据源实例设置为 true |
| 服务Uri | Tcp服务 IP端口 | 192.168.1.1:7777 | 如 "192.168.1.1:7777" |
| 验证令牌 | 不同实例的令牌需一致 | - | 使用强密码,如 "SyncBridge@2024" |
| 心跳间隔 | 服务与客户端之间的心跳间隔时间(ms) | 30 | 根据网络状况调整 |
| 同步间隔 | 主站会主动同步运行态数据到其他实例的间隔时间(ms) | 10 | 根据数据更新频率设置 |
配置案例
案例1:基本数据同步
场景:实现两个 ThingsGateway 实例之间的数据同步,实例1作为主站,实例2作为从站。
配置步骤:
-
实例1配置(主站)
- 是否选择全部变量:
True - 是否Tcp服务:
True - 是否主站:
True - 服务Uri:
192.168.1.100:7777 - 验证令牌:
SyncBridge@2024 - 心跳间隔:
3000 - 同步间隔:
1000
- 是否选择全部变量:
-
实例2配置(从站)
- 是否选择全部变量:
True - 是否Tcp服务:
False - 是否主站:
False - 服务Uri:
192.168.1.100:7777 - 验证令牌:
SyncBridge@2024 - 心跳间隔:
3000 - 同步间隔:
1000
- 是否选择全部变量:
-
启动同步
- 启动实例1的 SyncBridge 插件
- 启动实例2的 SyncBridge 插件
- 实例1中的数据会主动发送到实例2中进行同步
-
强制配置同步
- 在实例2中点击"强制同步"按钮
- 实例2会主动获取实例1中的变量等配置
- 实例2中可以看到主站中的相关配置,对应的变量也会显示在线状态
最佳实践
网络配置
-
网络拓扑
- 采用星型拓扑,以一个主站为中心,连接多个从站
- 确保网络连接稳定,避免单点故障
- 对于跨网络部署,确保防火墙已开放相应端口
-
端口配置
- 选择未被占用的端口,建议使用 1024 以上的端口
- 确保主站和从站使用相同的端口配置
- 避免使用常用端口,减少冲突风险
-
IP 配置
- 使用静态 IP 地址,避免 DHCP 导致的 IP 变化
- 确保主站 IP 地址可被所有从站访问
- 对于动态 IP 环境,考虑使用 DDNS 服务
安全配置
-
验证令牌
- 使用强密码作为验证令牌,包含大小写字母、数字和特殊字符
- 定期更新验证令牌,提高安全性
- 确保所有实例使用相同的验证令牌
-
网络安全
- 在生产环境中,建议使用 VPN 或专用网络进行数据同步
- 启用网络防火墙,限制只有授权设备可以访问同步端口
- 考虑使用 SSL/TLS 加密,保护数据传输安全
-
访问控制
- 限制 SyncBridge 插件的访问权限,只有授权用户可以配置
- 定期检查同步日志,发现异常访问及时处理
性能优化
-
同步间隔
- 根据数据更新频率设置合理的同步间隔
- 数据变化频繁的场景,建议设置较短的同步间隔
- 数据变化较少的场景,建议设置较长的同步间隔,减少网络开销
-
心跳间隔
- 根据网络稳定性设置合 理的心跳间隔
- 网络不稳定的环境,建议设置较短的心跳间隔
- 网络稳定的环境,建议设置较长的心跳间隔,减少网络开销
-
数据量控制
- 只同步必要的数据,避免同步过多无关数据
- 对于大型部署,考虑使用多个主站,分担同步压力
- 启用"选择全部变量"选项,简化配置管理
可靠性保障
-
故障转移
- 设计主站故障转移机制,当主站不可用时,自动切换到备用主站
- 定期测试故障转移流程,确保其可靠性
-
数据一致性
- 定期验证主站和从站的数据一致性
- 对于关键数据,考虑使用手动验证机制
-
监控与告警
- 监控 SyncBridge 插件的运行状态
- 设置告警机制,当同步失败时及时通知
- 监控网络连接状态,确保同步通道畅通
-
日志管理
- 启用详细日志,记录同步过程中的关键事件
- 定期清理日志文件,避免磁盘空间耗尽
- 建立日志分析机制,及时发现潜在问题