7. 边缘运维与设备替换(Gossip 分布式配置同步)
7.1 阶段目标
- 建立基于 Gossip 的本地网络配置一致性机制。
- 每个节点将本机与最近邻节点配置增量同步到本机 bbolt DB。
- 支持设备替换与离线缓存,网络恢复后自动补同步。
- 提供冲突检测与自动合并,冲突全过程审计可追溯。
7.2 同步数据模型
device_uuid:Base58 编码,默认基于 LAN 口 MAC 生成;支持手动指定。
config_content:配置文件完整内容(文本或二进制编码)。
sync_timestamp:最近一次同步时间戳(UTC,毫秒精度)。
config_sha256:配置内容 SHA-256 哈希。
source_node:来源节点 UUID。
version_vector:可选向量时钟,用于高级冲突定位。
7.3 UUID 规则
- 默认生成:
uuid = Base58(SHA-256(lan_mac))[0:22]。
- 手工指定:写入本地设备标识配置,重启后生效且优先级高于默认生成。
- 替换场景:新设备可继承旧 UUID,确保邻居节点将其识别为同一逻辑节点。
7.4 架构组件
- Gossip 通讯模块:节点发现、成员心跳、增量反熵同步。
- bbolt 持久化层:桶设计包括
configs、sync_meta、offline_queue、conflict_logs。
- 冲突解决引擎:时间戳最新优先(Last-Write-Wins)策略,保留审计轨迹。
- 离线补同步队列:断网时写入队列,恢复后按时间顺序重放并去重确认。
- 运维工具与监控 API:UUID 管理、同步状态监控、冲突处理。
7.5 同步流程
- 本地配置变更后计算 SHA-256 并写入 bbolt。
- Gossip 广播摘要;邻居比对后按需请求缺失配置内容。
- 接收端执行冲突检测,按最新时间戳合并并记录审计日志。
- 合并结果写入
configs 并更新时间戳,触发二次扩散。
- 离线节点恢复后,自动从邻居拉取缺失版本并补齐。
7.6 异常与恢复策略
- 网络分区:分区内局部一致,合区后执行冲突归并与去重扩散。
- 设备掉线:节点状态标记为
suspect/down,保留其最近有效配置快照。
- 配置回滚:支持指定
config_sha256 或时间点回滚,并通过 Gossip 广播回滚版本。
- 时钟漂移:启用 NTP 校时;漂移超阈值时标记低可信并告警。
7.7 监控 API
GET /api/v1/ops/sync/nodes:节点在线状态与最近同步时间。
GET /api/v1/ops/sync/status:全局同步进度、队列长度、补同步耗时。
GET /api/v1/ops/sync/conflicts:冲突列表、处理结果、责任节点。
POST /api/v1/ops/sync/reconcile:触发手动补同步与重算。
POST /api/v1/ops/uuid/assign:手工设置设备 UUID(重启后生效)。