背景,业务系统需要记录每个终端打开,关闭的时间,正常使用情况下,可以准确记录对应的时间,由于使用部门的使用习惯,比如直接关机,或者杀软件进程,针对这些非正常操作,如何较准确记录这个时间,是这个需求的关键点。
方案,由于要考虑异常关闭软件,设想引入心跳机制,由终端定时发起心跳至服务端,服务端根据心跳信息实时更新终端的状态,考虑到业务比较复杂,不改变现有业务逻辑情况下,这边引入临时存储方案,存储关键信息,然后加上异常监测判断。
终端状态的存储,考虑到软件负载情况,需要全局存储,有两种方案,一种是用缓存比如redis.另一种就是数据库。考虑到稳定性,终端数量千单位级别不大,采用数据库表形式存储终端心跳信息。
异常终端检测,采用实时调度,从终端状态表拉数据,根据终端记录的最新时间,根据心跳时间,加调度频率,判断终端是否异常,如果是,进行终端关闭业务处理。
终端正常关闭时,要同时清除终端状态表对应的数据,避免触发多次关闭终端。
有好的想法或者建议欢迎交流
网友评论