一种自动对账方法以及自动对账系统的制作方法_2

文档序号:9930016阅读:来源:国知局
体机对应的pos应收金额和实收金额。该服务器提供了 pos的正常使用的服务。其中订单应收金额由消息队列(即MQ ,MessageQueue)的方式推送而来,并将推送而来的订单应收金额存储在数据库(例如sqlserver服务器)中。以支付单号为主键。
[0036]资金归集服务器13用来核算每个站点订单的总和,按照核算所得到的每个站点订单的总和生成每个站点的订单开始对账的一个校验位,并将该校验位提供给对账服务器,例如资金归集服务器生成昨天订单总金额后,会修改该站点的一个校验位字段即生成每个站点的订单开始对账的一个校验位,对账服务器得知后,就开始核对该站点下的每一单。
[0037]缓存服务器14(例如为Redis缓存服务器)中存储了当前对账服务器的站点信息。站点信息与对账服务器的分配关系例如以Lhash(Log Hash Intergrity Checking,日志型哈希完整性检测,其中L是指靠左排列,hash是hash字段进行key_value存储)的方式存储。通过站点ID直接获取当前对账服务器需要处理的站点集合。
[0038]分布式应用服务器16(例如为zookeeper服务器),主要用来配置当前对账自定义定时任务(worker)启动的克隆表达式和相应的自定义定时任务(worker)分块信息的配置。关于分块的情况将在后面详细叙述。
[0039]关于克隆表达式的具体表述如下。克隆表达式可以包括7个字段:秒、分、小时、月内日期、月、周内日期、年(可选字段)。主要是用来表示执行的时间和频率。例如表达式〃00/5 12 * *?〃表示12点开始,每隔5分钟执行一次。
[0040]对账服务器12,在每台对账服务器启动时,远程长连接分布式应用服务器16获取当前机器的自定义定时任务(worker)块号,通过自定义的优先级分块算法获取站点编号,获取当前对账服务器需要对账的站点列表。
[0041]下游系统16,例如在pos对账完毕后,根据对账结果而将进程推送到不同的下游系统。其中包括在订单对账结束并且没有问题的情况下,推送银行资金帐。
[0042]图2为表示本申请发明的服务器分块调用的总体示意图。
[0043]如图2所示,Pos对账运用的是自动平衡(balance)的平均分块方法,通过该自动平衡的平均分块方法,每次都会根据当前最新的站点优先级进行排序,对每台机器逐个进行排序,这样所有的站点优先级就可以平均分了。首先通过站点数量/对账服务器数量,估算出每个服务器需要处理的站点数量,并分块。通过每次执行对账都进行分块来满足处理的订单数量是均匀的,防止出现个别服务器对账单数量大且集中的问题。通过例如贪婪算法计算优先级,并根据优先级来选择站点,通过该贪婪算法每次都获取当前优先级最高的站点。从而保证优先选中优先级高的站点并且对优先选中的站点执行对账。所谓贪婪算法是指,在对问题求解时,总是做出在当前看来是最好的选择。本发明中的计算站点优先级是依赖本次计算当前优先级来排序的。
[0044]被选中的站点会与执行的服务器绑定,不允许其他服务器并行处理。同时会在缓存服务器中存储被选中的站点与执行的服务器的对应关系。
[0045]具体地来说,对账服务器121?对账服务器12η将所接收到的需要进行对账的站点的数目发送到分布式应用服务器15上,该分布式应用服务器采用自动平衡的平均分块方法和优先级计算方法来生成待对账的站点数据,并对每个对账服务器分配需要处理的站点队列,即对每个对账服务器分别生成站点队列1、站点队列2...站点队列η,并将所生成的站点队列1、站点队列2...站点队列η分别发送给相对应的对账服务器。
[0046]以下,具体地说明优先级计算方法即贪婪算法。
[0047]每个站点的优先级的计算,主要依赖于四个因素,分别是之前某个时间段的订单量例如昨天的订单量、当前积压订单、已经处理的订单量以及对账服务器总数。
[0048]在该优先级计算方法中,会规定一个专门的定时任务,每隔固定时间(例如为10分钟)更新当前最新的优先级数量。站点优先级的计算采用了当前对账实际时间代价与未来时间预估的综合考量。
[0049]F(n)=0.6Xg(n)+0.4Xh(n)
[0050]其中F(n)表示当前站点的优先级,g(n)=(当前积压订单量Xt)/当前对账服务器总数,g(n)表示每个站点处理完当前积压订单所需要的时间代价,t表示处理每个订单所需要的时间。
[0051]h(n) =[(昨天总订单量-已经处理订单)Xt/昨天总订单量]/空闲服务器数量,hU)代表的是根据昨天的剩余订单量,估算出当前站点处理昨天剩余订单量所需的时间,t表示处理每个订单所需要的时间。
[0052]以下,参照图3以及图4说明动态添加或者减少对账服务器的方法。
[0053]在本申请发明中可以根据订单量的多少来动态地添加或者减少对账服务器。图3为表示动态地添加对账服务器的方法。图4为表示动态地减少对账服务器的方法。
[0054]参照图3,在分布式应用服务器16上远程增大块号后,选择启动新对账服务器(步骤Sll)。同时分布式应用服务器16会同步一个最新的版本号到所有其他对账服务器上(步骤S12)。对账服务器会将所收到的最新版本号与本地缓存的版本号进行比较(步骤S13)。如果所收到的最新版本号大,则会立刻退出正在处理的对账任务,重新分配站点,然后开始对账(步骤S14)。如果所收到的最新版本号小,则可能是指令过期,则忽略此次自定义定时任务,重新启动(步骤S15)。
[0055]反之,减少服务器也是一样。在分布式应用服务器16上远程减少块号,同时停止运行相应台数的对账服务器。处理流程与上述添加服务器的流程相似。参照图4,具体地来说,在分布式应用服务器16上远程减小块号(步骤S21)。同时分布式应用服务器16会同步一个最新的版本号到所有其他对账服务器上(步骤S22)。对账服务器会将所收到的最新版本号与本地缓存的版本号比对(步骤S23)。如果所收到的最新版本号大,则会立刻退出正在处理的对账任务,停止运行对账,处于待机状态(步骤S25)。如果所收到的最新版本号小,则继续处理正在处理的对账任务(步骤S24)。
[0056]以下参照图5具体地说明本申请发明的对账业务的具体过程。
[0057]图5为表示本申请发明的对账业务的具体流程图。在此以基于POS的对账为例,但是并不限于此。
[0058]首先,对账系统开始启动自动对账服务(步骤S31)。
[0059]在分布式应用服务器中生成站点列表(S32),关于如何生成站点列表在后面叙述。在图6中表示站点列表的示例图。图6中所示的站点列表仅仅是一个示例,本申请发明的站点列表并不限于此。
[0060]对账服务器从分布式应用服务器中获取站点列表(S33)。并根据站点ID从缓存服务器中直接获取当前对账服务器需要处理的站点集合(步骤S34),对该所获取的站点集合进行类对象反序列化的程序处理(步骤S35),算出该站点集合的应收金额(步骤S36)。
[0061 ] 对账服务器根据站点查询出相应订单(步骤S37)。
[0062]对账服务器查询订单实际收到金额(步骤S38),通过合并单查找子单(步骤S39)。具体地来说,有的用户可能是两笔订单同时支付,这个时候,pos系统会自动生成一
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1