六条产品线共享一套掉落逻辑,掉率调整要改六个地方的配置文件,改漏一个就是“两服爆率不一样”的舆情。统一配置中心把配置收拢:中心一份源,各服订阅版本号,变更全量同步,漂移可检测。
各服记录已应用版本,中心发新版广播后各服拉取并对齐版本号。actor上下文外的服务级逻辑用系统变量记录版本。
local function applyConfigVersion()
local remote = tonumber(getsysvar("CFG_CENTER_VER") or "0")
local localVer = tonumber(getsysvar("CFG_LOCAL_VER") or "0")
if remote > localVer then
callscript("load_center_config")
setsysvarex("CFG_LOCAL_VER", remote, 1)
return true
end
return false
end
定时器每日比对本地配置哈希与中心登记哈希,不一致即告警并锁定本地改动。
setontimerex(97, 86400)
function ontimer97()
local mine = getsysvar("CFG_HASH_LOCAL") or ""
local center = getsysvar("CFG_HASH_CENTER") or ""
if mine ~= center and center ~= "" then
setsysvar("CFG_DRIFT", 1)
sendcentermsg("配置一致性检查未通过,已通知维护")
end
end
演练发布一次配置变更,六服版本号与哈希全量对齐;人为改漂一个服验证告警触发。监控配置同步的完成时长,超过五分钟未全对齐说明有服掉线,配置中心的状态要人工确认。
callscript的配置加载脚本名要与注册名逐字一致,加载失败版本号已推进,配置实际没生效,版本推进必须放在加载成功之后。哈希算法各服要一致,不同引擎分支的字符串哈希结果不同,哈希在中心算好下发比对值。CFG_DRIFT告警只报一次,修复后要清零,常亮告警会被人忽略。紧急回滚配置时版本号回退比前进更危险,配置中心只支持前进,回滚用反向变更实现。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 悬赏捕杀把玩家之间的恩怨变成可托付的系统行为:仇家难以亲自复仇时,花费金条发布悬赏,全服玩家接单击杀目标…
实战应用:用在哪里 策划改表是日常动作,漏填字段、引用了不存在的编号、数值越界这三类问题占了配表故障的绝大多数。等玩家报错再…
实战应用:用在哪里 行会擂台给中小行会提供了固定的对抗出口:挑战方击败守擂方后接管擂台,连胜次数决定每日结算奖励档位。接口层…
实战应用:用在哪里 世界首领战里玩家最关心的是伤害前十名:榜单要求随时插入、随时能按序取出,每来一条伤害记录都重新排序一次太…
实战应用:用在哪里 百人同屏的攻城战里,把每条移动、施法消息广播给全地图是最常见的性能失误。九宫格视野的做法是把地图切成等大…
实战应用:用在哪里 留言板、行会招募语、邮件标题这类字段会被玩家自由填写,并写入角色变量或转发给持久层。拼接式的写法一旦遇到…