一种基于内存的设备后台指令管理系统的控制方法

文档序号:9667190阅读:398来源:国知局
一种基于内存的设备后台指令管理系统的控制方法【
技术领域
】[0001]本发明涉及一种基于内存的设备后台指令管理系统的控制方法,具体涉及一种基于内存的现金设备(如点钞机、清分机及ATM等)后台指令系统包括生成、保存、发送的控制方法。【
背景技术
】[0002]从2011年起,人民银行要求银行现金设备(A类点钞机,清分机和ATM)具备识别人民币冠字号功能,并且以标准FSN文件格式向中心汇报,这样所有的银行现金设备都必须具备联网功能。大银行的省级分行下辖众多网点拥有各类现金设备从几千到几万不等,其中A类点验钞机占比最高。对众多现金设备的管理,包括远程监控,升级管理,黑名单管理,设备参数管理,数据汇总等成为难题,特别是在后台对设备的指令管理往往需要分地区单独分设服务器,比较占用服务器资源,也不便服务器维护和管理。【
发明内容】[0003]本发明的目的在于提供一种基于内存设备后台指令管理系统的控制方法,把对设备的管理指令存放于内存,对指令的存取异常高效,可以对接非常多的终端设备,同时以异步方式进行指令的持久化,系统重启之后指令不会丢失。[0004]为解决上述问题,本发明技术方案如下:基于内存的指令管理系统及控制方法,包括:指令请求(CommandRequest),指令请求表(CommandRequestTable),指令规划器(CommandScheduler),指令表(Commandtable),指令(Command),指令池(CommandPool)和任务安排器(Quartzjob)。[0005]所述指令请求(CommandRequest)由管理员通过后台程序(浏览器)或者自动程序发出的一个命令,为一个指令请求,比如下发广告信息。[0006]所述指令规划器(CommandScheduler)是一个把指令请求,根据系统设置的参数和逻辑,计算出指令发布的时间;指令规划器需考虑每种指令请求的不同特点,比如不同指令请求的执行时间,有无上下行数据,上下行数据的大小,指令的实时性等,形成不同的算法来计算指令的发布时间,并维护指令的状态。[0007]所述指令表(Commandtable)持久化所有指令内容,里存放由指令规划器生成的针对客户端的所有指令,指令表以客户端ID,指令编号,指令内容,状态等格式存放。[0008]所述指令(Co_and)中的一条数据称为一条指令,它亦是服务器对一个客户端的一个命令。指令包含5种状态,分别为创建(created),缓存(pooled),发送(sent),接收(accepted),完成(completed)。[0009]所述指令池(CommandPool)是一个以客户端ID/机具ID为Key,指令列表为value的哈希表。这个哈希表缓存在内存里,通过Ehcache在不同instance(实例)间进行同步。[0010]所述任务安排器(Quartzjob),根据设定时间间隔,扫描指令请求来生成指令清单,并放入基于内存的指令缓存池(CommandPool)。[0011]上述基于内存设备指令管理系统,其中,指令池(CommandPool)是一个存放各种设备指令一段内存,对指令池的读,写,改就是直接对内存的操作,效率非常高。[0012]上述基于内存设备指令管理系统,其中,指令表(Commandtable)写入和修改都以异步方式,不会阻塞当前线程。[0013]上述基于内存设备指令管理系统,其中,指令(Command)状态的变迀顺序为:创建(created),缓存(pooled),发送(sent),接收(accepted),完成(completed)。[0014]上述基于内存设备指令管理系统的控制方法,包括如下步骤:[0015]步骤1:通过https、消息或者socket的接口,指令规划器(CommandScheduler)收到一条指令请求。[0016]步骤2:指令规划器(Co_andScheduler)解析接收到的指令请求,并首先持久化指令请求(CommandRequest)到数据库中指令请求表(CommandRequestTable)。[0017]步骤3:指令规划器(CommandScheduler)根据解析的指令请求(CommandRequest)内容,为请求范围内的每个客户端生成一条指令(Co_and),规划指令执行的时间,并持久化指令(Command)到指令表(CommandTable),并标识状态为创建(created)。[0018]步骤4:任务安排器(Quartzjob)定时读取指令请求表(Co_andRequestTable),发现有未处理的指令请求(CommandRequest),根据指令请求编号从指令表(CommandTable)中提取对应的指令,放入指令池(CommandPool)。[0019]步骤5:客户端发起指令请求来获取可执行指令。[0020]步骤6:指令规划器(CommandScheduler)根据客户端编号查询指令池(Co_andPool),对指令进行编码并返回给客户端,同时更新该指令状态为发送(sent)状态并放入指令状态更新队列(CommandStatusQueue),由指令状态更新线程(CommandStatusThread)自动异步更新指令状态。[0021]步骤7:客户端接收到指令后,发送指令状态更新请求,指令规划器(CommandScheduler)把指令从指令池(CommandPool)中移除,同时更新该指令状态为接收(accepted)状态并放入指令状态更新队列(CommandStatusQueue),由指令状态更新线程(CommandStatusThread)自动异步更新指令状态。[0022]步骤8:客户端完成指令执行后,发送指令状态更新请求,指令规划器(CommandScheduler)更新该指令状态为完成(completed)状态并放入指令状态更新队列(CommandStatusQueue),由指令状态更新线程(CommandStatusThread)自动异步更新指令状态。[0023]上述基于内存设备指令管理系统的控制方法,其中,步骤6,7,8还包括指令状态更新过程,更新过程包括如下步骤:[0024]步骤a:指令状态更新线程(CommandStatusThread)侦听指令状态更新队列(CommandStatusQueue)[0025]步骤b:每隔设定时间(通常20秒),指令状态更新线程(CommandStatusThread)取到指令状态更新队列(CommandStatusQueue)所有待更新指令,进行一次数据库更新批处理,更新成功后,清除更新过的指令。[0026]本发明由于采用上述技术方案,使之与现有技术相比,具有以下优点和积极效果:[0027]1、本发明采用内存哈希表来缓存指令内容,内存根据客户编号的哈希查询是非常高效的,客户端端在查询时可以迅速获得结果,并发性非常高。[0028]2、本发明对指令状态采用异步定时批量更新方式,充分利用数据库的批处理功能,相较于实时数据库更新,不但极大提高持久化的效率,同时减少当前线程响应时间,避免当前线程阻塞。[0029]3、本发明清晰良好的结构,非常有利于扩展。【附图说明】[0030]图1为基于内存设备指令管理系统的控制方法流程图;[0031]图2为基于内存指令管理系统控制指令状态迀移图;[0032]图3为基于内存指令管理系统拓扑图。【具体实施方式】[0033]下面结合附图和实施案例对本发明技术方案做进一步详细说明,以下实施例不构成对本发明的限定。[0034]本发明的总体思路是通过任务安排器根据指令请求(CommandRequest)生成对设备的指令(Command);指令缓存到基于内存的指令池(CommandPool);采用独立的指令状态更新线程(CommandStatusThread)把指令持久化到数据库,以异步和批处理的方式更新数据库中指令状态;客户端请求指令时直接从内存中查找。以下通过实施例对本发明的方法做进一步阐述。[0035]本实施例具体涉及一种基于内存的现金设备(如点钞机、清分机及ATM等)后台指令系统包括生成、保存、发送的控制方法。[0036]具体地,如图1所示,本发明提出的一种基于内存设备指令管理系统的控制方法,包括步骤:[0037]步骤1:用户在浏览器上发布一条设备控制指令,或者其他系统发布一条设备控制指令;指令通过https,消息或者socket的接口传到指令规划器(CommandScheduler),这样指令规划器就收到一条指令请求。[0038]步骤2:指令规划器(CommandScheduler)解析接收到的指令请求,并先持久化指令请求(Co_andRequest)到指令请求表(C当前第1页1 2 
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1