脱网记账
一句话定义
脱网记账是设备在断网时凭本地白名单放行、把消费记录存在本地,网络恢复后自动补传服务器,补传不丢账。
断网那一刻设备做了什么
设备平时会把人员名单和 白名单与黑名单 同步到本地(国万消费机白名单容量 20000 张),同时内置固化存储区(容量 100000 条记录)。
网络一断,设备立刻切到脱网模式:
① 刷卡时不再上传服务器,改为在本地白名单里查这张卡;
② 查到就放行,把「卡号 + 金额 + 时间」写进本地记账存储;
③ 屏幕上正常显示本次金额和余额,语音正常播报;
④ 前台操作员和就餐者完全感觉不到断网。
网络恢复后,设备自动把本地记录按时间顺序补传服务器,服务器重算余额,不一致的会标记出来。
余额是怎么算的
断网期间余额不能靠服务器,只能本地推算:
可用余额 = 上次同步余额 − 断网期间本地累计消费
所以设备不会因为断网就让人无限刷。这个算法保证了不会透支,但有个前提:断网前必须完成过一次名单和余额同步。如果设备刚装上还没同步就断网,白名单是空的,谁都刷不了。
容量怎么估算
两个容量要分开算:
白名单 20000 张 —— 按「单台设备服务的人数」算。如果一台设备管 3000 人,2 万张够用;如果是园区共用设备,要注意总人数上限。
记账 100000 条 —— 按「断网期间可能产生的笔数」算。假设一台设备每天 800 笔,10 万条能存 125 天,完全够用;只有在极端情况下(长期断网 + 高流量)才可能写满,写满后设备会停止脱网消费并提示。
补传与数据一致性
补传不是简单地把记录堆上去,要处理三种情况:
① 重复上传 —— 记录带唯一序号,服务器按序号去重,不会重复扣款。
② 顺序错乱 —— 多条记录可能乱序到达,服务器按消费时间戳排序后重算余额。
③ 余额冲突 —— 如果断网期间有人在线充值,重算时会出现余额对不上,这类记录会被标记为「待核对」,由管理员确认。
国万消费机的补传采用扩展型 UDP 协议,自带数据包无反馈 3 次发送机制,丢包会自动重发。
两个必须注意的前提
① 脱网期间扫码不可用。扫码支付依赖服务器实时扣款,断网时只能用刷卡通道。
② 脱网记录不能作为最终账。补传完成后要以服务器数据为准做一次对账,特别是断网跨了月结日的,补贴清零等规则要在补传后再执行一次。