一种消息分发方法和系统与流程

文档序号:15049748发布日期:2018-07-27 23:59阅读:1452来源:国知局

本发明涉及网络领域,尤其涉及一种消息分发方法和系统。



背景技术:

在由服务器进行消息的分发时,通常采用单一的发布节点进行消息分发,分发效率较低。特别是当网络连接状态异常时,调度服务器可能持续地尝试分发消息,耗费大量的时间,但是由于网络连接的原因可能最终也无法把消息分发下去。

现有技术存在如下缺点:

(1)单点模式分发效率低,可靠性差;

(2)当节点与中心配管服务器之间的网络出现异常,就可能接收不到消息。

因此,需要一种能够快速、高效地分发消息的方法和系统。



技术实现要素:

为了解决现有技术中存在的问题,提供了一种消息分发方法和系统,该方法和系统能够快速、高效地分发消息。

根据本发明的一个方面,提供了一种消息分发方法,所述方法包括:

中央调度服务器接收消息分发信息;

所述中央调度服务器根据所述消息分发信息,向所述消息分发信息中包括的节点服务器发送消息;

检测所述中央调度服务器与每个节点服务器之间的网络连接状态,如果所述中央调度服务器与一节点服务器之间的网络连接异常,则选择网络连接正常的一个或多个其他节点服务器,并向该一个或多个其他节点服务器发送向该网络连接异常的节点服务器转发消息的指示。

其中,所述中央调度服务器选择网络连接正常的一个或多个其他节点服务器时,选择与该节点服务器具有相同待接收的消息的一个或多个其他节点服务器。

其中,所述中央调度服务器选择网络连接正常的一个或多个其他节点服务器时,根据下述原则中的一个或多个进行选择:待选择的节点服务器与向其转发消息的节点服务器属于同机房,或者属于同地域,或者属于同节点,或者属于同运营商。

其中,所述中央调度服务器检测所述中央调度服务器与每个节点服务器之间的网络连接状态包括:

所述中央调度服务器周期地查询是否收到每个节点服务器发送的探测包,其中所述中央调度服务器的查询周期大于所述节点服务器的发送周期;

若对于一节点服务器的查询结果是没有收到探测包,则在下述条件满足一个或两个的情况下判断是否收到该节点服务器发送的消息接收状态:所述中央调度服务器发送消息后经过设定的时间段、从所有其他节点服务器接收到消息接收状态,若判断结果是没有收到该节点服务器发送的消息接收状态,则判断所述中央调度服务器与该节点服务器之间的网络连接异常。

其中,所述中央调度服务器和所述节点服务器是cdn网络上的节点。

根据本发明的另一方面,还提供了一种消息分发方法,所述方法包括:

节点服务器接收中央调度服务器分发的消息;

其中,当所述中央调度服务器与该节点服务器之间的网络连接异常时,所述节点服务器通过与所述中央调度服务器之间的网络连接正常的一个或多个其他节点服务器接收所述中央调度服务器分发的消息。

其中,所述方法还包括:

所述节点服务器从所述中央调度服务器接收向与所述中央调度服务器网络连接异常的节点服务器转发消息的指示,并根据所述指示,向与所述中央调度服务器网络连接异常的节点服务器转发所述消息。

其中,所述方法还包括:

在所述节点服务器接收中央调度服务器分发的消息之前执行:周期地向所述中央调度服务器发送探测包,发送周期小于所述中央调度服务器查询是否收到所述探测包的查询周期;

在所述节点服务器接收中央调度服务器分发的消息之后执行:向所述中央调度服务器发送消息接收状态。

其中,所述节点服务器采用多种传输协议向所述中央调度服务器发送探测包。

其中,所述中央调度服务器和所述节点服务器是cdn网络上的节点。

根据本发明的另一方面,还提供了一种消息分发系统,所述消息分发系统在中央调度服务器上实现,所述系统包括:

接收模块,接收消息分发信息;

第一发送模块,用于根据所述消息分发信息,向所述消息分发信息中包括的节点服务器发送消息;

检测模块,用于在所述第一发送模块向节点服务器发送消息后,检测所述中央调度服务器与每个节点服务器之间的网络连接状态;

服务器选择模块,用于当所述检测模块检测到所述中央调度服务器与一节点服务器之间的网络连接异常,选择网络连接正常的一个或多个其他节点服务器;

第二发送模块,用于向该一个或多个其他节点服务器发送向该网络连接异常的节点服务器转发消息的指示。

其中,所述服务器选择模块还用于:选择网络连接正常的一个或多个其他节点服务器时,选择与该节点服务器具有相同待接收的消息的一个或多个其他节点服务器。

其中,所述服务器选择模块还用于,根据下述原则中的一个或多个进行选择:待选择的节点服务器与向其转发消息的节点服务器属于同机房,或者属于同地域,或者属于同节点,或者属于同运营商。

其中,所述检测模块还用于:

周期地查询是否收到每个节点服务器发送的探测包,其中查询周期大于所述节点服务器的发送周期;

若对于一节点服务器的查询结果是没有收到探测包,则在下述条件满足一个或两个的情况下判断是否收到该节点服务器发送的消息接收状态:所述第一发送模块发送消息后经过设定的时间段、从所有其他节点服务器接收到消息接收状态,若判断结果是没有收到该节点服务器发送的消息接收状态,则判断所述中央调度服务器与该节点服务器之间的网络连接异常。

其中,所述中央调度服务器和所述节点服务器是cdn网络上的节点。

根据本发明的另一方面,还提供了一种消息分发系统,所述消息分发系统在节点服务器上实现,所述系统包括:

第一接收模块,用于接收中央调度服务器分发的消息,

第二接收模块,用于当所述中央调度服务器与该节点服务器之间的网络连接异常时,通过与所述中央调度服务器之间的网络连接正常的一个或多个其他节点服务器接收所述中央调度服务器分发的消息。

其中,所述第一接收模块还用于从所述中央调度服务器接收向与所述中央调度服务器网络连接异常的节点服务器转发消息的指示;

所述系统还包括:

第一发送模块,用于根据所述指示,向与所述中央调度服务器网络连接异常的节点服务器转发所述消息。

其中,所述系统还包括:

第二发送模块,用于在所述第一接收模块接收中央调度服务器分发的消息之前,周期地向所述中央调度服务器发送探测包,发送周期小于所述中央调度服务器查询是否收到所述探测包的查询周期;并且在在所述第一接收模块接收中央调度服务器分发的消息之后,向所述中央调度服务器发送消息接收状态。

其中,所述第二发送模块还用于采用多种传输协议向所述中央调度服务器发送探测包。

其中,所述中央调度服务器和所述节点服务器是cdn网络上的节点。

本发明中的消息分发方法和系统中,在向节点服务器分发消息时,当中央调度服务器与节点服务器之间的网络连接状态异常时,通过网络状态正常的节点服务器转发消息,并且通过中央调度服务器与节点服务器之间双向发送消息进行网络连接状态检测。具有以下有益效果:

(1)系统的网络传输与响应能力有大幅度提升,提高了消息的分发速度;

(2)避免中央调度服务器与节点服务器之间网络连接状态异常时的丢包现象。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明的由中央调度服务器执行的消息分发方法的流程图;

图2是根据本发明的由节点服务器执行的消息分发方法的流程图;

图3是根据本发明的消息分发方法的具体实施例的示意图;

图4是根据本发明的在中央调度服务器上实现的消息分发系统的示意图;

图5是根据本发明的在节点服务器上实现的消息分发系统的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

本发明提供了一种消息分发方法,该方法由中央调度服务器执行。如图1所示,该方法包括:

步骤101,中央调度服务器接收消息分发信息;

步骤102,中央调度服务器根据消息分发信息,向消息分发信息中包括的节点服务器发送消息;

步骤103,检测中央调度服务器与每个节点服务器之间的网络连接状态,如果中央调度服务器与一节点服务器之间的网络连接异常,则选择网络连接正常的一个或多个其他节点服务器,并向该一个或多个其他节点服务器发送向该网络连接异常的节点服务器转发消息的指示。

步骤103中,中央调度服务器选择网络连接正常的一个或多个其他节点服务器时,选择与该节点服务器具有相同待接收的消息的一个或多个其他节点服务器。当中央调度服务器选择与该节点服务器具有相同待接收的消息的一个或多个其他节点服务器时,在发送的转发消息的指示中,则不需要包含需要转发的具体消息。但是如果中央调度服务器选择的节点服务器与该网络连接异常的节点服务器没有相同待接收的消息,则发送的转发消息的指示中,需要包含待转发的具体消息。

并且中央调度服务器选择网络连接正常的一个或多个其他节点服务器时,根据下述原则中的一个或多个进行选择:待选择的节点服务器与向其转发消息的节点服务器属于同机房,或者属于同地域,或者属于同节点,或者属于同运营商。

此处中央调度服务器检测中央调度服务器与每个节点服务器之间的网络连接状态包括:中央调度服务器周期地查询是否收到每个节点服务器发送的探测包,其中中央调度服务器的查询周期大于节点服务器的发送周期;若对于一节点服务器的查询结果是没有收到探测包,则在下述条件满足一个或两个的情况下判断是否收到该节点服务器发送的消息接收状态:中央调度服务器发送消息后经过设定的时间段、从所有其他节点服务器接收到消息接收状态,若判断结果是没有收到该节点服务器发送的消息接收状态,则判断中央调度服务器与该节点服务器之间的网络连接异常。

中央调度服务器的查询周期大于节点服务器发送探测包的发送周期,而不是等于发送周期,是为了下述防止网络连接状态误判情况:中央调度服务器与节点服务器之间的网络连接正常,但是由于网络原因出现了丢包情况而使得中央调度服务器没有接收到节点服务器发送的探测包。为了防止这种情况,查询周期通常等于几倍的发送周期。例如发送周期为10分钟,查询周期为30分钟。

需要说明的是,上述方法可以在cdn网络中实现,即中央调度服务器和节点服务器为cdn网络中的节点。

本发明还提供了一种消息分发方法,该方法由节点服务器执行。如图2所示,该方法包括:

步骤201,节点服务器接收中央调度服务器分发的消息;当中央调度服务器与该节点服务器之间的网络连接异常时,节点服务器通过与中央调度服务器之间的网络连接正常的一个或多个其他节点服务器接收中央调度服务器分发的消息。

上述方法还包括:节点服务器从中央调度服务器接收向与中央调度服务器网络连接异常的节点服务器转发消息的指示,并根据所述指示,向与中央调度服务器网络连接异常的节点服务器转发所述消息。该操作是当一节点服务器与中央调度服务器之间的网络连接异常时,中央调度服务器选择上述节点服务器向该网络连接异常的节点服务器转发消息。上述节点服务器可以与网络连接异常的节点服务器具有相同待接收的消息,也可以具有不同待接收的消息。当待接收的消息相同时,则不需要从中央调度服务器接收待转发的具体消息;当待接收的消息不同时,则需要从中央调度服务器接收待转发的具体消息。

当节点服务器向其他节点服务器转发消息时,根据路由策略选择最佳路由向该其他节点服务器转发消息。

另外,该方法还包括:在节点服务器接收中央调度服务器分发的消息之前执行:周期地向中央调度服务器发送探测包,发送周期小于所述中央调度服务器查询是否收到所述探测包的查询周期;在节点服务器接收中央调度服务器分发的消息之后执行:向中央调度服务器发送消息接收状态。这里发送探测包是便于中央调度服务器先初步查询与该节点服务器之间的连接状态;发送消息接收状态是便于中央调度服务器再次确定与该节点服务器之间的连接状态。这种先发送探测包再发送消息接收状态,并由中央调度服务器浪潮确认连接状态的机制保证了准确判断中央调度服务器与节点服务器之间的连接状态。这样,当中央调度服务器与节点服务器之间的网络连接异常时,可以由中央调度服务器快速做出响应,即由与中央调度服务器网络连接正常的其他节点服务器向该网络连接异常的节点服务器转发消息,保证了消息能够快速、高效地分发到各阶段服务器。

节点服务器在向中央调度服务器发送探测包时,可以采用多协议传输的方式,以及多通道传输的方式,以使中央调度服务器探测准确率更高。例如,发送探测包时可以采用udp协议加私有协议的方式,以防止用单一协议传输方式时,中央调度服务器接收不到探测包。其中,私有协议是指节点服务器和中央调度服务器之间约定的协议。

需要说明的是,上述方法可以在cdn网络中实现,即中央调度服务器和节点服务器为cdn网络中的节点。

下面结合附图,详细描述根据本发明的消息分发方法的实施例。该消息分发方法由图3所示的系统执行。该系统中包括至少一台中央调度服务器,以及例如1000台安装有消息分发客户端的节点服务器。并且,上述中央调度服务器和节点服务器为cdn网络中的节点。

各服务器的说明如下:

中央调度服务器用于:(1)接收消息分发任务及分发消息;(2)收集各节点服务器上报的消息接收状态;

节点服务器用于:(1)周期地向中央调度服务器发送探测包;(2)向中央调度服务器上报消息接收状态;(3)向其他节点服务器转发消息。

具体过程如下:

步骤s1:将消息的名称、大小、节点服务器列表封装成消息分发信息发送给中央调度服务器;

步骤s2:中央调度服务器对该消息分发信息进行解析,将消息发送到各节点服务器;

在该步骤中,中央调度服务器在向节点服务器发送消息后,检测其与节点服务器之间的连接状态。例如,中央调度服务器检测到其与处于小运营商网络中的节点服务器n1之间的网络连接异常,则随机选择与其之间网络连接正常的节点服务器,例如节点服务器n100、n200、n300,指示选取的这些节点服务器向节点服务器n1转发消息。需要说明的是,中央调度服务器在选择进行转发消息的节点服务器时,可以选择与节点服务器n1具有不同待接收消息的节点服务器,也可以选择具有相同待接收消息的节点服务器。另外,中央调度服务器根据下面的优先策略来选择进行消息转发的节点服务器:优选属于同机房、同地域、同节点、同运营商的节点服务器;然后选择属于跨运营商、更高级别运营商的节点服务器。当然,中央调度服务器也可以随机选择进行消息转发的节点服务器。也就是说,在选择向节点服务器n1转发消息的节点服务器时,根据上述策略来进行选择。

此外,中央调度服务器检测其与节点服务器之间的连接状态可采用下述具体方案:节点服务器按一定周期,如10分钟一次,向中央调度服务器发探测包。发送探测包时可以采用udp协议加私有协议的方式,这是因为在有些服务器禁udp或tcp的情况下,采用这种多通道双协议传输的方式,其探测准确率更高。中央调度服务器按一定周期,如每隔半小时,查询是否收到节点服务器发送的探测包。这里,中央调度服务器的查询周期大于节点服务器发送探测包的发送周期。当中央调度服务器在节点服务器发送多次探测包,例如3次后,仍没有收到节点服务器n1发送的探测包,则判断节点服务器n1为假死(例如,将其状态码置为-1)。中央调度服务器在向各节点服务器发送消息后,从所有其他节点服务器收到了任何响应包(如消息接收状态),但是仍没有从节点服务器n1收到任何响应包(如消息接收状态),并且中央调度服务器扫描到节点服务器n1状态码是-1,判断为真死,即与节点服务器n1之间的网络连接异常。上述情况中,中央调度服务器没有等到发送消息后达到设定时间段,即判断与节点服务器n1之间的网络连接异常,当然也可以等待达到设定时间段,仍没有从节点服务器n1收到消息接收状态,再判断与其的网络连接异常。上述判断中央调度服务器与节点服务器之间的网络连接状态的方式,采用双向判断的方式,提高了判断的准确性。

本发明还提供了一种消息分发系统,该系统在中央调度服务器上实现,如图4所示,该系统包括:

接收模块401,接收消息分发信息;

第一发送模块402,用于根据消息分发信息,向消息分发信息中包括的节点服务器发送消息;

检测模块403,用于在第一发送模块向节点服务器发送消息后,检测中央调度服务器与每个节点服务器之间的网络连接状态;

服务器选择模块404,用于当检测模块403检测到中央调度服务器与一节点服务器之间的网络连接异常,选择网络连接正常的一个或多个其他节点服务器;

第二发送模块405,用于向该一个或多个其他节点服务器发送向该网络连接异常的节点服务器转发消息的指示。

服务器选择模块404还用于:选择网络连接正常的一个或多个其他节点服务器时,选择与该节点服务器具有相同待接收的消息的一个或多个其他节点服务器。

服务器选择模块404还用于,根据下述原则中的一个或多个进行选择:待选择的节点服务器与向其转发消息的节点服务器属于同机房,或者属于同地域,或者属于同节点,或者属于同运营商。

检测模块403还用于:

周期地查询是否收到每个节点服务器发送的探测包,其中查询周期大于节点服务器的发送周期;

若对于一节点服务器的查询结果是没有收到探测包,则在下述条件满足一个或两个的情况下判断是否收到该节点服务器发送的消息接收状态:第一发送模块402发送消息后经过设定的时间段、从所有其他节点服务器接收到消息接收状态,若判断结果是没有收到该节点服务器发送的消息接收状态,则判断中央调度服务器与该节点服务器之间的网络连接异常。

中央调度服务器和节点服务器是cdn网络上的节点。

本发明还提供了一种消息分发系统,该系统在节点服务器上实现,如图5所示,该系统包括:

第一接收模块501,用于接收中央调度服务器分发的消息,

第二接收模块502,用于当中央调度服务器与该节点服务器之间的网络连接异常时,通过与中央调度服务器之间的网络连接正常的一个或多个其他节点服务器接收中央调度服务器分发的消息。

第一接收模块501还用于从中央调度服务器接收向与中央调度服务器网络连接异常的节点服务器转发消息的指示;

所述系统还包括:

第一发送模块,用于根据所述指示,向与中央调度服务器网络连接异常的节点服务器转发所述消息。

所述系统还包括:

第二发送模块,用于在第一接收模块接收中央调度服务器分发的消息之前,周期地向中央调度服务器发送探测包,发送周期小于所述中央调度服务器查询是否收到所述探测包的查询周期;并且在在第一接收模块接收中央调度服务器分发的消息之后,向中央调度服务器发送消息接收状态。

所述第二发送模块还用于采用多种传输协议向所述中央调度服务器发送探测包。

中央调度服务器和节点服务器是cdn网络上的节点。

本发明中的消息分发方法和系统中,在向节点服务器分发消息时,当中央调度服务器与节点服务器之间的网络连接状态异常时,通过网络状态正常的节点服务器转发消息,并且通过中央调度服务器与节点服务器之间双向发送消息进行网络连接状态检测。具有以下有益效果:

(1)系统的网络传输与响应能力有大幅度提升,提高了消息的分发速度;

(2)避免中央调度服务器与节点服务器之间网络连接状态异常时的丢包现象。

上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。

以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1