跳到主要内容

为什么选择云同步

跨服同步插件很多,真正的差别在于出事的时候:切服太快、数据库卡一下、分流突然崩溃、停服更新时玩家还在线。 下面这张表列出常见做法在这些情况下会怎样,以及云同步怎么处理。

一张表看差异​

情况常见做法云同步
切服时旧分流还没存完等固定几秒再读取,网络或数据库一慢就读到旧存档(回档)新分流拿不到锁就不读,冻结玩家等旧分流存完归还(默认最多 5 秒),读到的一定是最新版本
两个分流同时写同一个人后写的覆盖先写的,物品可能复制或消失写入条件是「持有者 + 版本号」都对,不符合就写不进去,冲突的一方直接锁定该玩家
存档数据损坏直接载入每份快照带 SHA-256,校验不过就拒绝载入并踢出,不会把坏数据套到玩家身上
分流崩溃 / 被强制关闭玩家资料一直被标记为「使用中」,要管理员手动解锁,或者干脆不管锁(有复制风险)锁只在持有分流还有心跳时有效;崩溃的分流停止心跳后,玩家到别的分流就能载入最后一份完整存档
数据库卡顿 / 断线玩家继续游玩,之后存档失败,搬过的东西回档或复制续约失败立刻冻结(不能搬、丢、交易、放方块),恢复后自动解冻;确定不安全才踢出
背包塞满大量 NBT 物品存档超时、写入失败,甚至卡住主线程压缩后超过上限(默认 4 MB)就拒绝写入并取消切服,提示玩家先清潜影盒;所有数据库操作都在异步线程
插件启动失败(配置错、连不上库)插件停用,玩家照样进服,用本地旧资料游玩,之后全乱挡下所有登录并提示原因,修好重启才放人
停服更新直接 stop,最后几秒的操作看运气/maintenance run:先存档、冻结,送大厅或安全踢出,确认清空才关服;有人存档失败就取消关服
需要的组件常要求 Redis 或额外的同步中继只要 MySQL;Redis 可选(加速转服),故障时自动回退
语言英文指令、提示、配置注释全中文

和 HuskSync 怎么选​

HuskSync 是很成熟的开源同步插件,两者的取舍很清楚:

  • HuskSync 同步的数据种类更多:成就进度、统计、位置、持久化数据(PDC)等。如果这些对你很重要,请选择 HuskSync。
  • HuskSync 需要 Redis;云同步只要 MySQL 就能完整运作,Redis 只是可选的加速。
  • 云同步专注在「绝不复制、绝不回档」的流程:租约锁、心跳接管、卡顿冻结、启动失败挡登录,以及维护模式 / 安全排空重启,全部内置。
  • 云同步附赠 Bungee 加强模块:先存档再转服,并按 TPS、人数、内存挑选最健康的分流。

适合谁​

  • 背包里有贵重物品的 RPG / 生存分流服:复制一件神器就能毁掉经济,云同步把「不复制」放在第一位。
  • 分流多、常重启的服务器:崩溃自动接管、维护模式安全排空,不用每次手动解锁玩家。
  • 只有 MySQL、不想再维护 Redis 的小团队。
  • 想要中文配置与中文支持的服主。

目前不包含的功能​

云同步专注于「背包与角色状态」的安全同步,以下内容目前不同步:

  • 成就进度、统计数据、玩家位置
  • 其他插件存在玩家身上的持久化数据(PDC)
  • 跨服聊天、跨服传送(请搭配专门的插件)