金融自助终端监控系统优化设计研究
2018-08-08王庆华谢卫平贺光容谢兴锋
王庆华,谢卫平,贺光容,谢兴锋
(深圳怡化电脑股份有限公司,广东 深圳 518026)
1 概述
据央行统计,截至2017年第三季度末,全国在运营的ATM机具94.77万台,比上季度末增加4 202台。每万人对应的ATM数量6.85台,同比增长3.53%.为了最大可能地挖掘金融自助终端的价值潜能,保障高水准的开机率,采用可靠的金融自助终端监控技术是非常重要的。
由于各银行自助终端品牌多、数量大、型号各异、分布地域广而零散,对ATM进行统一监控有助于提升自助设备的可靠性、利用率和管理能力。这样做有以下好处:①可规范金额机具服务,提高业务管理水平,有效控制终端运行质量;②实时跟踪各类自助设备(ATM、POS、CDM、CRS、查询机、缴费机、补登机)的运行状况;③技术处理各类设备故障,提高自助设备营业率,提高自助设备管理人员的工作效率;④根据自助设备上的用户交易情况和用卡情况,提出及时、准确的分析报告,辅助管理人员分析、决策自助设备的购置和分布以及卡推广等。
2 金融自助终端监控技术分析与特征
目前,市场上的金融自助终端监控技术受银行需求或者相关安全标准的限制,主要包括以下3点:①每隔固定时间,终端向监控服务器发送一个状态报文,其中包含有该终端的所有部件状态,由服务器不断接收并解析报文来判断ATM状态。②为了保证终端的交易安全,报文的网络通信是单向的,服务器只能被动地接收报文,不允许监控服务器主动提取终端状态报文。③为了不影响终端服务,只有当终端空闲时才向监控服务器发送状态报文。在终端忙于业务交易时,不允许向监控服务器发送状态报文,只允许发送交易报文。在以上条件的限制下,目前终端监控技术设计采用的方法是,将终端各部件的状态信息和交易信息收集起来,通过网络通信以报文的方式发送至监控服务器,从而分析出终端工作状况和设备状态,实现对终端的监控与管理。对于设备状态监控,需要每隔预设时间向监控服务器发送一次所有部件(比如打印机状态、钱箱状态、读卡器状态等)的状态报文。
假设某终端具有n个部件,每一个部件都有一个部件状态集,部件i有mi种状态,则部件i的第j种状态可以表示为 aij(i=1,2,…,n,j=1,2,…,mi),不妨设部件 i的状态集为Ai(i=1,2,…,mi),用card(A)表示集合A的元素的总个数,则对于部件 i,有 Ai=(ai1,ai2,…,aimi),card(Ai)=mi;对于一个 ATM 状态集 S,有 S={(a1,a2,…,an)│a1∈A1,a2∈A2,…,an∈An}。该 ATM 状态总种数为:
不妨设每一种状态出现频率依次排列为S1,S2,…,Scard(S),设事件 A 的概率为 P(A),则有 P(S1)≥P(S2)…≥P(Scard(S)),那么,S={si│si∈S,1≤i≤card(S),P(S1)终端状态就是一个各部件状态的集合,具有以下典型特征。
2.1 状态相对稳定性
由于终端各部件状态会在一段较长的时间里维持不变,所以说,终端状态具有一定的时间稳定性,不随时间跳跃。据统计,ATM平均开机率在95%左右,绝大部分时间会处于正常工作的状态,S1表示正常状态,P(S1)≈0.95.
如果终端某部件发生故障,这种故障会持续一段较长的时间,它不会是变化不定的,部件一般不会呈现出时好时坏的情况。终端作为一个有限状态机,生产运行中的每一个状态都会保持一定时间不变。
终端在时刻Ti的下一个时刻Ti+1的状态与时刻Ti的状态相同,概率接近于 1,即 P(S(Ti+1)=S(Ti)│S(Ti))=1-σ.其中,σ为1个接近于0的正整数。
鉴于终端状态的相对稳定性,大部分终端状态报文的内容是相同的,当状态不发生变化时,只需要通知监控服务器无变化就可以了,不必又将所有部件的状态一一发送给服务器。这样做,可以减少大量内容相同的报文在网络中的传输,也减少了监控服务器对大量内容完全一样的报文进行解析与分析的工作量。
2.2 状态分布集中性
终端状态发生的频次差距是很大的,某一些状态可能占据了终端绝大部分的时间,而绝大部分状态只占据终端极少的时间。例如终端可能在95%的时间内处于正常状态(各部件均处于正常状态),其中,很多状态发生的概率接近于0.正常状态加上常见的几种错误码发生的概率接近于1,其他状态发生的概率之和几乎为 0.当 P(S1)≥P(S2)…≥P(Scard(S))时,存在一个界于[1,card(S)]之间的k,使得.其中,μ为一个接近0的正整数。
按照终端状态的频次特点,可分为高频状态和低频状态。终端状态概率密度分布函数类似正态分布,正常状态是函数的中间部分最高点,接着的两边是发生概率高的有一个部件异常的状态,越远离中心,发生故障的部件个数越多,发生异常状态的概率就越低。因而,只有一个部件发生异常的状态的概率远高于2个部件均发生异常的概率,远高于3个部件均发生异常的概率,发生异常的部件个数越多,这种状态出现的可能性就越小。鉴于终端状态分布的集中性,可以优化服务器的数据处理,将高频率的终端状态数据保存于内存中,以便终端解包后进行报文比较,同时期比较的顺序优先,以免浪费资源在第一时间比对上,从而节省报文处理时间,提升终端状态服务器的报文处理效率和报文吞吐量。
2.3 故障状态渐重性
终端在运行中某一时刻一般最多只有一个部件发生状态改变,很少有2个部件的状态同时发生改变,至于在实际运行过程中多个部件的状态同时发生改变的情况,则非常罕见。如果把终端资源缺乏(缺钞、缺纸等)也当作故障状态,那么,终端在90%的时间里是正常运行的,在少部分时间里是处于故障状态的。
由实践经验可知,如果把一个部件发生故障的所有状态的概率之和,与2个部件发生故障的所有状态的概率之和进行比较,基本上相差一个数量级。假设同时有i个部件发生故障的概率为pi,p0表示ATM处于正常状态;p1表示终端有1个故障,处于故障状态;pi表示终端有i个故障,处于故障状态,则有
由于各状态概率差异明显,所以,可采用霍夫曼编码技术,以大幅度减少网络数据量。
2.4 状态数量有限性
终端各部件的状态总数是有限的,由于终端绝大多数部件的状态种类不超过10个,即使是状态码最多的循环机芯,其状态个数也不超过50个。由于终端是一个有限状态机,其状态总种数等于各个部件的状态数之乘积,因此,终端的状态种类也不会很多,尤其是一些高频率出现的状态,种类更是不多。
2.5 报文大量重复性
由于终端各部件的状态具有相对稳定性,一种终端状态会持续相当长的一段时间,例如某台终端的打印机部件缺纸,那么,该终端在此后相当长的一段时间(直到维护人员加纸维护)内会向服务器发送相同的报文,该报文表示终端缺纸而其他部件完好,因而服务器在这段时间内会接收并处理大量重复的报文。鉴于终端状态大量重复性,可优化服务器处理报文的速度,缩短其硬盘数据读取时间,将终端最频繁的几个状态以及最新状态放置于内存中,那么,这些与该终端终端状态包内容匹配成功率很高的状态包就会被快速处理。这样做,不仅可以提升服务器对接收报文内容比照和存储的效率,还可以改善原始报文存储。适当更改存储的报文接收时间,就可以采取索引存储方案来存储下本次接收报文的时间,而不必保存本次接收报文的内容,这是因为报文内容比较长,可达数K,而采用索引存储方案,可以有效节省服务器的存储空间,优化存储结构。
2.6 业务处理集中性
从时间上来说,终端服务存在典型的服务高峰期和低谷期。在服务高峰期,服务器会出现瓶颈,一旦接收到的待处理报文数超过了报文接受队列长度,就会导致部分报文丢弃,从而发生监控不准甚至出错的情况。
一天中,终端业务集中在7:00—22:00这个时间段,而22:00至次日7:00这段时间的业务量比较少,在下午下班的一段时间则会出现明显的终端业务高峰期。终端处于繁忙时段,状态报文明显减少,交易报文明显增多。
3 金融自助终端监控优化对策与实现
3.1 采用相对报文技术
鉴于终端状态的时间渐变性,即使终端状态发生了变化,其变化量是很小的,一般是某一部件发生了状态改变,因而可以采用与上一个报文进行对比的相对报文形式来取代绝对报文形式,实现终端状态的网络传送,大幅度节省网络开销。如图1所示,编号为17的报文内容与编号为16的报文内容相比较,除了报文时间不同外,还有域15(凭条打印机状态)和域16(凭条打印机错误码)发生了改变,因此,按照本文提供的相对报文编码方法,相对报文应为:[117 20141011111459 16 15 0 16 0000~].其中,第一个1表示本条报文为绝对对报文,17表示本报文编号,20141011111459表示本报文生成时间,16表示基准报文编号,15 0 16 0000表示15域值改为0,16阈值改为0000,~表示报文终止符。由此可见,采用相对报文后,报文的长度得到了极大的改善,网络传输数据量和服务器接收数据量大为减少。
图1 报文内容
3.2 改进报文编码技术
各终端需要向监控服务器发送状态报文,每个状态报文少则256 B,多则可达几K,报文数量庞大,导致网络数据传输量大。各部件状态信息同时出现的概率越高,或终端处于某一状态的频率(概率)越高,其对应的终端状态码编码长度就越短,因此,需要经常传输的终端状态码的长度短,数据量少,传输压力减小,还减少了占用的监控服务器报文队列资源。
根据霍夫曼树,带权路径长度记为:WPL=(W1L1+.其中,N 个权值为 W(i=1,i2,…,n),如果状态S1、S2、S3、S4出现的概率为0.75,0.54,0.28,0.43,则相应的权值为75,54,28,43.
终端状态频率最高的2种状态可以使用一位二进制(0或1)表示,发生频率次高的4种状态分别使用2位二进制(00,01,10或11)表示,发生频率再次的8种状态分别使用三位二进制(000,001,010,011,100,101,110或111)表示。如此继续下去编码,发生频率再次的2n种状态分别使用n位二进制表示。由此可知,发生概率越高的终端状态,其编码长度越短。对自助终端各状态进行编码,按发生频率高低排序,排行第(2n-1)~(2n+1-2)用n位二进制表示。
由此实现了对状态报文编码处理,使得传输频率高的报文类型编码最短,以节约网络带宽,减少网络传输量,加快监控服务器对报文接收的简化处理,提高监控服务器的报文接收速度,降低报文丢失率,提高监控准确性。网络通信量的大幅度降低,提高了监控服务器的吞吐率,增加了终端连接数目。
3.3 实现报文编号排序
对状态报文类和业务报文类的各个报文分别编号,从0→n→0→n…循环往复地进行,其中,n足够大,在一段时间内不可能产生2个相同编号的同类报文。将这两类报文分别编号的目的是,状态报文允许有个别报文丢失而不影响准确性;业务报文不允许有任何报文丢失,否则会严重影响监控的准确性。
当监控服务器发现先后接收到的时间上相邻的2个状态报文,其报文发送时间间隔不大于设定或者预期的状态报文发送时间间隔的4~5倍,且当这2个报文反应的终端的状态内容相同时,对于这2个状态报文编号间隔所缺失的报文内容,可以默认缺失的报文内容与该两报文相同,不必发送重发请求。这样不会对终端状态统计和状态准确性造成很大的影响,以便节省资源。
3.4 利用交易报文判断
事实上,交易报文内容中暗含了一定的设备状态信息,如果某一取款业务交易报文显示成功,则与取款业务相关的设备状态应是正常的。因此,在状态报文缺失的情况下,可以合理利用交易报文来推测设备状态——可以设计一种采用以状态报文为主、交易报文为辅的终端状态监控方案,用于解决终端处于繁忙时段不能向监控服务器发送状态报文的难题,进一步提高监控准确度和及时性。
由于终端一直忙于交易,可能会存在长时间不向监控服务器发送状态报文的情况,如果监控服务器只根据接收到的状态报文来判断终端状态,则会误认为该终端离线而造成与实际不符的情况。因为终端在繁忙时会向监控服务器发送交易报文,根据交易报文间接判断出终端状态。终端交易类型、交易结果、各部件状态的关系如表1所示。如果某交易业务成功完成,则该业务涉及的设备状态是正常的;如果交易业务发生错误,则该错误码对应的设备出现故障,而其他设备状态可以保持不变,即与上一次状态相同。
表1 交易类型—设备部件映射表
3.5 合理分配服务器资源
服务器是监控系统终端的瓶颈,应该采取有效措施合理利用其资源。根据终端各自对应的属性信息、设备状态信息、工作状态信息和资源剩余状况信息中的全部信息,计算终端各自对应的监控重要性特征值。设属性信息、设备状态信息、工作状态信息和资源剩余状况信息对应的权重分别为a,b,c,d,那么,可以根据公式计算第i台终端对应的监控重要性特征值 Mi,即 Mi=aF1i+bF2i+cF3i+dF4i.
第i个终端在监控服务器接收容量一定(不大于W个报文/分钟)的情况下,其报文速度为;第i台终端的报文发送时间间隔为,则有
经过分析,取不小于Ti值的整数值作为该台终端的监控报文发送时间间隔允许值。
终端监控报文发送时间间隔不能太大,也不能太小。监控终端的目的是及时对终端进行维护,补充资源。秒级别发送监控报文的监控会造成监控资源的浪费,而且经济收益不好。因此,为了限制Ti值太大或者太小,有必要根据终端实际要求,将Ti值限制在区间[A,B],即A≤Ti≤B。根据预设的各终端监控报文发送时间间隔的允许范围进行调整,计算新得到的各终端监控报文发送时间间隔,看其是否满足监控服务器每分钟能够接收和处理的监控报文数的最大允许值。验算方法是,将得到的新的数组T1,T2,…,Tn代入≤W中验证。如果不成立,则按照M1,M2,…,Mn值从小到大的顺序确定的序号对T1,T2,…,Tn排序,按排序后,T1,T2,…,Tn的顺序从前往后每轮依次减去1,直到满足为止。这样就新得到一个T数组,以该T数组确定的值作为各终端报文发送时间间隔。
上述方案改善了监控报文采取定时发送状态报文的监控方式,根据服务器报文处理能力,通过精确的计算,实现调整终端动态时间间隔的监控方式,有利于监控服务器的动态调整和资源优化,有效配置了监控服务器的有限资源,同时,根据被监控终端的监控重要性,实现了终端监控手段的个性化,优化配置了有限的监控资源。
3.6 灵活建立二级监控
如果采用二级监控代理技术,即当检测到监控服务器超负荷运行时,建立二级监控代理,将部分终端交由所述二级监控代理直接监控,使得服务器直接监控的终端数降低到负荷水平之下,二级代理只需要向监控服务器转发非正常运行的终端状态。如果以开机率为95%~99%来计算,采用二级监控代理技术,监控服务器的监控容量可以差不多扩充为原来的 20~100倍(1/(1-95%)~1/(1-99%)),极大地提升了监控系统的监控容量。
建立二级监控代理的流程是:二级监控代理向监控服务器传送的数据量可以根据故障终端发生概率来确定。在设备实际运行过程中,终端发生故障的概率为x%(实际运行中该值一般在2%~10%之间)。如果二级监控代理只向监控服务器传送改装状态的状态报文,正常运行的数据采取默认方式,则对于二级监控代理直接监控的n个终端,其向监控服务器传送的状态报文量为:data=a×n×x%×v×L.其中,a>1为一加权值;v为报文发送速率;L为报文平均长度,这也是监控服务器需要处理的状态报文量。
如果没有二级件服务器,这n个终端状态报文量为:data=n×v×L,远大于具有二级监控的报文量。由此可知,采用二级监控代理可以大大减轻监控服务器的工作压力,减少其数据处理量,缓解监控服务器的监控报文丢失现象。
4 结论
本文针对目前金融自助终端监控技术的不足进行了优化设计研究,尤其是对监控状态包网络通信技术,以及监控服务器技术进行优化设计,解决了目前终端监控技术网络通信效率低,容易导致服务器出现瓶颈等问题。本文提供的技术已被成功应用于国内某银行总行级的近十万台终端的监控系统中,监控服务器和监控通信性能得以明显改善,取得了良好的监控效果。