风控的决策不能等:交易的瞬间要判断是否放行、登录的时刻要判断是否放行——毫秒级的风险决策链在操作的路径上实时拦截。决策链的设计要点是规则的缓存、判短的顺序与降级的兜底。
---实时风控:规则的快速评估
function RiskEngine.evaluate(uid, action)
-- 先查缓存:短窗口内不重复评估
local cached = RiskCache.get(uid, action)
if cached ~= nil then return cached end
-- 规则链按优先级依次评估
for _, rule in ipairs(RiskEngine.rules) do
local hit = rule.check(uid, action)
if hit then
RiskCache.set(uid, action, rule.result)
return rule.result
end
end
RiskCache.set(uid, action, 'pass')
return 'pass'
end
决策链的评估用缓存的短路:短窗口内的重复评估直接取缓存的结果——缓存的 TTL 5 秒,同一玩家的连续操作不重复跑规则链。规则的评估按优先级排序:高优先级的规则(黑名单、冻结)先评估、低优先级的(频控、画像)后评估——风险的拦截在第一道就完成。评估的耗时预算 5 毫秒:超预算的规则链降级为仅黑名单校验,风控的延迟不能拖慢业务的响应。
---决策链的降级:规则引擎异常时的兜底
function RiskEngine.safeEvaluate(uid, action)
local ok, result = pcall(RiskEngine.evaluate, uid, action)
if not ok then
-- 规则引擎异常:降级为仅黑名单
Ops.alert('风控降级', uid)
return Lists.check('black', uid) == false
end
return result
end
规则引擎的异常用 pcall 兜底:规则链的任何异常降级为仅黑名单校验——黑名单是最简单也最可靠的防线,规则引擎的复杂逻辑可以降级但黑名单不能省。降级的事件告警进值班的群,风控的降级意味着防御的缺口存在——降级的时长要短,修复要快。风控的决策日志全量留痕:评估的输入、命中的规则、返回的结果,误判的追溯有完整的链路。
决策链的延迟分位监控:P99 的评估耗时不超过 5 毫秒;降级的频次与时长监控,降级的常态化提示规则引擎需要扩容或优化。
规则的缓存曾经不按动作区分,登录的缓存结果被交易复用,缓存的键加动作类型。降级的黑名单校验曾经不查过期,过期的黑名单条目仍然拒绝,过期的校验补上。决策的日志曾经全量打印,高峰期的日志量拖慢 IO,日志的采样率按风险等级分级。
决策链的预算与降级策略进配置,性能的退化自动触发降级。风控的规则变更走审批,变更的影响评估在灰度环境验证。决策的延迟进性能的看板,风控的速度与精度同时可见。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 战士的烈火剑法一击熄火后要等八秒冷却,连招断档感强烈。疾风烈火斩在烈火剑法命中后给一次连击窗口:三秒内再…
实战应用:用在哪里 阵营对抗打到中期容易疲软:打赢没有额外好处,输掉也没有代价。阵营声望体系给阵营战装上荣誉刻度:个人与阵营…
实战应用:用在哪里 拿下沙巴克之后呢?城主除了名字挂在城墙上,对城市毫无影响。城主施政玩法让占领变成治理:城主每周获得市政令…
实战应用:用在哪里 主线路光缆被挖断的深夜,全服掉线 20 分钟,玩家以为游戏倒闭。备用线路方案给接入层配第二条出口:主线路…
实战应用:用在哪里 行会官员由帮主任命的老模式弊端明显:任人唯亲、能上不能下。行会选举接口把官员换届做成投票制:每两个月一次…
实战应用:用在哪里 烈火剑法的伤害加成、冷却时间、下一级提升,全靠玩家记忆或去官网查。技能说明悬浮卡片在鼠标悬停技能图标零点…