分布式异步事件的处理方法及系统的制作方法

文档序号:7773361阅读:144来源:国知局
分布式异步事件的处理方法及系统的制作方法
【专利摘要】本发明公开了一种分布式异步事件的处理方法及系统,该方法包括:以日志方式对每一应用服务器中的要处理的事件进行处理,为每个要处理的事件创建第一日志消息并传输,该第一日志消息至少包括消息类别和消息内容;将第一日志消息存储到中心服务器中的消息队列中;根据各个订阅服务器向中心服务器登记的要处理的消息的消息类别,将消息队列中的与所登记的消息类别相对应的消息分别传送至相应的订阅服务器;订阅服务器对消息进行处理,并向中心服务器返回消息处理结果。本发明实施例将日志实时传输与消息队列相结合,使得中心服务器可以根据消息处理结果实时地、低入侵地判断出接收端是否接收到事件并进行了处理,较好地克服了现有技术的缺陷。
【专利说明】分布式异步事件的处理方法及系统
【技术领域】
[0001]本发明涉及计算机技术,具体涉及一种分布式异步事件的处理方法及系统。
【背景技术】
[0002]随着网络的发展,越来越多的应用基于网络提供,甚至一些关键性的业务也基于网络来提供。这些关键性的业务例如网上支付等,对系统的可靠性提出了较高的要求。
[0003]分布式处理系统是将不同地点的或具有不同功能的或拥有不同数据的多台计算机用通信网络连接起来,在控制系统的统一管理控制下,协调地完成信息处理任务的计算机系统。分布式异步事件处理是在处理不同事务的服务器通过网络进行通信的分布式通信环境下,发送端发送承载消息的事件后,不必等待接收端应答就可以继续执行后续处理;而接收端在接收到事件之后,采用异步的方式来处理事件的过程。
[0004]目前,可以通过队列(例如Active MQ, Gearman)服务来进行事件传递,达到异步处理的目的,其中,Gearman是一个用来把工作委派给其他机器、分布式地调用更适合做某项工作的机器、并发地做某项工作,在多个调用间做负载均衡或用来调用其它语言的函数的系统;也可以通过定时获取日志并分析处理,达到异步处理的目的。
[0005]分布式异步事件处理解决了发送端必须等待接收端处理完事件后才能继续执行的问题,也解决了接收端并发处理多个发送端请求的事件的性能瓶颈问题,因此显著地提高了事件处理的负载均衡和效率。但是,在分布式异步事件处理系统中,由于发送端没有等待接收端的反馈就继续执行,因此,如何确认接收端接收到事件并进行了处理就成为分布式异步事件处理系统必须要考虑的问题。

【发明内容】

[0006]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的分布式异步事件的处理方法及系统。
[0007]依据本发明的一个方面,提供了一种分布式异步事件的处理方法,该方法包括:
[0008]以日志方式对每一应用服务器中的要处理的事件进行处理,为每个要处理的事件创建第一日志消息,并且传输第一日志消息,该第一日志消息至少包括消息类别和消息内容;
[0009]将该第一日志消息存储到中心服务器中的消息队列中;
[0010]根据各个订阅服务器向该中心服务器登记的要处理的消息的消息类别,将该中心服务器的消息队列中的与所登记的消息类别相对应的消息分别传送至相应的订阅服务器;以及
[0011]该订阅服务器对该消息进行处理,并向该中心服务器返回消息处理结果。
[0012]根据本发明的另一方面,提供了一种分布式异步事件的处理系统,该系统包括:
[0013]一个或多个应用服务器,每个应用服务器适于以日志方式对要处理的事件进行处理,为每个要处理的事件创建第一日志消息,并且传输第一日志消息,该第一日志消息至少包括消息类别和消息内容;
[0014]中心服务器,适于接收来自每个应用服务器的第一日志消息,并将该第一日志消息存储到该中心服务器的消息队列中;以及
[0015]一个或多个订阅服务器,每个订阅服务器适于向该中心服务器登记要处理的消息的消息类别,接收该中心服务器所传输的、该消息队列中与所登记的消息类别相对应的消息,对该消息进行处理,并且向该中心服务器返回消息处理结果。
[0016]本发明实施例,以日志方式对每一应用服务器中的要处理的事件进行处理,为每个要处理的事件创建第一日志消息,并将第一日志消息存储到消息队列中,并根据各个订阅服务器向中心服务器登记的要处理的消息的消息类别,将消息队列中的与所登记的消息类别相对应的消息分别传送至相应的订阅服务器,订阅服务器对上述消息处理后向中心服务器返回消息处理结果,由此可见,本发明实施例将日志实时传输与消息对列相结合,使得中心服务器可以根据该消息处理结果实时地、低入侵地判断出接收端是否接收到事件并进行了处理,较好地克服了现有技术的缺陷。
[0017]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【专利附图】

【附图说明】
[0018]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0019]图1a示出了根据本发明一个实施例的分布式异步事件的处理方法的流程图;
[0020]图1b示出了本发明图1a中步骤S102的细化过程的流程图;
[0021]图2示出了根据本发明一个实施例的分布式异步事件的处理系统的结构示意图;
[0022]图3示出了根据本发明另一个实施例的分布式异步事件的处理系统的结构示意图;
[0023]图4示出了根据本发明一个实施例的消息预处理器的结构示意图。
【具体实施方式】
[0024]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0025]通过使用队列服务来进行事件传递来确认接收端对事件的接收和处理状态存在以下问题:应用程序受制于队列自身的稳定性和网络的可访问性;例如,应用系统A直接访问Gearman,如果Gearman本身的可靠性为90%,网络可访问性为90%,那原系统A的可靠性(假设为100%)则下降到90%*90%=81%。这种可靠性的下降,对业务的可靠性产生严重的影响。
[0026]另一方面,通过定时获取日志并分析来确认接收端对事件的接收和处理状态存在以下问题:虽然对系统没有侵入性和可靠性的影响,但因为采用定时轮询的方式达不到实时或准时的要求,延时最长会达到5分钟以上。
[0027]因此,如何实时地、低入侵地确认接收端是否接收到事件并进行了处理就成为分布式异步事件处理系统必须要解决的技术问题之一。图1a示出了根据本发明一个实施例的分布式异步事件的处理方法的流程图,如图1a所示,该方法包括:
[0028]步骤S101、以日志方式对每一应用服务器中的要处理的事件进行处理,为每个要处理的事件创建第一日志消息,并且传输第一日志消息,上述第一日志消息至少包括消息类别和消息内容;
[0029]具体地,可以通过调用syslog函数为每个要处理的事件创建第一日志消息,软件开发工具包(Hydar SDK)封装unix下的标准C函数syslog,并规范一定的格式,具体的格式说明和日志格式示例如下:
[0030]//格式说明:
[0031]日期时间(iso标准格式)发生机器事件分类(hydra_send | hydra_back) #事件名#事件ID事件数据(JSON)
[0032]从上述格式说明中,可以看出日志消息包括下列信息中的一个或多个:事件生成的时间、生成事件的主机信息、事件类别、事件名、事件标识和事件内容;
[0033]Il日志格式示例
[0034]2012-07-24 12:09:24 w20.wg.zwt.qiho0.net hydra_send#pay#21981248# {" money" 10000"," uid" 138348497"," tinB" 1343102964"," gkey":" rxhzw"," skey":" S4" }
[0035]其中,事件分类中的hydra_Send是指从应用服务器发送到中心服务器的日志;
[0036]在本实施例中,可以通过在各个服务器之间传递日志的开放源代码软件syslog-ng将应用服务器上的信息路由到中心服务器(Hydra SVR),具体示例如下:
[0037][0038]
【权利要求】
1.一种分布式异步事件的处理方法,包括: 以日志方式对每一应用服务器中的要处理的事件进行处理,为每个要处理的事件创建第一日志消息,并且传输第一日志消息,所述第一日志消息至少包括消息类别和消息内容; 将所述第一日志消息存储到中心服务器中的消息队列中; 根据各个订阅服务器向所述中心服务器登记的要处理的消息的消息类别,将所述中心服务器的消息队列中的与所登记的消息类别相对应的消息分别传送至相应的订阅服务器;以及 所述订阅服务器对所述消息进行处理,并向所述中心服务器返回消息处理结果。
2.根据权利要求1所述的处理方法,其中,所述订阅服务器对所述消息进行处理,并向所述中心服务器返回消息处理结果,包括: 所述订阅服务器以日志方式对消息处理结果进行处理以生成第二日志消息,并将所述第二日志消息传输到所述中心服务器。
3.根据权利要求1或2所述的处理方法,其中,所述第一日志消息和所述第二日志消息包括下列中的一个或多个:事件生成的时间、生成事件的主机信息、事件类别、事件名、事件标识和事件内容。
4.根据权利要求1所述的处理方法,其中,将所述第一日志消息存储到中心服务器中的消息队列中,包括: 从所述第一日志消息中提取出要处理的事件;· 根据事件配置原则对与提取出的事件对应的第一日志消息进行打包和/或消重处理,然后存储到消息队列中。
5.根据权利要求4所述的处理方法,其中,所述对与提取出的事件对应的第一日志消息进行消重处理,包括: 将要处理的日志消息存储于第一缓存器; 查找所述第一缓存器中是否存储有第一日志消息,如果不存在,则将所述第一日志消息缓存于所述第一缓存器中,并输出至所述消息队列中,如果存在,则不将所述第一日志消息存储于所述第一缓存器中,也不将其传输至所述消息队列中; 其中,所述对与提取出的事件对应的第一日志消息进行打包处理,包括:缓存要处理的日志消息,当所缓存的要处理的日志消息数量达到预设的最大值后,将所缓存的日志消息合成一条日志消息,并输出到所述消息队列中。
6.根据权利要求5所述的处理方法,该方法还包括: 定时触发而清除所述第一缓存器中的数据;和/或 在缓存的日志消息数量没有达到所述预设的最大值的情况下,定时触发而将缓存的日志消息合成一条日志消息,并输出到所述消息队列中。
7.一种分布式异步事件的处理系统,包括: 一个或多个应用服务器,每个应用服务器适于以日志方式对要处理的事件进行处理,为每个要处理的事件创建第一日志消息,并且传输第一日志消息,所述第一日志消息至少包括消息类别和消息内容; 中心服务器,适于接收来自每个应用服务器的第一日志消息,并将所述第一日志消息存储到所述中心服务器的消息队列中;以及 一个或多个订阅服务器,每个订阅服务器适于向所述中心服务器登记要处理的消息的消息类别,接收所述中心服务器所传输的、所述消息队列中与所登记的消息类别相对应的消息,对所述消息进行处理,并且向所述中心服务器返回消息处理结果。
8.根据权利要求7所述的处理系统,其中,所述一个或者多个应用服务器中的每个应用服务器包括: 事件生成器,适于以日志方式生成与要处理的事件相对应的第一日志消息; 第一日志传输单兀,适于在所述事件生成器生成第一日志消息时,将所生成的第一日志消息传输至所述中心服务器。
9.根据权利要求7所述的处理系统,其中,所述订阅服务器,具体适于:以日志方式对消息处理结果进行处理以生成第二日志消息,并将所述第二日志消息传输到所述中心服务器。
10.根据权利要求9所述的处理系统,其中,所述第一日志消息和所述第二日志消息包括下列中 的一个或者多个:事件生成的时间、生成事件的主机信息、事件类别、事件名、事件标识和事件内容。
【文档编号】H04L12/24GK103532755SQ201310476040
【公开日】2014年1月22日 申请日期:2013年10月12日 优先权日:2013年10月12日
【发明者】左文建, 王东洋 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1