一种消息处理的方法及系统与流程

文档序号:13703479阅读:105来源:国知局
技术领域本发明涉及通信技术领域,尤其涉及一种消息处理的方法及系统。

背景技术:
现有的常用HTML5协议可以使客户端和服务器之间形成一条快速通道,直接进行数据传送,大大地提高了客户端与服务器之间的即时通讯效率。在一些对消息处理和转发的实时性要求较高的应用中,例如支持网页的即时聊天工具、实时同步白板和网页游戏等,通常都需要有一个消息服务器来负责消息的处理和转发。但单个消息服务器只能服务有限用户量,当大量用户同时在线,并且每一条消息都需要进行处理和转发给所有用户时,随着用户数量的增长,消息服务器往往会因为难以支撑大量的用户而导致无法提供服务。例如,对于实时同步白板的应用,如果同时在线用户有1000个,并且其中一个用户A正在以正常书写速度在白板上画一条横线,为了让其余999个用户可以实时看到这条横线的绘制过程,用户A书写的每一个点都需要以消息的方式通过消息服务器发送给其余999个用户,假设以正常书写速度每秒可以发送20条消息,则消息服务器每秒需要发送20000条消息,如果所有的消息都通过单一的消息服务器来转发,则该消息服务器的负载为20n/s,其中n为同时在线的用户数量,可见消息服务器的负载与同时在线的用户数量成正比,当同时在线的用户数量超出了消息服务器所能承载的极限时,该消息服务器可能会因为超载而无法提供服务。同时,消息转发之前往往还需要对消息进行必要的处理,例如存储、数据转换等,这些操作会进一步增加消息服务器的负荷,降低单台消息服务器的消息转发能力。

技术实现要素:
本发明的目的在于提供一种消息处理的方法和系统,旨在解决现有技术中的消息分发系统中单个消息服务器只能服务有限用户量的问题。本发明的第一方面,提供一种消息处理的方法,包括:管理模块实时监测用户接入量是否超过阈值,当监测到所述用户接入量超过所述阈值时,在连接服务模块群组中新增并启动新增的连接服务模块;所述连接服务模块群组接收客户端发送的消息,并将所述消息通过通信模块转发给消息处理模块;所述消息处理模块对所述消息进行处理。本发明的第二方面,提供一种消息处理的系统,包括客户端、管理模块、连接服务模块群组、通信模块和消息处理模块;所述管理模块,用于实时监测用户接入量是否超过阈值,当监测到所述用户接入量超过所述阈值时,在所述连接服务模块群组中新增并启动新增的连接服务模块;所述连接服务模块群组,用于接收所述客户端发送的消息,并将所述消息通过所述通信模块转发给消息处理模块;所述消息处理模块,用于对所述消息进行处理。本发明与现有技术相比存在的有益效果是:通过管理模块实时监测用户接入量是否超过阈值,当监测到所述用户接入量超过所述阈值时,在连接服务模块群组中新增并启动新增的连接服务模块,该连接服务模块可以支持一定的用户接入量,每个连接服务模块只需要向其所接入的用户发送消息,避免了单台消息服务器由于用户数量增加而超载的情况,从而可以实现在同一信道上用户接入量的无限度横向扩展,具有高可用性;同时,连接服务模块群组将接收到的客户端消息通过通信模块发送给消息处理模块进行处理,通过连接服务模块与消息处理模块分离的方式,将消息分发和消息处理分别在不同的模块完成,可以最大限度的增加消息分发能力,并且当新增业务时只需在消息处理模块完成,对保持连接的客户端用户透明,从而实现客户端连接和逻辑处理完全分离,具有高灵活性。附图说明图1是本发明实施例一提供的消息处理的方法的流程图;图2是本发明实施例二提供的消息处理的方法的流程图;图3是本发明实施例二提供的应用消息处理的方法的网络结构示意图;图4是本发明实施例三与实施例四提供的消息处理的系统的结构示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。以下结合具体附图对本发明的实现进行详细的描述。实施例一:图1是本发明实施例一提供的消息处理的方法的流程图,具体包括步骤S101至S103,详述如下:S101、管理模块实时监测用户接入量是否超过阈值,当监测到用户接入量超过阈值时,在连接服务模块群组中新增并启动新增的连接服务模块。具体地,管理模块可以是一个独立的管理进程,也可以是一台管理服务器。连接服务模块群组包含若干个连接服务模块,连接服务模块作为服务节点,可以是一个独立的服务进程,也可以是一台服务器,可以同时开启多个服务进程或者多台服务器提供服务。单个连接服务模块可以支持的用户接入量有限,管理模块实时检测连接服务模块的用户接入量是否超过其阈值,即所能支持用户接入量的上限。当管理模块监测到连接服务模块的用户接入量超过阈值时,新增一个连接服务模块并启动该新增的连接服务模块,使得超过阈值的接入用户可以通过该新增的连接服务模块接入。S102、连接服务模块群组接收客户端发送的消息,并将该消息通过通信模块转发到消息处理模块。具体地,客户端可以通过代理服务器与连接服务模块群组中的连接服务模块连接。客户端将需要发送的消息通过代理服务器发送给连接服务模块,连接服务模块将该消息通过通信模块转发给消息处理模块进行处理。通信模块负责连接服务模块与消息处理模块之间的消息通信。通信模块可以是一个独立的通信进程,也可以是一台通信服务器。进一步地,通信模块可以提供发布/订阅(pub/sub)服务,用以完成连接服务模块与消息处理模块之间的消息通信。S103、消息处理模块对该消息进行处理。具体地,消息处理模块是与连接服务模块分离的模块,可以是一个独立的消息处理进程,也可以是一台消息处理服务器。消息处理模块可以根据业务逻辑的需要,对接收到的消息进行处理,例如对用户认证、进行数据存储等处理。由于消息处理模块与连接服务模块完全分离,因此当需要新增业务逻辑时,只需要在消息处理模块完成,连接服务模块、通信模块、以及客户端这些节点都不需要进行任何变动,对接入的用户来说完全透明。采用本实施例提供的方法,每当管理模块监测到用户接入量超过连接服务模块所能承载的极限时,就会添加一个新的连接服务模块作为服务节点,该服务节点可以支持一定数量的用户接入量,每个服务节点只需要向其所接入的用户发送消息,避免了单台消息服务器由于用户数量增加而超载的情况,可以实现在同一信道上用户接入量的无限度横向扩展。同时,消息处理模块和连接服务模块的分离,使得消息处理和消息转发可以分别由不同的服务器完成,从而降低连接服务模块的负荷,可最大限度的增加消息转发能力。需要说明的是,这里的信道是指信息通道,即客户端与连接服务模块所在的服务端之间的数据交换通道;同一信道是指所有的客户端用户可以接收服务端在该信道上发送的消息,即在同一信道上的用户可以通过服务端共享消息。本实施例中,通过管理模块实时监测用户接入量是否超过阈值,当监测到所述用户接入量超过所述阈值时,在连接服务模块群组中新增并启动新增的连接服务模块,该连接服务模块可以支持一定的用户接入量,每个连接服务模块只需要向其所接入的用户发送消息,避免了单台消息服务器由于用户数量增加而超载的情况,从而可以实现在同一信道上用户接入量的无限度横向扩展,具有高可用性;同时,连接服务模块群组将接收到的客户端消息通过通信模块发送给消息处理模块进行处理,通过连接服务模块与消息处理模块分离的方式,将消息分发和消息处理分别在不同的模块完成,可以最大限度的增加消息分发能力,并且当新增业务时只需在消息处理模块完成,对保持连接的客户端用户透明,从而实现客户端连接和逻辑处理完全分离,具有高灵活性。实施例二:图2是本发明实施例二提供的消息处理的方法的流程图,具体包括步骤S201至S204,详述如下:S201、管理模块实时监测用户接入量是否超过阈值,当监测到用户接入量超过阈值时,在连接服务模块群组中新增并启动新增的连接服务模块。本实施例中,步骤S201与附图1示例的步骤S101相同,其涉及的相关术语、概念或技术特征等与步骤S101涉及的的相关术语、概念或技术特征等完全相同,此处不再赘述。S202、连接服务模块群组建立并保持与客户端之间的实时连接。具体地,客户端可以通过代理服务器与连接服务模块群组中的连接服务模块连接,连接服务模块可以使用WebSocket协议与客户端建立并保持实时连接,通过发送和接收心跳包确保客户端和连接服务模块之间保持连接。S203、连接服务模块群组接收客户端发送的消息,并通过发布/订阅服务将该消息通过通信模块转发给消息处理模块。通信模块负责消息处理模块与连接服务模块群组中的连接服务模块之间的消息通信。通信模块可以是一个独立的通信进程,也可以是一台通信服务器。通信模块提供发布/订阅(pub/sub)服务,用以完成连接服务模块与消息处理模块之间的消息通信。具体地,客户端将需要发送的消息通过代理服务器发送给连接服务模块群组中的连接服务模块,连接服务模块将该消息发布(publish)给通信模块,并由消息处理模块订阅(Subscribe)该消息。S204、消息处理模块对该消息进行处理。消息处理模块是与连接服务模块分离的模块,可以是一个独立的消息处理进程,也可以是一台消息处理服务器。具体地,消息处理模块通过订阅方式从通信模块接收到该消息后,根据业务逻辑的需要,对该消息进行处理,例如对用户认证、进行数据存储等处理。由于消息处理模块与连接服务模块完全分离,因此当需要新增业务逻辑时,只需要在消息处理模块完成,连接服务模块、通信模块、以及客户端这些节点都不需要进行任何变动,对接入的用户来说完全透明。S205、消息处理模块将处理结果及处理结果的接收方的标识信息通过消息分发指令返回给通信模块。具体地,消息处理模块对接收的消息处理完成后,当需要对处理后的消息进行消息分发时,将处理的结果以及处理结果的接收方的标识信息通过消息分发指令发送给通信模块。S206、通信模块根据标识信息,从连接服务模块群组中确定目标连接服务模块,将消息分发指令发送给目标连接服务模块,以便目标连接服务模块将处理结果返回给目标客户端。具体地,通信模块根据接收方的标识信息,从连接服务模块群组中确定目标连接服务模块,并将消息分发指令发送给目标连接服务模块,以便目标连接服务模块将处理结果返回给目标客户端。进一步地,采用通信模块提供的发布/订阅(pub/sub)服务,消息处理模块将需要分发的消息通过消息分发指令发布到通信模块后,由目标连接服务模块订阅该消息,并进行分发。图3为应用本发明实施例提供的消息处理的方法的一个具体的网络结构示意图。其中,客户端31可以是电脑、手机等终端设备,连接服务模块群组33由多个服务节点331组成,每一个服务节点331对应一个连接服务模块,连接服务模块群组33通过代理服务器32与客户端31保持连接,管理模块36实时监测服务节点331的用户接入量是否超过阈值,通信模块34提供消息发布/订阅服务,连接服务模块群组33中的服务节点331将消息发布到通信模块34,由消息处理模块35订阅该消息并进行处理,消息处理模块35处理完该消息后,将处理后的消息通过消息分发指令发布到通信模块34,由服务节点331订阅该消息并进行分发。本实施例中,通过管理模块实时监测用户接入量是否超过阈值,当监测到所述用户接入量超过所述阈值时,在连接服务模块群组中新增并启动新增的连接服务模块,该连接服务模块可以支持一定的用户接入量,每个连接服务模块只需要向其所接入的用户发送消息,避免了单台消息服务器由于用户数量增加而超载的情况,从而可以实现在同一信道上用户接入量的无限度横向扩展,具有高可用性;同时,连接服务模块群组将接收到的客户端消息通过通信模块提供的发布/订阅服务发布到消息处理模块进行处理,并在消息处理模块对处理后的消息进行消息分发时,通过通信模块提供的发布/订阅服务由目标连接服务模块订阅该消息进行分发,通过连接服务模块与消息处理模块分离的方式,将消息分发和消息处理分别在不同的模块完成,可以最大限度的增加消息分发能力,并且当新增业务时只需在消息处理模块完成,对保持连接的客户端用户透明,从而实现客户端连接和逻辑处理完全分离,具有高灵活性。实施例三:图4是本发明实施例三和实施例四提供的消息处理的系统的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。图4示例的用于消息的系统可以是前述实施例一提供的用于消息处理的方法的执行主体。图4示例的用于消息处理的系统主要包括:客户端41、管理模块42、连接服务模块群组43、通信模块44和消息处理模块45,各功能模块详细说明如下:管理模块42,用于实时监测用户接入量是否超过阈值,当监测到用户接入量超过阈值时,在连接服务模块群组43中新增并启动新增的连接服务模块431;连接服务模块群组43,用于接收客户端41发送的消息,并将该消息通过通信模块44转发给消息处理模块45;消息处理模块45,用于对该消息进行处理。本实施例提供的消息处理的系统中各模块实现各自功能的过程,具体可参考前述图1所示实施例的描述,此处不再赘述。从上述图4示例的用于消息处理的系统可知,本实施例中,通过管理模块实时监测用户接入量是否超过阈值,当监测到所述用户接入量超过所述阈值时,在连接服务模块群组中新增并启动新增的连接服务模块,该连接服务模块可以支持一定的用户接入量,每个连接服务模块只需要向其所接入的用户发送消息,避免了单台消息服务器由于用户数量增加而超载的情况,从而可以实现在同一信道上用户接入量的无限度横向扩展,具有高可用性;同时,连接服务模块群组将接收到的客户端消息通过通信模块发送给消息处理模块进行处理,通过连接服务模块与消息处理模块分离的方式,将消息分发和消息处理分别在不同的模块完成,可以最大限度的增加消息分发能力,并且当新增业务时只需在消息处理模块完成,对保持连接的客户端用户透明,从而实现客户端连接和逻辑处理完全分离,具有高灵活性。实施例四:请继续参阅图4,为了便于说明,仅示出了与本发明实施例相关的部分。图4示例的用于消息的系统可以是前述实施例二提供的用于消息处理的方法的执行主体。与实施例3不同的是,在本实施例中:进一步地,通信模块44,还用于通过发布/订阅服务将消息转发给消息处理模块45;进一步地,消息处理模块45,还用于将处理结果及处理结果的接收方的标识信息通过消息分发指令返回给通信模块44;通信模块44,还用于根据标识信息,从连接服务模块群组43中确定目标连接服务模块431,将消息分发指令发送给目标连接服务模块431,以便目标连接服务模块431将处理结果返回给目标客户端41;进一步地,通信模块44,还用于通过发布/订阅服务将消息分发指令发送给目标连接服务模块431;进一步地,连接服务模块群组43,还用于建立并保持与客户端41之间的实时连接。本实施例提供的消息处理的系统中各模块实现各自功能的过程,具体可参考前述图2所示实施例的描述,此处不再赘述。从上述图4示例的用于消息处理的系统可知,本实施例中,通过管理模块实时监测用户接入量是否超过阈值,当监测到所述用户接入量超过所述阈值时,在连接服务模块群组中新增并启动新增的连接服务模块,该连接服务模块可以支持一定的用户接入量,每个连接服务模块只需要向其所接入的用户发送消息,避免了单台消息服务器由于用户数量增加而超载的情况,从而可以实现在同一信道上用户接入量的无限度横向扩展,具有高可用性;同时,连接服务模块群组将接收到的客户端消息通过通信模块提供的发布/订阅服务发布到消息处理模块进行处理,并在消息处理模块对处理后的消息进行消息分发时,通过通信模块提供的发布/订阅服务由目标连接服务模块订阅该消息进行分发,通过连接服务模块与消息处理模块分离的方式,将消息分发和消息处理分别在不同的模块完成,可以最大限度的增加消息分发能力,并且当新增业务时只需在消息处理模块完成,对保持连接的客户端用户透明,从而实现客户端连接和逻辑处理完全分离,具有高灵活性。需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每一个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同或者相似的部分互相参见即可。对于系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。值得注意的是,上述系统实施例中,所包括的各个模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。本领域普通技术人员可以理解,实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1