CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
数据存储

【数据存储】读写分离:查询走从库的延迟应对

2026-09-23 17:01 作者:996 技术组 0 阅读 996引擎Lua教程传奇脚本

实战应用:用在哪里

主库一扛写一扛读迟早撑不住:读写分离把查询分流到从库,主库专注写入。分离的代价是从库复制延迟——刚充值的元宝在从库查不到,玩家秒变"数据丢失"。延迟的应对策略是读写分离方案能否成事的分水岭。

分流的路由规则

lua

---查询路由:写后读回源主库
local route = { master = DB.master(), slave = DB.slave() }

function DB.route(sql, userId)
    local recentWrite = WriteTrack.lastWriteAt(userId)
    -- 写后 5 秒内的读走主库,规避复制延迟
    if recentWrite and os.time() - recentWrite < 5 then
        return route.master
    end
    if sql:sub(1, 6) == "SELECT" then
        return route.slave
    end
    return route.master
end

路由的三条规则:写操作永远走主库、纯读走从库、写后 5 秒内该玩家的读强制回主库。第三条是关键——支付到账、元宝变动后的即时查询走主库,玩家看不到自己刚买的东西的客诉源头即被掐断。WriteTrack 记录每个玩家的写时间戳,内存里的一个小表,开销可忽略。

延迟的监控与降级

lua

---从库延迟探测:超过阈值降级单库
setontimerex(44, 10)
function DB.checkLag()
    local lag = DB.slaveLagSeconds()
    if lag > 3 and not DB.degraded then
        DB.degraded = true
        Ops.alert("从库延迟 " .. lag .. " 秒,读流量降级回主库")
    elseif lag <= 1 and DB.degraded then
        DB.degraded = false
        Ops.alert("从库延迟恢复,读流量回归从库")
    end
end

每 10 秒探测一次从库的复制延迟,超过 3 秒把读流量整体降级回主库——主库多扛一阵读好过玩家看到旧数据。降级与恢复都有告警,从库的健康状态在运维群里可见。排行榜与战报这类容忍秒级延迟的查询即使降级也走从库:沙巴克战报晚 10 秒无人在意,元宝余额晚 1 秒就是客诉,路由按数据的敏感度分级。

验证与监控

主从延迟的分位监控与降级次数周报,降级频繁说明从库规格不足;写后读回主库的命中率统计,策略有效性的直接证据。

踩坑记录

写后 5 秒的窗口曾经没覆盖异步发货,支付回调写主库后 6 秒玩家查订单走从库仍旧看不到,写标记的时效改为跟随业务事务提交。降级的恢复曾经没有迟滞,延迟在阈值附近抖动导致读流量来回横跳,恢复阈值加 1 秒的缓冲带。从库曾经承接了报表任务的大查询,磁盘 IO 打满拖高复制延迟,报表查询隔离到独立的统计库。

上线要点

敏感度分级清单由业务评审确认:余额、订单、背包为敏感级,排行、战报、公告为容忍级。路由层对业务透明,SQL 不感知去向,切库只动配置。从库的规格与主库对齐,延迟的根因多数是从库硬件缩水。

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

运维发布服务降级保底预案

【运维发布】服务降级预案:核心链路的保底方案

实战应用:用在哪里 排行榜卡死拖累登录、成就推送挤占带宽,这些非核心功能出问题时最需要的是一个总闸。服务降级预案定义了核心链…

2026-09-23 22:46 996 技术组 · 0 阅读
框架设计装备共鸣套装加成

【框架设计】装备共鸣:多件套共鸣与全局加成

实战应用:用在哪里 单件装备的属性提升有限,套装共鸣让多件装备产生化学反应:穿戴同系三件以上触发共鸣属性,五件触发全局光环。…

2026-09-23 22:46 996 技术组 · 0 阅读
安全加密异常登录多设备拦截

【安全加密】异常登录防护:多设备同时在线的检测与拦截

实战应用:用在哪里 同一账号在两台设备同时在线,一台打怪一台交易,是盗号者测试密码后的标准动作。多设备在线检测在登录环节检查…

2026-09-23 22:46 996 技术组 · 0 阅读
数据存储数据迁移搬家批量

【数据存储】数据迁移:角色数据的批量搬家实践

实战应用:用在哪里 老服合并、机房迁移、数据分库改造,都涉及角色数据的批量搬家。数据迁移的核心是搬运过程中不断服、不丢数据、…

2026-09-23 22:46 996 技术组 · 0 阅读
引擎触发沙影之路暗之Boss镜像刷新

【引擎触发】沙影之路:暗之Boss的镜像刷新触发设计

实战应用:用在哪里 沙影之路的暗之Boss是行会实力的试金石:真身与三个镜像随机分布在四个祭坛,只有击杀真身才有掉落,镜像被…

2026-09-23 22:46 996 技术组 · 0 阅读
玩法策划攻城拔寨城门战术

【玩法策划】攻城拔寨:城门攻坚的战术分层设计

实战应用:用在哪里 攻城战最容易变成人海推门的无脑玩法。攻城拔寨将城门攻坚设计为三线战术:正面强攻吸引火力、侧翼工程车破城、…

2026-09-23 22:46 996 技术组 · 0 阅读