CN103530255B - 分布式异步事件的处理方法及系统 - Google Patents

分布式异步事件的处理方法及系统 Download PDF

Info

Publication number
CN103530255B
CN103530255B CN201310476116.8A CN201310476116A CN103530255B CN 103530255 B CN103530255 B CN 103530255B CN 201310476116 A CN201310476116 A CN 201310476116A CN 103530255 B CN103530255 B CN 103530255B
Authority
CN
China
Prior art keywords
event
log information
message
processed
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310476116.8A
Other languages
English (en)
Other versions
CN103530255A (zh
Inventor
左文建
王东洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201310476116.8A priority Critical patent/CN103530255B/zh
Publication of CN103530255A publication Critical patent/CN103530255A/zh
Application granted granted Critical
Publication of CN103530255B publication Critical patent/CN103530255B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种分布式异步事件的处理方法及系统,该方法包括:以日志方式对各应用服务器中的要处理的事件进行处理,为每个要处理的事件创建第一日志消息并传输;将接收的第一日志消息存储到消息队列中;根据各订阅服务器向中心服务器登记的要处理的消息的事件类别,将消息队列中的与登记的事件类别相对应的消息分别传送至相应的订阅服务器;订阅服务器对消息进行处理并返回消息处理结果;将接收的第一日志消息和消息处理结果进行对比,补偿处理失败或丢失的事件。本发明将日志实时传输与消息队列相结合,使得中心服务器可以根据消息处理结果实时地、低入侵地判断出接收端是否接收到事件并进行了处理,且可以较好地补偿处理失败或丢失的事件。

Description

分布式异步事件的处理方法及系统
技术领域
本发明涉及计算机技术,具体涉及一种分布式异步事件的处理方法及系统。
背景技术
随着网络的发展,越来越多的应用基于网络提供,甚至一些关键性的业务也基于网络来提供。这些关键性的业务例如网上支付等,对系统的可靠性提出了较高的要求。
分布式处理系统是将不同地点的或具有不同功能的或拥有不同数据的多台计算机用通信网络连接起来,在控制系统的统一管理控制下,协调地完成信息处理任务的计算机系统。分布式异步事件处理是在处理不同事务的服务器通过网络进行通信的分布式通信环境下,发送端发送承载消息的事件后,不必等待接收端应答就可以继续执行后续处理;而接收端在接收到事件之后,采用异步的方式来处理事件的过程。
目前,可以通过队列(例如Active MQ,Gearman)服务来进行事件传递,达到异步处理的目的,其中,Gearman是一个用来把工作委派给其他机器、分布式地调用更适合做某项工作的机器、并发地做某项工作,在多个调用间做负载均衡或用来调用其它语言的函数的系统;也可以通过定时获取日志并分析处理,达到异步处理的目的。
分布式异步事件处理解决了发送端必须等待接收端处理完事件后才能继续执行的问题,也解决了接收端并发处理多个发送端请求的事件的性能瓶颈问题,因此显著地提高了事件处理的负载均衡和效率。但是,在分布式异步事件处理系统中,由于发送端没有等待接收端的反馈就继续执行,因此,如何确认接收端接收到事件并进行了处理就成为分布式异步事件处理系统必须 要考虑的问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的分布式异步事件的处理方法及系统。
依据本发明的一个方面,提供了一种分布式异步事件的处理方法,该方法包括:
以日志方式对每一应用服务器中的要处理的事件进行处理,为每个要处理的事件创建第一日志消息,并且传输第一日志消息,所述第一日志消息至少包括事件类别和事件内容;
将接收的所述第一日志消息存储到中心服务器中的消息队列中;
根据各个订阅服务器向所述中心服务器登记的要处理的消息的事件类别,将所述中心服务器的消息队列中的与所登记的事件类别相对应的消息分别传送至相应的订阅服务器;
所述订阅服务器对所述消息进行处理,并向所述中心服务器返回消息处理结果;以及
将接收的第一日志消息和消息处理结果进行对比,补偿处理失败或丢失的事件。
依据本发明的另一个方面,提供了一种分布式异步事件的处理系统,包括:
一个或多个应用服务器,每个应用服务器适于以日志方式对要处理的事件进行处理,为每个要处理的事件创建第一日志消息,并且传输第一日志消息,所述第一日志消息至少包括事件类别和事件内容;
中心服务器,适于接收第一日志消息,将所述第一日志消息存储到所述中心服务器的消息队列中;接收来自每个订阅服务器的消息处理结果,将第一日志消息和消息处理结果进行对比,补偿处理失败或丢失的事件;以及
一个或多个订阅服务器,每个订阅服务器适于向所述中心服务器登记要处理的消息的事件类别,接收所述中心服务器所传输的、所述消息队列中与 所登记的事件类别相对应的消息,对所述消息进行处理,并且向所述中心服务器返回消息处理结果。
本发明实施例,以日志方式对每一应用服务器中的要处理的事件进行处理,为每个要处理的事件创建第一日志消息,并将第一日志消息存储到消息队列中,并根据各个订阅服务器向中心服务器登记的要处理的消息的事件类别,将消息队列中的与所登记的事件类别相对应的消息分别传送至相应的订阅服务器,订阅服务器对上述消息处理后向中心服务器返回消息处理结果,中心服务器根据该消息处理结果可以实时地、低入侵地判断出接收端是否接收到事件并进行了处理,同时,中心服务器将接收的第一日志消息和消息处理结果进行对比,补偿处理失败或丢失的事件,较好地克服了现有技术的缺陷。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1a示出了根据本发明一个实施例的分布式异步事件的处理方法的流程图;
图1b示出了本发明图1a中步骤S102的细化过程的流程图;
图1c示出了本发明图1a中步骤S105的细化过程的流程图;
图2示出了根据本发明一个实施例的分布式异步事件的处理系统的结构示意图;
图3示出了根据本发明另一个实施例的分布式异步事件的处理系统的结构示意图;
图4示出了根据本发明一个实施例的消息预处理器的结构示意图;
图5示出了根据本发明一个实施例的补偿处理器的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
通过使用队列服务来进行事件传递来确认接收端对事件的接收和处理状态存在以下问题:应用程序受制于队列自身的稳定性和网络的可访问性;例如,应用系统A直接访问Gearman,如果Gearman本身的可靠性为90%,网络可访问性为90%,那原系统A的可靠性(假设为100%)则下降到90%*90%=81%。这种可靠性的下降,对业务的可靠性产生严重的影响。
另一方面,通过定时获取日志并分析来确认接收端对事件的接收和处理状态存在以下问题:虽然对系统没有侵入性和可靠性的影响,但因为采用定时轮询的方式达不到实时或准时的要求,延时最长会达到5分钟以上。
另外,事件在传输的过程中会产生丢失的情况。
因此,如何实时地、低入侵地确认接收端是否接收到事件并进行了处理且避免事件丢失就成为分布式异步事件处理系统必须要解决的技术问题之一。图1a示出了根据本发明一个实施例的分布式异步事件的处理方法的流程图,如图1a所示,该方法包括:
步骤S101、以日志方式对每一应用服务器中的要处理的事件进行处理,为每个要处理的事件创建第一日志消息,并且传输第一日志消息,上述第一日志消息至少包括事件类别和事件内容;
具体地,可以通过调用syslog函数为每个要处理的事件创建第一日志消息,软件开发工具包(Hydar SDK)封装unix下的标准C函数syslog,并规范一定的格式,具体的格式说明和日志格式示例如下:
//格式说明:
日期时间(iso标准格式)发生机器事件分类(hydra_send|hydra_back)#事件名#事件ID事件数据(JSON)
从上述格式说明中,可以看出日志消息包括下列信息中的一个或多个:事件生成的时间、生成事件的主机信息、事件类别、事件名、事件标识和事件内容;
//日志格式示例
2012-07-24 12:09:24 w20.wg.zwt.qihoo.net hydra_send#pay#21981248#{"money":"10000","uid":"138348497","time":"1343102964","gkey":"rxhzw","ske y":"S4"}
其中,事件分类中的hydra_send是指从应用服务器发送到中心服务器的日志;
在本实施例中,可以通过在各个服务器之间传递日志的开放源代码软件syslog-ng将应用服务器上的信息路由到中心服务器(Hydra SVR),具体示例如下:
#syslog-ng日志配置
destination d_remote{tcp('10.105.18.118'port(514));tcp('10.105.17.133'port(514));};
##hydra
template hydra_format{template("$YEAR-$MONTH-$DAY$HOUR:$MIN:$SEC$HOST$PROGRAM$MSG\n");template_escape(no);};
destination d_remote_hydra{file("/data/hydra/$YEAR$MONTH/$DAY/data.$HOUR.$HOST"perm(0644)dir_perm(0755)create_dirs(yes)template(hydra_format));};
destination d_local_hydra_back{file("/data/hydra/$YEAR$MONTH/$DAY/feedback.$HOUR.$HOST"
perm(0644)dir_perm(0755)create_dirs(yes)template(hydra_format));};
filter f_remote_hydra{facility(local5)and match("hydra_send#"value("PROGRAM"));};
filter f_feedback_hydra{facility(local5)and match("hydra_back#"value("PROGRAM"));};
log
{source(s_local);filter(f_remote_hydra);destination(d_remote);destination(d_remo te_hydra);};#事件产生日志路由到d_remote
log{source(s_local);filter(f_feedback_hydra);destination(d_remote);destination(d_local_hydra_back);};#事件反馈日志路由到d_remote
步骤S102、将接收的第一日志消息存储到中心服务器中的消息队列中;
中心服务器上的syslog-ng接收来自应用服务器的第一日志信息后,将第一日志消息存储到中心服务器中的消息队列中,具体细化过程如图1b所示,该过程包括:
步骤S1021、从第一日志消息中提取出要处理的事件;
步骤S1022、根据事件配置原则判断对与提取出的事件对应的第一日志消息进行打包还是消重处理,若进行消重处理,则转向步骤S1023,若进行打包处理,则转向步骤S1024;
步骤S1023、对与提取出的事件对应的第一日志消息进行消重处理,并将第一日志消息存储到消息队列中;
该步骤S1023具体包括:将要处理的日志消息存储于第一缓存器;查找上述第一缓存器中是否存储有第一日志消息,如果不存在,则将上述第一日志消息缓存于上述第一缓存器中,并输出至消息队列中,如果存在,则不将上述第一日志消息存储于上述第一缓存器中,也不将其传输至上述消息队列中;例如当前第一缓存器中已存储有第一日志消息a和第一日志消息b,若当前与提取出的事件对应的第一日志消息为第一日志消息c,由于当前第一存储器中不存在第一日志消息c,则将该第一日志消息c缓存于第一缓存器中,并输出 至消息队列中;若当前与提取出的事件对应的第一日志消息为第一日志消息b,由于当前第一存储器中已存在第一日志消息b,则不将上述第一日志消息b存储于上述第一缓存器中,也不将其传输至上述消息队列中;
另外,该方法还可以包括:定时触发而清除第一缓存器中的数据,从而可以避免缓存数据过大的情况出现;
步骤S1024、对与提取出的事件对应的第一日志消息进行打包处理,并将第一日志消息存储到消息队列中。
该步骤S1024具体包括:缓存要处理的日志消息,当所缓存的要处理的日志消息数量达到预设的最大值后,将所缓存的日志消息合成一条日志消息,并输出到消息队列中。
另外,在缓存的日志消息数量没有达到预设的最大值的情况下,也可以定时触发而将缓存的日志消息合成一条日志消息,并输出到上述消息队列中,即在预定时间范围内,定时器会定时触发,将未达到预设的最大值数量的日志消息合成一条输出至消息队列中。
需要说明的是,上述步骤S1023和步骤S1024并无严格的执行顺序,例如既可以只执行步骤S1023,也可以只执行步骤S1024,还可以先执行步骤S1023后执行步骤S1024。
步骤S103、根据各个订阅服务器向上述中心服务器登记的要处理的消息的事件类别,将上述中心服务器的消息队列中的与所登记的事件类别相对应的消息分别传送至相应的订阅服务器;
中心处理器监听消息,将消息队列中与所登记的事件类别相对应的消息分别传送至相应的订阅服务器,具体传送至相应订阅服务器的SDK中。
步骤S104、订阅服务器对上述消息进行处理,并向上述中心服务器返回消息处理结果;
订阅服务器对消息处理完毕后,以日志方式对消息处理结果进行处理以 生成第二日志消息,并将第二日志消息传输到中心服务器;具体是由订阅服务器上的SDK将消息处理结果以日志方式反馈到中心服务器,该日志可以采用在步骤S101中定义的格式,此处对格式说明不赘述,具体的日志格式示例如下:
//日志格式示例
2012-07-2416:52:41w1.wg.ccp.qihoo.net
hydra_back#gamezone_history.event_farm#28886141hero#
{"qid":"28886141","gkey":"hero","skey":null,"create_time":1343119961}
其中,Hydra_back是指订阅服务器处理后反馈到中心服务器的日志。
步骤S105、将接收的第一日志消息和消息处理结果进行对比,补偿处理失败或丢失的事件。
具体地,如图1c所示,该步骤S105包括:
步骤S1051、从中心服务器读取N个时间单位内所接收的第一日志消息中包含的数据,N为正整数;
上述时间单位可以根据需要设置,例如设置为分、秒、小时等;
步骤S1052、将读取到的数据存储在数据库中;
步骤S1053、读取N+M个时间单位内订阅服务器返回的消息处理结果,并将消息处理结果与所述数据库中存储的数据进行对比,判断数据库中是否存在消息处理结果中未包含的事件,若是,转向步骤S1054,否则,操作结束;
步骤S1054、将该事件记录为处理失败或丢失的事件,将事件进行处理以生成第一日志消息,并将第一日志消息存储到中心服务器中的消息队列中,其中,M为正整数。
当上述时间单位设置为小时时,M可以设置为1。
上述分布式异步事件的处理方法,以日志方式对每一应用服务器中的要 处理的事件进行处理,为每个要处理的事件创建第一日志消息,并将第一日志消息存储到消息队列中,并根据各个订阅服务器向中心服务器登记的要处理的消息的事件类别,将消息队列中的与所登记的事件类别相对应的消息分别传送至相应的订阅服务器,订阅服务器对上述消息处理后向中心服务器返回消息处理结果,中心服务器根据该消息处理结果可以实时地、低入侵地判断出接收端是否接收到事件并进行了处理,同时,中心服务器将接收的第一日志消息和消息处理结果进行对比,补偿处理失败或丢失的事件,较好地克服了现有技术的缺陷。
图2示出了根据本发明一个实施例的分布式异步事件的处理系统,如图2所示,该分布式异步事件的处理系统包括:一个或多个应用服务器210、中心服务器220以及一个或多个订阅服务器230,其中:
每个应用服务器适于以日志方式对要处理的事件进行处理,为每个要处理的事件创建第一日志消息,并且传输第一日志消息,上述第一日志消息至少包括事件类别和事件内容;
中心服务器适于接收第一日志消息,将第一日志消息存储到中心服务器的消息队列中;接收来自每个订阅服务器的消息处理结果,将第一日志消息和消息处理结果进行对比,补偿处理失败或丢失的事件;
每个订阅服务器适于向上述中心服务器登记要处理的消息的事件类别,接收上述中心服务器所传输的、上述消息队列中与所登记的事件类别相对应的消息,对上述消息进行处理,并且向上述中心服务器返回消息处理结果。
上述一个或者多个应用服务器中的每个应用服务器可以安全地触发事件,而不用担心依赖第三方服务降低系统的稳定性,如图3所示,每个应用服务器可以包括:事件生成器2110,适于以日志方式生成与要处理的事件相对应的第一日志消息;第一日志传输单元2120,适于在上述事件生成器生成第一日志消息时,将所生成的第一日志消息传输至上述中心服务器。同时,上述订阅服务器具体以日志方式对消息处理结果进行处理以生成第二日志消息,并将上述第二日志消息传输到上述中心服务器。其中,上述第一日志消息和上述第二日志消息包括下列信息中的一个或者多个:事件生成的时间、 生成事件的主机信息、事件类别、事件名、事件标识和事件内容;具体格式说明可参见方法实施例中步骤S101中的相关描述,此处不赘述。
如图3所示,上述一个或者多个订阅服务器中的每个订阅服务器可以包括登记模块2300、事件接收器2310、事件处理器2320和第二日志传输单元2330;其中:登记模块适于向上述中心服务器登记要处理的消息的事件类别;事件接收器适于接收上述中心服务器所传输的、上述消息队列中与所登记的事件类别相对应的消息,从上述消息中提取出要处理的事件;事件处理器适于对上述事件接收器所提取的事件进行处理,获得消息处理结果;第二日志传输单元适于以第二日志消息的方式将来自上述事件处理器的上述消息处理结果传输给上述中心服务器。另外,上述中心服务器可以包括日志接收器2210、消息分发器2230、队列存储器2240和补偿处理器2250,其中:日志接收器适于接收来自上述应用服务器的第一日志消息以及来自上述订阅服务器的第二日志消息;队列存储器适于将上述第一日志消息存储到上述消息队列中;消息分发器适于接收来自上述订阅服务器的要处理的消息的事件类别,监控上述消息队列,并且根据要处理的消息的事件类别而分发上述消息队列中的相应消息至相应的订阅服务器;补偿处理器适于通过将接收的第一日志消息和消息处理结果进行对比,补偿处理失败或丢失的事件。进一步地,上述中心服务器还可以包括:消息预处理器2220;该消息预处理器可以耦接到上述日志接收器和上述队列存储器之间,从第一日志消息中提取出要处理的事件,根据事件配置原则对与提取出的事件对应的第一日志消息进行打包或消重处理,并将经处理的消息发送给队列存储器。
具体地,上述消息预处理器的结构如图4所示,包括第一缓存器410、消重处理单元420和打包处理单元440,其中:第一缓存器适于缓存来自上述日志接收器的要处理的日志消息;消重处理单元适于查找第一缓存器中是否存储有第一日志消息,如果不存在,则将上述第一日志消息缓存于上述第一缓存器中,并且将上述第一日志消息传输至上述队列存储器;如果存在,则不将上述第一日志消息存储于上述第一缓存器中,也不将其传输至上述队列存储器;打包处理单元适于缓存要处理的日志消息,当所缓存的要处理的日志消息数量达到预设的最大值后,将所缓存的日志消息合成一条日志消息,并 输出至上述队列存储器。另外,该消息预处理器还可以包括:定时器430,该定时器适于为定时触发而清除上述第一缓存器中的数据,从而可以避免数据过大的情况出现;也可以在上述打包处理单元中缓存的日志消息数量没有达到预设的最大值的情况下,定时触发将上述打包处理单元中缓存的日志消息合成一条日志消息,并输出给上述队列存储器。
具体地,上述补偿处理器的结构如图5所示,包括:读取单元510、存储单元520和循环处理单元530,其中:读取单元适于从日志接收器中读取N个时间单位内所接收的第一日志消息中包含的数据,N为正整数;存储单元适于将所述读取单元读取到的所述数据存储在数据库中;循环处理单元适于读取N+M个时间单位内订阅服务器返回的消息处理结果,并将消息处理结果与所述数据库中存储的数据进行对比,如果所述数据库中存在消息处理结果中未包含的事件,则将该事件记录为处理失败或丢失的事件,将所述事件进行处理以生成第一日志消息并发送给日志接收器,以由日志接收器将其存储到队列存储器中,其中,M为正整数。另外,上述时间单位可以为分、秒、小时;当时间单位为小时时,M的值可以为1。该补偿处理器可以较好地补偿处理失败或丢失的事件。
如图2-5所示结构的分布式异步事件的处理系统的事件处理过程如图1a-1c所示,此处不赘述。
上述分布式异步事件的处理系统,通过应用服务器为每个要处理的事件创建第一日志消息,并将第一日志消息传输至中心服务器,中心服务器在接收到第一日志消息后将其存储到消息队列中,并根据各个订阅服务器向中心服务器登记的要处理的消息的事件类别,将消息队列中的与所登记的事件类别相对应的消息分别传送至相应的订阅服务器,订阅服务器对上述消息处理后向中心服务器返回消息处理结果,中心服务器通过该消息处理结果可以实时地、低入侵地判断出接收端是否接收到事件并进行了处理;同时,中心服务器将接收的第一日志消息和消息处理结果进行对比,可以补偿处理失败或丢失的事件。
由此可见,上述处理系统将日志实时传输与消息对列相结合,可以实时地进行事件传递(秒级),对应用系统没有侵入性且不降低应用系统的稳定 性,并且使得中心服务器可以根据该消息处理结果实时地、低入侵地判断出接收端是否接收到事件并进行了处理,同时,可以补偿处理失败或丢失的事件,较好地克服了现有技术的缺陷。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其 它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (21)

1.一种分布式异步事件的处理方法,包括:
以日志方式对每一应用服务器中的要处理的事件进行处理,为每个要处理的事件创建第一日志消息,并且传输第一日志消息,所述第一日志消息至少包括事件类别和事件内容;
将接收的所述第一日志消息存储到中心服务器中的消息队列中;
根据各个订阅服务器向所述中心服务器登记的要处理的消息的事件类别,将所述中心服务器的消息队列中的与所登记的事件类别相对应的消息分别传送至相应的订阅服务器;
所述订阅服务器对所述消息进行处理,并向所述中心服务器返回消息处理结果;以及
将接收的第一日志消息和消息处理结果进行对比,补偿处理失败或丢失的事件。
2.根据权利要求1所述的处理方法,其中,所述订阅服务器对所述消息进行处理,并向所述中心服务器返回消息处理结果,包括:
所述订阅服务器以日志方式对消息处理结果进行处理以生成第二日志消息,并将所述第二日志消息传输到所述中心服务器。
3.根据权利要求1所述的处理方法,其中,所述第一日志消息还包括下列中的一个或多个:事件生成的时间、生成事件的主机信息、事件名、事件标识。
4.根据权利要求2所述的处理方法,其中,所述第一日志消息还包括下列中的一个或多个:事件生成的时间、生成事件的主机信息、事件名、事件标识;
所述第二日志消息包括下列中的一个或多个:事件生成的时间、生成事件的主机信息、事件类别、事件名、事件标识和事件内容。
5.根据权利要求1所述的处理方法,所述将接收的第一日志消息和消息处理结果进行对比,补偿处理失败或丢失的事件,包括:
从所述中心服务器读取N个时间单位内所接收的第一日志消息中包含的数据,N为正整数;
将读取到的所述数据存储在数据库中;
读取N+M个时间单位内订阅服务器返回的消息处理结果,并将消息处理结果与所述数据库中存储的数据进行对比,如果所述数据库中存在消息处理结果中未包含的事件,则将该事件记录为处理失败或丢失的事件,将所述事件进行处理以生成第一日志消息,并将第一日志消息存储到中心服务器中的消息队列中,其中,M为正整数。
6.根据权利要求5所述的处理方法,其中,所述时间单位为小时,M的值为1。
7.根据权利要求1或5或6所述的处理方法,其中,将所述第一日志消息存储到中心服务器中的消息队列中,包括:
从所述第一日志消息中提取出要处理的事件;
根据事件配置原则对与提取出的事件对应的第一日志消息进行打包和/或消重处理,然后存储到消息队列中。
8.根据权利要求7所述的处理方法,其中,所述对与提取出的事件对应的第一日志消息进行消重处理,包括:
将要处理的日志消息存储于第一缓存器;
查找所述第一缓存器中是否存储有第一日志消息,如果不存在,则将所述第一日志消息缓存于所述第一缓存器中,并输出至所述消息队列中,如果存在,则不将所述第一日志消息存储于所述第一缓存器中,也不将其传输至所述消息队列中;
其中,所述对与提取出的事件对应的第一日志消息进行打包处理,包括:缓存要处理的日志消息,当所缓存的要处理的日志消息数量达到预设的最大值后,将所缓存的日志消息合成一条日志消息,并输出到所述消息队列中。
9.根据权利要求8所述的处理方法,该方法还包括:
定时触发而清除所述第一缓存器中的数据;和/或
在缓存的日志消息数量没有达到所述预设的最大值的情况下,定时触发而将缓存的日志消息合成一条日志消息,并输出到所述消息队列中。
10.一种分布式异步事件的处理系统,包括:
一个或多个应用服务器,每个应用服务器适于以日志方式对要处理的事件进行处理,为每个要处理的事件创建第一日志消息,并且传输第一日志消息,所述第一日志消息至少包括事件类别和事件内容;
中心服务器,适于接收第一日志消息,将所述第一日志消息存储到所述中心服务器的消息队列中;接收来自每个订阅服务器的消息处理结果,将第一日志消息和消息处理结果进行对比,补偿处理失败或丢失的事件;以及
一个或多个订阅服务器,每个订阅服务器适于向所述中心服务器登记要处理的消息的事件类别,接收所述中心服务器所传输的、所述消息队列中与所登记的事件类别相对应的消息,对所述消息进行处理,并且向所述中心服务器返回消息处理结果。
11.根据权利要求10所述的处理系统,其中,所述一个或者多个应用服务器中的每个应用服务器包括:
事件生成器,适于以日志方式生成与要处理的事件相对应的第一日志消息;
第一日志传输单元,适于在所述事件生成器生成第一日志消息时,将所生成的第一日志消息传输至所述中心服务器。
12.根据权利要求10所述的处理系统,其中,所述订阅服务器,具体适于:以日志方式对消息处理结果进行处理以生成第二日志消息,并将所述第二日志消息传输到所述中心服务器。
13.根据权利要求12所述的处理系统,其中,所述第一日志消息还包括下列中的一个或多个:事件生成的时间、生成事件的主机信息、事件名、事件标识;
所述第二日志消息包括下列中的一个或者多个:事件生成的时间、生成事件的主机信息、事件类别、事件名、事件标识和事件内容。
14.根据权利要求10或12所述的处理系统,其中,所述一个或者多个订阅服务器中的每个订阅服务器包括:
登记模块,适于向所述中心服务器登记要处理的消息的事件类别;
事件接收器,适于接收所述中心服务器所传输的、所述消息队列中与所登记的事件类别相对应的消息,从所述消息中提取出要处理的事件;
事件处理器,适于对所述事件接收器所提取的事件进行处理,获得消息处理结果;
第二日志传输单元,适于以第二日志消息的方式将来自所述事件处理器的所述消息处理结果传输给所述中心服务器。
15.根据权利要求10所述的处理系统,其中,所述中心服务器包括:
日志接收器,适于接收来自所述应用服务器的第一日志消息以及来自所述订阅服务器的第二日志消息;
队列存储器,适于将所述第一日志消息存储到所述消息队列中;
消息分发器,适于接收来自所述订阅服务器的要处理的消息的事件类别,监控所述消息队列,并且根据要处理的消息的事件类别而分发所述消息队列中的相应消息至相应的订阅服务器;以及
补偿处理器,适于通过将接收的第一日志消息和消息处理结果进行对比,补偿处理失败或丢失的事件。
16.根据权利要求15所述的处理系统,其特征在于,所述补偿处理器包括:
读取单元,适于从日志接收器中读取N个时间单位内所接收的第一日志消息中包含的数据,N为正整数;
存储单元,适于将所述读取单元读取到的所述数据存储在数据库中;以及
循环处理单元,适于读取N+M个时间单位内订阅服务器返回的消息处理结果,并将消息处理结果与所述数据库中存储的数据进行对比,如果所述数据库中存在消息处理结果中未包含的事件,则将该事件记录为处理失败或丢失的事件,将所述事件进行处理以生成第一日志消息并发送给日志接收器,以由日志接收器将其存储到队列存储器中,其中,M为正整数。
17.根据权利要求16所述的处理系统,其中,所述日志接收器,还适于接收来自所述补偿处理器的第一日志消息。
18.根据权利要求16所述的处理系统,其中,时间单位为小时,M的值为1。
19.根据权利要求15-18任一所述的处理系统,其中,所述中心服务器还包括:
消息预处理器,适于从第一日志消息中提取出要处理的事件,根据事件配置原则对与提取出的事件对应的第一日志消息进行打包或消重处理,并将经处理的消息发送给所述队列存储器。
20.根据权利要求19所述的处理系统,其中,所述消息预处理器包括:
第一缓存器,适于缓存来自所述日志接收器的要处理的日志消息;
消重处理单元,适于查找第一缓存器中是否存储有第一日志消息,如果不存在,则将所述第一日志消息缓存于所述第一缓存器中,并且将所述第一日志消息传输至所述队列存储器;如果存在,则不将所述第一日志消息存储于所述第一缓存器中,也不将其传输至所述队列存储器;和/或
打包处理单元,适于缓存要处理的日志消息,当所缓存的要处理的日志消息数量达到预设的最大值后,将所缓存的日志消息合成一条日志消息,并输出至所述队列存储器。
21.根据权利要求20所述的系统,其中,所述消息预处理器还包括:
定时器,适于为定时触发而清除所述第一缓存器中的数据;和/或,在所述打包处理单元中缓存的日志消息数量没有达到预设的最大值的情况下,定时触发将所述打包处理单元中缓存的日志消息合成一条日志消息,并输出给所述队列存储器。
CN201310476116.8A 2013-10-12 2013-10-12 分布式异步事件的处理方法及系统 Active CN103530255B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310476116.8A CN103530255B (zh) 2013-10-12 2013-10-12 分布式异步事件的处理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310476116.8A CN103530255B (zh) 2013-10-12 2013-10-12 分布式异步事件的处理方法及系统

Publications (2)

Publication Number Publication Date
CN103530255A CN103530255A (zh) 2014-01-22
CN103530255B true CN103530255B (zh) 2017-01-11

Family

ID=49932280

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310476116.8A Active CN103530255B (zh) 2013-10-12 2013-10-12 分布式异步事件的处理方法及系统

Country Status (1)

Country Link
CN (1) CN103530255B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104618432B (zh) * 2014-12-30 2019-03-08 北京红马传媒文化发展有限公司 一种事件发送与接收的处理方法和处理系统
CN105022822A (zh) * 2015-07-17 2015-11-04 成都视达科信息技术有限公司 一种基于php收集及存储日志的方法和系统
CN105577533A (zh) * 2016-03-18 2016-05-11 微梦创科网络科技(中国)有限公司 一种分布式的消息投放系统和方法
CN106874122A (zh) * 2017-03-02 2017-06-20 上海携程国际旅行社有限公司 基于消息队列的事件分配方法及系统
CN108241570A (zh) * 2018-01-10 2018-07-03 北京奇艺世纪科技有限公司 一种状态查看方法和系统
CN109451078B (zh) * 2019-01-10 2022-05-03 网易(杭州)网络有限公司 一种分布式架构下的事务处理方法和装置
CN109639836B (zh) * 2019-01-28 2022-02-01 上海易点时空网络有限公司 用于社区的内容发布处理方法、客户端、服务器
CN110213322B (zh) * 2019-01-28 2022-04-05 上海易点时空网络有限公司 用于社区的内容发布处理方法、客户端、服务器
CN110083460A (zh) * 2019-03-25 2019-08-02 华东师范大学 一种利用事件总线技术的微内核架构的设计方法
CN110288486A (zh) * 2019-05-22 2019-09-27 深圳壹账通智能科技有限公司 实时处理数据的异步补偿方法、装置、设备及存储介质
CN110222118B (zh) * 2019-05-23 2022-04-05 上海易点时空网络有限公司 基于队列的异步数据处理方法及装置
CN113254466B (zh) * 2021-06-18 2022-03-01 腾讯科技(深圳)有限公司 一种数据处理方法、装置、电子设备和存储介质
CN113901271A (zh) * 2021-12-10 2022-01-07 飞狐信息技术(天津)有限公司 基于电子表格配置系统的方法、装置、存储介质和设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1992683A (zh) * 2005-12-28 2007-07-04 腾讯科技(深圳)有限公司 一种实现群订阅服务的方法和系统
CN101115225A (zh) * 2006-07-28 2008-01-30 中兴通讯股份有限公司 移动终端利用多媒体消息实现rss订阅的系统及方法
CN101459908A (zh) * 2007-12-13 2009-06-17 华为技术有限公司 一种业务订阅方法、系统、服务器
CN102110167A (zh) * 2011-03-01 2011-06-29 上海奈凯电子科技有限公司 数控系统中实现日志信息管理的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1992683A (zh) * 2005-12-28 2007-07-04 腾讯科技(深圳)有限公司 一种实现群订阅服务的方法和系统
CN101115225A (zh) * 2006-07-28 2008-01-30 中兴通讯股份有限公司 移动终端利用多媒体消息实现rss订阅的系统及方法
CN101459908A (zh) * 2007-12-13 2009-06-17 华为技术有限公司 一种业务订阅方法、系统、服务器
CN102110167A (zh) * 2011-03-01 2011-06-29 上海奈凯电子科技有限公司 数控系统中实现日志信息管理的方法

Also Published As

Publication number Publication date
CN103530255A (zh) 2014-01-22

Similar Documents

Publication Publication Date Title
CN103530255B (zh) 分布式异步事件的处理方法及系统
CN103532755B (zh) 分布式异步事件的处理方法及系统
CN110276182B (zh) Api分布式限流的实现方法
CN104169952B (zh) 一种网络支付方法、装置及系统
CN104539713B (zh) 业务请求处理方法和装置
CN106874361B (zh) 应用于海关申报的数据处理方法和装置
CN106354795B (zh) 一种分布式数据交换系统
CN104852934A (zh) 基于前端调度实现流量分配的方法、装置和系统
CN109088909B (zh) 一种基于商户类型的服务灰度发布方法及设备
CN103577251A (zh) 基于事件的互联网计算处理系统及方法
CN103607424B (zh) 一种服务器连接方法及服务器系统
CN109144683A (zh) 任务处理方法、装置、系统及电子设备
CN110427304A (zh) 用于银行系统的运维方法、装置、电子设备以及介质
CN108897854A (zh) 一种超时任务的监控方法和装置
CN108616429A (zh) 一种推送服务的重连方法及设备
CN108418874A (zh) 跨广域网数据回导方法、装置、计算机设备及存储介质
CN113630310B (zh) 一种分布式高可用网关系统
CN110287266A (zh) 一种分布式系统及数据处理方法
CN111277422A (zh) 微服务的处理方法、装置、系统和计算机可读存储介质
CN113691511B (zh) 服务请求处理方法及其装置、设备与介质
CN113179324B (zh) 一种区块链节点及其执行的业务处理方法
CN108833500B (zh) 服务调用方法、服务提供方法、数据传递方法和服务器
CN109299173A (zh) 数据传输方法、装置及存储介质
CN110324365A (zh) 无密钥前端集群系统、应用方法、存储介质、电子装置
CN109194706A (zh) 网络资源拨测方法及终端

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220729

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right