本发明涉及数据处理技术领域,特别是涉及一种服务器事件处理系统及方法。
背景技术:
目前,服务器是提供计算服务器的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务器的能量。进一步的,服务器对事件的处理能力和速度,特别是服务器对服务器事件的处理能力和速度极大的影响服务系统的正常运行。
技术实现要素:
本发明提供一种服务器事件处理系统及方法,实现了服务器事件的双重处理,保障了服务器事件不被遗漏,保障了服务器事件的处理质量,同时更提高了服务器事件处理以及处理结果返回的速度。
本发明解决上述技术问题的技术方案如下:一种服务器事件处理系统,包括:连接服务器和消息服务器,所述连接服务器包括缓存引擎和会话控制模型;
所述缓存引擎,用于监听所述消息服务器,获取服务器事件,将所述服务器事件发送至所述会话控制模型,并处理所述服务器事件,得到并发送服务器事件处理结果列表至所述会话控制模型;
所述会话控制模型,用于接收并分别所述处理服务器事件和所述服务器事件处理结果列表,并将处理结果发送至客户端,其中,所述会话控制模型和客户端一一对应。
本发明的有益效果是:缓存引擎获取到消息服务器中的服务器事件后,一方面将该服务器事件发送给所有的会话控制模型,由会话控制模型直接处理,每个会话控制模型处理后将处理结果发送给其对应的客户端,另一方面,缓存引擎处理该服务器事件,并得到处理结果列表后,再将该处理结果列表发送给所有的会话控制模型,每个会话控制模型处理上述处理结果列表,并将处理结果发送至其对应的客户端,实现了服务器事件的双重处理,保障了服务器事件不被遗漏,同时,所有的服务器事件均通过会话控制模型处理,保障了服务器事件的处理质量,另外,每个客户端对应一个会话控制模型,提高了处理以及处理结果返回的速度。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述会话控制模型包括视图数据模型;
则所述会话控制模型,用于接收并分别将所述服务器事件和所述服务器事件处理结果列表发送至所述视图数据模型;
所述视图数据模型,用于接收并处理所述服务器事件,得到第一处理结果;接收并处理所述服务器事件处理结果列表,得到第二处理结果;分别将所述第一处理结果和所述第二处理结果发送至所述会话控制模型对应的客户端,其中,所述第一处理结果和所述第二处理结果分别为视图变更内容。
进一步,所述缓存引擎包括缓存类事件处理器;
则所述缓存引擎在用于监听所述消息服务器并获取和处理服务器事件时,具体包括:
监听所述消息服务器,获取服务器事件;根据所述服务器事件,循环取得其对应的缓存类事件处理器列表;所述缓存类事件处理器列表中的缓存类事件处理器分别处理所述服务器事件,得到服务器事件处理结果列表;发送所述服务器事件处理结果列表至所述会话控制模型。
进一步,所述连接服务器还包括注册模块和会话控制模型创建模块;
所述注册模块,用于在接收到客户端发送的注册类事件后,调用登陆处理方法处理所述注册类事件,得到并向客户端返回登陆处理结果;
所述会话控制模型创建模块,用于在客户端登陆成功后,创建所述客户端对应的所述会话控制模型。
进一步,所述会话控制模型还包括直接事件处理器;
则所述会话控制模型还将所述服务器事件和所述服务器事件处理结果列表发送至所述直接事件处理器;
所述直接事件处理器,用于接收并处理所述服务器事件,得到第三处理结果;接收并处理所述服务器事件处理结果列表,得到第四处理结果;分别将所述第三处理结果和所述第四处理结果发送至所述会话控制模型对应的客户端。
本发明还提供了一种服务器事件处理方法,包括:
步骤1、缓存引擎监听消息服务器,获取服务器事件,将所述服务器事件发送至会话控制模型,并处理所述服务器事件,得到并发送服务器事件处理结果列表至所述会话控制模型;
步骤2、所述会话控制模型接收并分别处理所述服务器事件和所述服务器事件处理结果列表,并将处理结果发送至客户端,
其中,所述会话控制模型与客户端一一对应。
本发明的有益效果是:缓存引擎获取到消息服务器中的服务器事件后,一方面将该服务器事件发送给所有的会话控制模型,由会话控制模型直接处理,每个会话控制模型处理后将处理结果发送给其对应的客户端,另一方面,缓存引擎处理该服务器事件,并得到处理结果列表后,再将该处理结果列表发送给所有的会话控制模型,每个会话控制模型处理上述处理结果列表,并将处理结果发送至其对应的客户端,实现了服务器事件的双重处理,保障了服务器事件不被遗漏,同时,所有的服务器事件均通过会话控制模型处理,保障了服务器事件的处理质量,另外,每个客户端对应一个会话控制模型,提高了处理以及处理结果返回的速度。
进一步,所述会话控制模型包括视图数据模型;
则所述步骤2包括:
步骤2.1、所述会话控制模型接收并分别将所述服务器事件和所述服务器事件处理结果列表发送至所述视图数据模型;
步骤2.2、所述视图数据模型接收并处理所述服务器事件,得到第一处理结果;
步骤2.3、所述视图数据模型接收并处理所述服务器事件处理结果列表,得到第二处理结果;
步骤2.4、分别将所述第一处理结果和所述第二处理结果发送至所述会话控制模型对应的客户端,其中,所述第一处理结果和所述第二处理结果分别为视图变更内容。
进一步,所述缓存引擎包括缓存类事件处理器;
则所述步骤1包括:
步骤1.1、所述缓存引擎监听所述消息服务器,获取服务器事件;
步骤1.2、根据所述服务器事件,循环取得其对应的缓存类事件处理器列表;
步骤1.3、所述缓存类事件处理器列表中的缓存类事件处理器分别处理所述服务器事件,得到服务器事件处理结果列表;
步骤1.4、发送所述服务器事件处理结果列表至所述会话控制模型。
进一步,在所述缓存引擎监听所述消息服务器之前,所述方法还包括:
注册模块在接收到客户端发送的注册类事件后,调用登陆处理方法处理所述注册类事件,得到并向客户端返回登陆处理结果;
若所述登陆处理结果为成功,则视图会话控制器创建模块创建所述客户端对应的所述会话控制模型。
进一步,所述会话控制模型还包括直接事件处理器;
则所述步骤2还包括:
步骤2.5、所述会话控制模型将所述服务器事件和所述服务器事件处理结果列表发送至所述直接事件处理器;
步骤2.6、所述直接事件处理器接收并处理所述服务器事件,得到第三处理结果;
步骤2.7、所述直接事件处理器接收并处理所述服务器事件处理结果列表,得到第四处理结果;
步骤2.8、分别将所述第三处理结果和所述第四处理结果发送至所述会话控制模型对应的客户端。
附图说明
图1为本发明实施例一提供的一种服务器事件处理系统的示意性结构图;
图2为本发明实施例二提供的一种服务器事件处理系统的示意性结构图;
图3为本发明实施例三提供的一种服务器事件处理方法的流程示意图;
图4为图3中的步骤220的流程示意图;
图5为图3中的步骤210的流程示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
实施例一
一种服务器事件处理系统100,如图1所示,包括:连接服务器和消息服务器,连接服务器包括缓存引擎和会话控制模型。
缓存引擎,用于监听消息服务器,获取服务器事件,将服务器事件发送至会话控制模型,并处理服务器事件,得到并发送服务器事件处理结果列表至会话控制模型。
会话控制模型,用于接收并分别处理服务器事件和服务器事件处理结果列表,并将处理结果发送至客户端。
其中,会话控制模型和客户端一一对应。
另外,需要说明的是,会话控制模型中有多个独立的处理线程,部分独立处理线程用于对接收到的事件进行处理,部分独立处理线程用于向客户端发送处理结果。
实施例二
一种服务器事件处理系统100,如图2所示,包括:连接服务器和消息服务器,连接服务器包括注册模块、会话控制模型创建模块、缓存引擎和会话控制模型。
注册模块,用于在接收到客户端发送的注册类事件后,调用登陆处理方法处理注册类事件,得到并向客户端返回登陆处理结果。
会话控制模型创建模块,用于在客户端登陆成功后,创建客户端对应的所述会话控制模型。
缓存引擎,用于监听消息服务器,获取服务器事件,将服务器事件发送至会话控制模型,并处理服务器事件,得到并发送服务器事件处理结果列表至会话控制模型。
会话控制模型,用于接收并分别处理服务器事件和服务器事件处理结果列表,并将处理结果发送至客户端。
其中,会话控制模型和客户端一一对应,因此,连接服务器内的会话控制模型的个数取决于客户端连接的个数。
另外,一个会话控制模型又包括多个视图数据模型,会话控制模型接收并分别将服务器事件和服务器事件处理结果列表发送至所有的视图数据模型,所有的视图数据模型接收并处理服务器事件,得到第一处理结果,所有的试图数据模型接收并处理服务器事件处理结果列表,得到第二处理结果,分别将第一处理结果和第二处理结果发送至会话控制模型对应的客户端,其中,第一处理结果和所述第二处理结果分别为视图变更内容。
另外,需要说明的是,会话控制模型中有多个独立的处理线程,部分独立处理线程用于对接收到的事件进行处理,部分独立处理线程用于向客户端发送处理结果
需要说明的是,上述视图变更内容为两次视图的差异部分,例如,a服务器事件由缓存引擎从消息服务器中监听并获取到,并由缓存引擎将其发送至会话控制模型,会话控制模型中的试图数据模型对该服务器事件进行处理,得到a结果,当a服务器事件由缓存引擎从消息服务器中再次监听并获取到,且会话控制模型再次接收到该服务器事件时,由试图数据模型进行处理,处理得到b结果,a结果和b结果之间的差异,即为视图变更内容,会话控制模型会将该变更内容封装为model事件,通过更新线程推送至客户端。
另外,缓存引擎包括缓存类事件处理器(简称,mr事件处理器),用于处理缓存相关的服务器事件,例如,处理从消息服务器中监听到的服务器事件,如视图更改请求事件。则缓存引擎在用于监听消息服务器并获取和处理服务器事件时,具体包括:监听消息服务器,获取服务器事件,根据服务器事件,循环取得其对应的缓存类事件处理器列表,缓存类事件处理器列表中的缓存类事件处理器分别处理服务器事件,得到服务器事件处理结果列表,发送服务器事件处理结果列表至会话控制模型。
其中,缓存引擎中预设有服务器事件主题,缓存引擎在获取到服务器事件后,会根据服务器事件的主题,一一找到该主题对应的缓存类事件处理器,得到缓存类事件处理器列表,该缓存类事件处理器列表中的缓存类事件处理器分别处理该服务器事件,因此,该服务器事件经各缓存类事件处理器处理后即得到服务器事件处理结果列表。
一个会话控制模型还包括多个直接事件处理器(简称,d事件处理器),则会话控制模型还将服务器事件和服务器事件处理结果列表发送至所有的直接事件处理器,直接事件处理器,用于接收并处理上述服务器事件和上述服务器事件处理结果列表,得到并发送第三处理结果至会话控制模型对应的客户端。
需要说明的是,连接服务器中的缓存引擎有1个,在连接服务器启动的时候,缓存引擎会注册直接事件处理器,且直接事件处理器仅在缓存引擎中注册,会话控制模型会在客户端登陆后,从缓存引擎中拷贝该直接事件处理器,上述直接事件处理器只有在会话控制模型中进行事件的处理。
实施例三
一种服务器事件处理方法200,如图3所示,包括:
步骤210、缓存引擎监听消息服务器,获取服务器事件,将该服务器事件发送至会话控制模型,并处理该服务器事件,得到并发送服务器事件处理结果列表至上述会话控制模型。
步骤220、会话控制模型接收并分别处理服务器事件和所述服务器事件处理结果列表,得到并发送处理结果至客户端,其中,会话控制模型与客户端一一对应。
会话控制模型包括视图数据模型和直接事件处理器,如图4所示,则步骤220具体包括:
步骤221、会话控制模型接收并分别将服务器事件和服务器事件处理结果列表发送至视图数据模型,并分别将服务器事件和服务器事件处理结果列表发送至直接事件处理器。
步骤222、视图数据模型和直接事件处理器分别接收并处理服务器事件,并分别得到第一处理结果和第三处理结果。
步骤223、视图数据模型和直接事件处理器还分别接收并处理服务器事件处理结果列表,分别得到第二处理结果和第四处理结果。
步骤224、分别将第一处理结果、第二处理结果、第三处理结果和第四处理结果发送至会话控制模型对应的客户端,其中,第一处理结果和第二处理结果分别为视图变更内容。
可以理解的,步骤222和步骤223没有先后顺序,可以同时进行,也可以先进行步骤222,再进行步骤223。
缓存引擎包括缓存类事件处理器,则如图5所示,步骤210具体包括:
步骤211、缓存引擎监听消息服务器,获取服务器事件。
步骤212、根据服务器事件,循环取得其对应的缓存类事件处理器列表。
步骤213、缓存类事件处理器列表中的缓存类事件处理器分别处理服务器事件,得到服务器事件处理结果列表。
步骤214、发送服务器事件处理结果列表至会话控制模型。
另外,在步骤210之前,连接服务器中注册生成客户端对应的会话控制模型,具体包括:
注册模块在接收到客户端发送的注册类事件后,调用登陆处理方法处理注册类事件,得到并向客户端返回登陆处理结果,若登陆处理结果为成功,则视图会话控制器创建模块创建客户端对应的所述会话控制模型。
缓存类事件处理器用于处理缓存相关事件,缓存相关事件可为从消息服务器中获取的服务器事件也可为缓存中的事件,直接事件处理器用于处理非缓存相关的服务器事件,例如,处理客户端直接发送过来的事件,如点击进入页面按钮、滑屏等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。