跳到主要内容

数据同步插件

概述

SyncBridge 是 ThingsGateway 中用于不同实例进程之间的数据同步插件,支持运行态数据同步和强制同步数据库配置(通道、设备、变量)。通过 SyncBridge,可以实现多实例部署场景下的数据一致性和高可用性,确保各实例之间的配置和数据保持同步。

核心功能

  • 运行态数据同步:主站主动将运行态数据同步到其他实例
  • 配置同步:支持强制同步数据库配置,包括通道、设备和变量
  • 灵活的网络架构:支持主站作为 TcpClient 或 TcpService 启动
  • 双向通信:基于 TCP 协议的双向通信机制
  • 心跳检测:服务与客户端之间的心跳机制,确保连接稳定
  • 安全验证:通过验证令牌确保数据同步的安全性

应用场景

  • 分布式部署:多实例部署,实现负载均衡和高可用性
  • 远程监控:将现场数据同步到远程监控中心
  • 数据备份:实现数据的实时备份,提高系统可靠性
  • 跨网络同步:在不同网络环境下实现数据同步
  • 混合云部署:在本地和云端实例之间实现数据同步

工作原理

SyncBridge 采用主从架构,通过 TCP 协议实现实例之间的通信:

  1. 主站:作为数据源,负责主动同步运行态数据到其他实例
  2. 从站:作为数据目标,接收主站同步的数据
  3. 通信机制:基于 TCP 协议的双向通信,支持心跳检测和断线重连
  4. 数据同步:主站按照配置的同步间隔,将运行态数据发送到从站
  5. 配置同步:支持手动触发强制同步,将主站的配置同步到从站

插件属性配置

配置界面

详细配置项

配置项说明默认值建议值
是否选择全部变量是否选择全部变量,true时不需要单个变量添加业务属性,只有主站需要添加变量False变量较多时建议启用
是否Tcp服务是否开启Tcp服务,等待其他实例连接False主站作为服务端时启用
是否主站是否主站,主站会主动同步运行态数据到其他实例False数据源实例设置为 true
服务UriTcp服务 IP端口192.168.1.1:7777如 "192.168.1.1:7777"
验证令牌不同实例的令牌需一致-使用强密码,如 "SyncBridge@2024"
心跳间隔服务与客户端之间的心跳间隔时间(ms)30根据网络状况调整
同步间隔主站会主动同步运行态数据到其他实例的间隔时间(ms)10根据数据更新频率设置

配置案例

案例1:基本数据同步

场景:实现两个 ThingsGateway 实例之间的数据同步,实例1作为主站,实例2作为从站。

配置步骤

  1. 实例1配置(主站)

    • 是否选择全部变量:True
    • 是否Tcp服务:True
    • 是否主站:True
    • 服务Uri:192.168.1.100:7777
    • 验证令牌:SyncBridge@2024
    • 心跳间隔:3000
    • 同步间隔:1000
  2. 实例2配置(从站)

    • 是否选择全部变量:True
    • 是否Tcp服务:False
    • 是否主站:False
    • 服务Uri:192.168.1.100:7777
    • 验证令牌:SyncBridge@2024
    • 心跳间隔:3000
    • 同步间隔:1000
  3. 启动同步

    • 启动实例1的 SyncBridge 插件
    • 启动实例2的 SyncBridge 插件
    • 实例1中的数据会主动发送到实例2中进行同步
  4. 强制配置同步

    • 在实例2中点击"强制同步"按钮
    • 实例2会主动获取实例1中的变量等配置
    • 实例2中可以看到主站中的相关配置,对应的变量也会显示在线状态

最佳实践

网络配置

  1. 网络拓扑

    • 采用星型拓扑,以一个主站为中心,连接多个从站
    • 确保网络连接稳定,避免单点故障
    • 对于跨网络部署,确保防火墙已开放相应端口
  2. 端口配置

    • 选择未被占用的端口,建议使用 1024 以上的端口
    • 确保主站和从站使用相同的端口配置
    • 避免使用常用端口,减少冲突风险
  3. IP 配置

    • 使用静态 IP 地址,避免 DHCP 导致的 IP 变化
    • 确保主站 IP 地址可被所有从站访问
    • 对于动态 IP 环境,考虑使用 DDNS 服务

安全配置

  1. 验证令牌

    • 使用强密码作为验证令牌,包含大小写字母、数字和特殊字符
    • 定期更新验证令牌,提高安全性
    • 确保所有实例使用相同的验证令牌
  2. 网络安全

    • 在生产环境中,建议使用 VPN 或专用网络进行数据同步
    • 启用网络防火墙,限制只有授权设备可以访问同步端口
    • 考虑使用 SSL/TLS 加密,保护数据传输安全
  3. 访问控制

    • 限制 SyncBridge 插件的访问权限,只有授权用户可以配置
    • 定期检查同步日志,发现异常访问及时处理

性能优化

  1. 同步间隔

    • 根据数据更新频率设置合理的同步间隔
    • 数据变化频繁的场景,建议设置较短的同步间隔
    • 数据变化较少的场景,建议设置较长的同步间隔,减少网络开销
  2. 心跳间隔

    • 根据网络稳定性设置合理的心跳间隔
    • 网络不稳定的环境,建议设置较短的心跳间隔
    • 网络稳定的环境,建议设置较长的心跳间隔,减少网络开销
  3. 数据量控制

    • 只同步必要的数据,避免同步过多无关数据
    • 对于大型部署,考虑使用多个主站,分担同步压力
    • 启用"选择全部变量"选项,简化配置管理

可靠性保障

  1. 故障转移

    • 设计主站故障转移机制,当主站不可用时,自动切换到备用主站
    • 定期测试故障转移流程,确保其可靠性
  2. 数据一致性

    • 定期验证主站和从站的数据一致性
    • 对于关键数据,考虑使用手动验证机制
  3. 监控与告警

    • 监控 SyncBridge 插件的运行状态
    • 设置告警机制,当同步失败时及时通知
    • 监控网络连接状态,确保同步通道畅通
  4. 日志管理

    • 启用详细日志,记录同步过程中的关键事件
    • 定期清理日志文件,避免磁盘空间耗尽
    • 建立日志分析机制,及时发现潜在问题

故障排查

常见问题及解决方案

问题可能原因解决方案
连接失败1. 网络连接问题
2. 服务Uri配置错误
3. 防火墙阻止
4. 验证令牌不一致
1. 检查网络连接状态
2. 验证服务Uri格式和正确性
3. 检查防火墙设置,开放相应端口
4. 确保所有实例使用相同的验证令牌
同步数据丢失1. 网络中断
2. 同步间隔设置不合理
3. 主站负载过高
1. 检查网络连接稳定性
2. 调整同步间隔,确保数据及时同步
3. 检查主站资源使用情况,优化配置
从站数据不同步1. 主站未启用
2. 同步间隔设置过长
3. 变量配置不匹配
1. 确保主站已启用并正常运行
2. 调整同步间隔,缩短同步时间
3. 执行强制同步,确保配置一致
心跳失败1. 网络延迟过高
2. 心跳间隔设置过短
3. 系统负载过高
1. 检查网络连接质量
2. 调整心跳间隔,适应网络延迟
3. 检查系统资源使用情况,优化配置
强制同步失败1. 网络连接问题
2. 主站配置错误
3. 权限不足
1. 检查网络连接状态
2. 验证主站配置是否正确
3. 确保用户具有足够的权限执行强制同步

日志分析

当遇到问题时,建议查看以下日志:

  1. ThingsGateway 日志:查看与 SyncBridge 相关的日志,了解插件的运行状态和错误信息
  2. 系统日志:查看操作系统的网络和系统日志,了解网络连接状态

总结

SyncBridge 是 ThingsGateway 中功能强大的数据同步插件,通过合理配置和优化,可以实现多实例之间的数据实时同步,提高系统的可靠性和可用性。在实际应用中,应根据具体场景和需求,选择合适的配置参数、网络拓扑和安全策略,以达到最佳的同步效果。同时,结合监控和故障排查机制,确保数据同步的稳定性和安全性。