不少学校遇到过这样的尴尬:认证系统说某人已经上线,计费系统却没开始计时;或者账号早被禁用,计费还在默默累加。问题出在认证和计费各跑各的,中间靠人工或者定时同步去凑。要不算两套账,得让认证动作和计费动作发生在同一条链路上。
认证通过的那一刻就该开户计时
标准做法是在认证成功后由认证设备把上线事件推给计费模块,计费模块当场建会话、开始计时或计流量。这样认证和计费用的是同一个会话标识,后面无论掉线、漫游还是强制下线,都能对应到同一笔账。如果中间隔了一个定时任务去刷数据,延迟那几分钟就会变成对账时说不清的缺口。
认证策略变了计费要跟着变
比如教学区默认免单、宿舍区按时长收费,这种区分本质上是认证策略里的区域标签决定的。计费规则应当直接读区域标签,而不是再让网管在计费系统里手动画一遍区域。认证侧调整了区域归属,计费侧自动跟着生效,才不会出现教学区被误收费的投诉。
禁用和销户要同一个出口
学生退学、老师调走,账号在统一身份认证里禁用。如果这个禁用事件没有同步到计费系统,旧账号可能还在产生欠费或者占用配额。联动要做到账号状态变更即触发计费侧会话终结和余额冻结,避免离校的人还在学校的账单上挂着。
漫游场景最容易漏账
学生在宿舍连上,走到图书馆切换到另一个接入点,认证可能重新协商一次。如果计费系统把每次重协商都当成新会话,就会重复计时或者重复扣流量。正确的做法是按账号维度合并同一段连续在网时间,认证侧做无缝漫游,计费侧只认账号不认接入点切换。
出账要以计费系统的明细为准
对账时以谁为准,必须提前定死。认证系统记录的是上线下线,计费系统记录的是每一笔钱的来龙去脉。两者应当一致,但若出现偏差,以计费明细为准去回溯认证日志,而不是反过来用认证日志去改计费金额。口径统一了,财务和网信办才吵不起来。
上线前要画一张事件流图
认证和计费联动前,先把账号上线、下线、禁用、漫游这几个事件在两张系统里的对应关系画成一张图。哪一步推给计费、推什么字段,写清楚再开发。很多联动故障源于双方对事件定义理解不一致,图一画就暴露。
测试要用真实异常场景
联动不能只测正常上线。要故意制造掉线、伪造区域切换、重复认证这些异常,看计费会不会多计时或者漏计时。真实网络里异常天天有,只在愉快路径上测过的联动,上线第一天就露馅。
两边时钟要一致
认证设备和计费服务器时钟差的那几秒,会让上线事件和计费会话对不上。联动前把两台设备校时到同一时间源,日志时间轴才对齐。这个细节不起眼,对账查不清时它往往就是元凶。
权限要分开给
认证系统和计费系统的管理账号不要共用。谁改了认证策略、谁动了计费规则,各自留痕。混用账号出了错账,分不清是认证侧还是计费侧动的,追责都难。
联调要双方在场
认证和计费联调,不能认证厂家调完走人、计费厂家再来。两方要在场对着事件流图一条条过,谁推谁收当场确认。分开调容易在接口处留空档,上线后账对不上再叫两方,互相推。
保留手动对账兜底
再自动的联动也要留手动对账入口。系统异常时,网管能拉两边原始记录自己比对,不至于系统说平就平。兜底不是不信任系统,是出事时有手段定位,不至于干瞪眼。
变更要通知对方
认证侧改了区域标签,要通知计费侧确认规则是否要跟着调。两个系统分属不同团队时,这种通知最容易断。建立变更互告机制,一方动配置另一方心里有数,不会莫名其妙多收钱。
文档要画时序图
联动逻辑别只写文字,画一张时序图:哪个事件先、推什么、计费怎么响应。图比文字不容易误解,新人接手对着图就能懂。时序图进交接文档,联动才传得下去。
联动要纳入演练
认证计费联动别上线就不管,纳入每学期一次的故障演练。故意断认证看计费怎么收尾,演练出问题提前改。演练过的联动,真故障时不慌。
联调环境要贴近生产。别在干净测试网里调联动,拿一台真实接入点和一批真实账号跑,才能看见区域标签、漫游这些真实问题。测试环境太理想,上线遇到的全是生产特有坑。
对账不平要先查时区再查逻辑。联动出差异,第一反应是两边时间轴没对齐,先校时再比金额。很多看似计费错了,其实是认证事件晚到几秒被记到另一天。顺序错了白查半天。
认证和计费本就是一条链路的两端,硬拆成两套独立系统,后面所有的对账麻烦都是这么来的。联动不是加一个接口那么简单,是把账号状态、区域标签、会话生命周期这三件事在两套系统里用同一套语言描述。