CN105656853A - 一种消息传递方法及相关装置 - Google Patents
一种消息传递方法及相关装置 Download PDFInfo
- Publication number
- CN105656853A CN105656853A CN201410643261.5A CN201410643261A CN105656853A CN 105656853 A CN105656853 A CN 105656853A CN 201410643261 A CN201410643261 A CN 201410643261A CN 105656853 A CN105656853 A CN 105656853A
- Authority
- CN
- China
- Prior art keywords
- server
- read
- write
- client
- message
- 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.)
- Granted
Links
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例公开了一种消息传递方法及相关装置,其中,所述方法包括:第一服务器接收客户端发送的读写请求,并为所述读写请求分配用于标识所述读写请求的实例号;所述第一服务器向所在广域网中的第二服务器发送携带所述实例号的准备请求;所述第一服务器接收所述第二服务器返回的响应消息,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量;所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量,确定是否批准所述读写请求;若批准,所述第一服务器根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令。采用本发明,可在广域网中的各服务器之间有效地进行消息传递。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种消息传递方法及相关装置。
背景技术
分布式系统可以通过冗余,在系统内部各服务器执行同样的任务或者存储相同的数据。该分布式系统通过系统各服务器间协同工作,使得即使在该系统中的部分服务器无法正常工作时,整个系统依旧可以完成任务,有更好的面对意外情况如断电、自然灾害等的能力。在分布式系统中,为了保证系统中服务器状态的一致性,需要使用一致性算法如Paxos算法来进行消息传递。
然而,在通过Paxos算法进行消息传递时,接收到客户端请求的服务器需要与所在广域网中的其他所有服务器进行通信,导致大量的消息在广域网中传输,在系统规模庞大时严重制约了系统的吞吐量,且使得该接收到请求的服务器负载较重。同时,在广域网的环境中,由于网络状况十分复杂,地理位置相距较远的数据中心执行Paxos算法时,丢包或网络拥塞等情况不可避免。当运行Paxos算法的服务器数量增加时,消息数量也随之增长,可能由此引发更严重的网络问题。
发明内容
本发明实施例所要解决的技术问题在于,提供一种消息传递方法及相关装置,可在广域网中的各服务器之间有效地进行消息传递。
第一方面,本发明实施例提供了一种消息传递方法,包括:
第一服务器接收客户端发送的读写请求,并为所述读写请求分配用于标识所述读写请求的实例号;
所述第一服务器向所在广域网中的第二服务器发送携带所述实例号的准备请求;
所述第一服务器接收所述第二服务器返回的响应消息,所述响应消息为所述第二服务器根据所述第二服务器所在数据中心的服务器响应所述准备请求返回的确认回复消息而生成的,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量;
所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量,确定是否批准所述读写请求;
若批准,所述第一服务器根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令。
结合第一方面,在第一种可能的实现方式中,所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量,确定是否批准所述读写请求,包括:
所述第一服务器根据所述响应消息,检测所述广域网中允许所述客户端进行读写操作的服务器的数量是否超过所述广域网中服务器数量的二分之一;
若超过所述广域网中服务器数量的二分之一,所述第一服务器确定批准所述读写请求。
结合第一方面,在第二种可能的实现方式中,所述第一服务器根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令,包括:
所述第一服务器向所述第二服务器发送携带所述读写请求对应的实例内容及所述实例号的读写指令,以使所述第二服务器收集所述数据中心中允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息;
所述第一服务器接收所述第二服务器响应所述读写指令返回的所述操作确认消息。
结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,在第三种可能的实现方式中,在所述第一服务器根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令之后,所述方法还包括:
当接收到所述广域网中允许所述客户端进行读写操作的服务器响应所述读写指令返回的操作确认消息时,所述第一服务器将所述读写请求的操作成功消息通知给所述广域网中的服务器,所述操作确认消息为所述允许所述客户端进行读写操作的服务器根据所述读写请求对应的实例内容进行读写操作返回的;
所述第一服务器将针对所述读写请求的请求成功消息通知给所述客户端。
第二方面,本发明实施例还提供了另一种消息传递方法,包括:
第二服务器接收第一服务器发送的携带实例号的准备请求,并向所述第二服务器所在数据中心的服务器发送所述准备请求,所述实例号为所述第一服务器在接收到客户端发送的读写请求时为所述读写请求分配的;
所述第二服务器收集所述数据中心的服务器响应所述准备请求返回的确认回复消息,并根据收集的所述确认回复消息生成响应消息,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量;
所述第二服务器向所述第一服务器发送所述响应消息,以使所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量确定是否批准所述读写请求。
结合第二方面,在第一种可能的实现方式中,所述第二服务器向所述第一服务器发送所述响应消息,包括:
所述第二服务器检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否超过所述数据中心服务器的总数的二分之一;
若超过所述数据中心服务器的总数的二分之一,所述第二服务器向所述第一服务器发送所述响应消息。
结合第二方面,在第二种可能的实现方式中,所述第二服务器向所述第一服务器发送所述响应消息,包括:
所述第二服务器检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否达到所述数据中心服务器的总数;
若达到所述数据中心服务器的总数,所述第二服务器向所述第一服务器发送所述响应消息。
结合第二方面,在第三种可能的实现方式中,所述第二服务器向所述第一服务器发送所述响应消息,包括:
所述第二服务器检测当前时间是否超过预设的响应时间;
若超过所述预设的响应时间,所述第二服务器向所述第一服务器发送所述响应消息。
结合第二方面,或者第二方面的第一种可能的实现方式,或者第二方面的第二种可能的实现方式,或者第二方面的第三种可能的实现方式,在第四种可能的实现方式中,在所述第二服务器向所述第一服务器发送所述响应消息之后,所述方法还包括:
所述第二服务器接收所述第一服务器确定批准所述读写请求发送的读写指令,并向所述数据中心中允许所述客户端进行读写操作的服务器发送所述读写指令,所述读写指令包括所述实例号以及所述读写请求对应的实例内容,以使所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作;
所述第二服务器接收所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息,并将所述操作确认消息返回至所述第一服务器。
第三方面,本发明实施例提供了一种消息传递装置,所述装置设置于第一服务器中,包括:
第一接收模块,用于接收客户端发送的读写请求,并为所述读写请求分配用于标识所述读写请求的实例号;
第一发送模块,用于向所在广域网中的第二服务器发送携带所述实例号的准备请求;
第二接收模块,用于接收所述第二服务器返回的响应消息,所述响应消息为所述第二服务器根据所述第二服务器所在数据中心的服务器响应所述准备请求返回的确认回复消息而生成的,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量;
确定模块,用于根据所述响应消息中允许所述客户端进行读写操作的服务器的数量,确定是否批准所述读写请求;
第二发送模块,用于在所述确定模块确定批准所述读写请求时,根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令。
结合第三方面,在第一种可能的实现方式中,所述确定模块包括:
检测单元,用于根据所述响应消息,检测所述广域网中允许所述客户端进行读写操作的服务器的数量是否超过所述广域网中服务器数量的二分之一;
请求确定单元,用于当所述检测单元检测到所述广域网中允许所述客户端进行读写操作的服务器的数量超过所述广域网中服务器数量的二分之一时,确定批准所述读写请求。
结合第三方面,在第二种可能的实现方式中,所述第二发送模块包括:
指令发送单元,用于向所述第二服务器发送携带所述读写请求对应的实例内容及所述实例号的读写指令,以使所述第二服务器收集所述数据中心中允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息;
消息接收单元,用于接收所述第二服务器响应所述读写指令返回的所述操作确认消息。
结合第三方面,或者第三方面的第一种可能的实现方式,或者第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述装置还包括:
第一通知模块,用于当接收到所述广域网中允许所述客户端进行读写操作的服务器响应所述读写指令返回的操作确认消息时,将所述读写请求的操作成功消息通知给所述广域网中的服务器,所述操作确认消息为所述允许所述客户端进行读写操作的服务器根据所述读写请求对应的实例内容进行读写操作返回的;
第二通知模块,用于将针对所述读写请求的请求成功消息通知给所述客户端。
第四方面,本发明实施例还提供了另一种消息传递装置,所述装置设置于第二服务器中,包括:
请求处理模块,用于接收第一服务器发送的携带实例号的准备请求,并向所述第二服务器所在数据中心的服务器发送所述准备请求,所述实例号为所述第一服务器在接收到客户端发送的读写请求时为所述读写请求分配的;
生成模块,用于收集所述数据中心的服务器响应所述准备请求返回的确认回复消息,并根据收集的所述确认回复消息生成响应消息,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量;
发送模块,用于向所述第一服务器发送所述生成模块生成的响应消息,以使所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量确定是否批准所述读写请求。
结合第四方面,在第一种可能的实现方式中,所述发送模块包括:
第一检测单元,用于检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否超过所述数据中心服务器的总数的二分之一;
第一发送单元,用于在所述第一检测单元的检测结果为超过所述数据中心服务器的总数的二分之一时,向所述第一服务器发送所述响应消息。
结合第四方面,在第二种可能的实现方式中,所述发送模块还包括:
第二检测单元,用于检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否达到所述数据中心服务器的总数;
第二发送单元,用于在所述第二检测单元的检测结果为达到所述数据中心服务器的总数时,向所述第一服务器发送所述响应消息。
结合第四方面,在第三种可能的实现方式中,所述发送模块还包括:
第三检测单元,用于检测当前时间是否超过预设的响应时间;
第三发送单元,用于当所述第三检测单元的检测结果为超过所述预设的响应时间时,向所述第一服务器发送所述响应消息。
结合第四方面,或者第四方面的第一种可能的实现方式,或者第四方面的第二种可能的实现方式,或者第四方面的第三种可能的实现方式,在第四种可能的实现方式中,所述装置还包括:
指令处理模块,用于接收所述第一服务器确定批准所述读写请求发送的读写指令,并向所述数据中心中允许所述客户端进行读写操作的服务器发送所述读写指令,所述读写指令包括所述实例号以及所述读写请求对应的实例内容,以使所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作;
消息处理模块,用于接收所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息,并将所述操作确认消息返回至所述第一服务器。
与现有技术相比,本发明实施例具有以下有益效果:
本发明实施例可在第一服务器接收到客户端请求时,向当前广域网中的第二服务器发送与该客户端请求对应的准备请求,根据该第二服务器响应该准备请求返回的响应消息中包含的允许该客户端进行读写操作的服务器的数量,确定出是否批准该客户端请求,从而实现将在广域网中传递的部分消息转移到局域网中进行传递,减少了广域网中消息传递的数量,并减轻了接收到请求的服务器的负载。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的网络架构图;
图2是本发明实施例提供的一种消息传递方法的流程示意图;
图3是本发明实施例提供的另一种消息传递方法的流程示意图;
图4是本发明实施例提供的又一种消息传递方法的流程示意图;
图5是本发明实施例提供的其中一种应用场景;
图6是本发明实施例提供的一种消息传递装置的结构示意图;
图7是本发明实施例提供的另一种消息传递装置的结构示意图;
图8是本发明实施例提供的又一种消息传递装置的结构示意图;
图9是本发明实施例提供的再一种消息传递装置的结构示意图;
图10是本发明实施例提供的一种服务器的结构示意图;
图11是本发明实施例提供的另一种服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在分布式系统中,为了保证系统中服务器状态的一致性,需要使用一致性算法,本发明实施例即可具体应用于分布式系统的服务器集群中,如图1所示,是本发明实施例提供的网络架构图。在广域网环境下,该集群中的服务器分布在不同地区的数据中心,每个数据中心内部有一定数量的服务器,负责接收处理相连接的客户端发送的请求。各个数据中心通过广域网进行连接,各个数据中心的部分或者全部服务器可以作为一组来共同执行命令的选举,即确定是否批准该客户端发送的请求。
请参见图2,是本发明实施例提供的一种消息传递方法的流程示意图,本发明实施例的所述方法可具体应用于第一服务器中,具体的,本发明实施例的所述方法包括:
S101:第一服务器接收客户端发送的读写请求,并为所述读写请求分配用于标识所述读写请求的实例号。
需要说明的是,该第一服务器可以为第一服务器所在广域网中的任意一台接收到客户端请求的服务器,该服务器在接收到客户端请求时,即可作为该广域网中的“领导者”,并发起对该客户端请求的选举过程,从而确定是否批准该客户端请求。
具体实施例中,该第一服务器在接收到客户端请求时,即可为该客户端请求分配一个实例号,该实例号在该第一服务器所在的广域网中唯一确定,用于标识该接收到的客户请求。具体的,该客户端请求可具体为客户端发送读请求或写请求,本发明实施例不做限定。
S102:所述第一服务器向所在广域网中的第二服务器发送携带所述实例号的准备请求。
S103:所述第一服务器接收所述第二服务器返回的响应消息,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量。
需要说明的是,该第二服务器可从广域网的每个数据中心内部挑选得出,每个数据中心的第二服务器可以为一个或多个,本发明实施例不做限定。具体的,可选取网卡好,可以和数据中心内部所有服务器连通并且可以连接广域网中其它所有数据中心的服务器作为该第二服务器。
具体实施例中,该第一服务器在为客户端发送的读写请求分配实例号之后,即可向该第一服务器所在的本地数据中心的各服务器发送该携带配置的实例号的准备请求,并向该第一服务器所在广域网中设置的第二服务器发送该准备请求,以使该第二服务器向该第二服务器所在数据中心的服务器转发该准备请求,并收集该第二服务器所在数据中的服务器响应所述准备请求返回的确认回复消息,以对客户端请求进行选举。
可选的,该准备请求还可包括该第一服务器的标识、该客户端请求对应的实例内容等信息。
该第一服务器发送准备请求之后,可接收该第二服务器响应该准备请求返回的响应消息。其中,所述响应消息为所述第二服务器根据所述第二服务器所在数据中心的服务器响应所述准备请求返回的确认回复消息而生成的,该响应消息包括该第二服务器所在数据中心中允许所述客户端进行读写操作的服务器(即返回确认回复消息的服务器)的数量,即“选举”通过的服务器数量。
S104:所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量,确定是否批准所述读写请求。
第一服务器在接收到第二服务器响应该准备请求返回的响应消息时,即可根据该响应消息中包含的允许所述客户端进行读写操作的服务器的数量,确定出是否批准该客户端发送的读写请求,即确定该“选举”是否通过。
具体的,该第一服务器可在统计得到允许所述客户端进行读写操作的服务器的数量超过所在广域网中服务器数量的二分之一,即响应该准备请求的服务器达到多数时,则可表明“选举”通过,并确定批准该读写请求。
S105:若批准,所述第一服务器根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令。
具体实施例中,该第一服务器在确认批准客户端发送的读写请求之后,即可向所述允许所述客户端进行读写操作的服务器发送读写指令,以使该广域网中允许所述客户端进行读写操作的服务器根据该读写请求对应的实例内容进行读写操作,完成“选举”,并将“选举”结果通知给该广域网中的各服务器以及回复客户端请求成功消息。具体的,该第一服务器发送读写指令的过程可与上述的第一服务器发送准备请求的过程类似,即第一服务器将该读写指令发送给第二服务器,由第二服务器转发至各数据中心的其他服务器,在此不再赘述。
实施本发明实施例可在第一服务器接收到客户端请求时,向当前广域网中的第二服务器发送与该客户端请求对应的准备请求,根据该第二服务器响应该准备请求返回的响应消息中包含的允许该客户端进行读写操作的服务器的数量,确定是否批准该客户端请求,从而实现将在广域网中传递的部分消息转移到局域网中进行传递,减少了广域网中消息传递的数量,并减轻了接收到请求的服务器的负载。
请参见图3,是本发明实施例提供的另一种消息传递方法的流程示意图,具体的,本发明实施例的所述方法包括:
S201:第一服务器接收客户端发送的读写请求,并为所述读写请求分配用于标识所述读写请求的实例号。
具体实施例中,该第一服务器在接收到客户端请求时,即可为该客户端请求分配一个实例号,该实例号在该第一服务器所在的广域网中唯一确定。具体的,该客户端请求可具体为客户端发送读请求或写请求,本发明实施例不做限定。
S202:所述第一服务器向所在广域网中的第二服务器发送携带所述实例号的准备请求。
S203:所述第一服务器接收所述第二服务器返回的响应消息,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量。
具体实施例中,该第一服务器在为客户端发送的读写请求分配实例号之后,即可向该第一服务器所在的本地数据中心的各服务器发送该携带配置的实例号的准备请求,并向该第一服务器所在广域网中设置的第二服务器发送准备请求,以使该第二服务器向该第二服务器所在数据中心的服务器转发该准备请求,并收集该第二服务器所在数据中的服务器响应所述准备请求返回的确认回复消息,以对客户端请求进行选举,该返回确认回复消息的服务器即为允许所述客户端进行读写操作的服务器。可选的,该准备请求还可包括该第一服务器的标识、该客户端请求对应的实例内容等等。
第一服务器接收该第二服务器响应该准备请求返回的响应消息,其中,所述响应消息为所述第二服务器根据所述第二服务器所在数据中心的服务器响应所述准备请求返回的确认回复消息而生成的,该响应消息包括该第二服务器所在数据中心中允许所述客户端进行读写操作的服务器的数量,即返回确认回复消息、“选举”通过的服务器数量。具体的,第一服务器通过第二服务器将该准备请求转发给广域网中的各服务器之后,该广域网中的各服务器根据该准备消息及自身可能接收到的其他请求消息来选择是否接受该请求并回复给第二服务器,该返回的确认回复消息即可表明服务器接受了该请求,第二服务器根据接收到的确认回复消息生成包含允许所述客户端进行读写操作的服务器的数量和/标识的响应消息并回复给第一服务器,该第一服务器接收第二服务器返回的响应消息。该第一服务器还接收本地数据中心的服务器返回的确认回复消息。
S204:所述第一服务器根据所述响应消息,检测所述广域网中允许所述客户端进行读写操作的服务器的数量是否超过所述广域网中服务器数量的二分之一,若超过,所述第一服务器确定批准所述读写请求。
第一服务器在接收到第二服务器响应该准备请求返回的响应消息和本地数据中心的服务器返回的确认回复消息时,即可根据该响应消息中包含的允许所述客户端进行读写操作的服务器的数量以及该本地数据中心返回确认回复消息的服务器数量,确定出是否批准该客户端发送的读写请求,即确定该“选举”是否通过。
具体实施例中,该第一服务器可在统计得到允许所述客户端进行读写操作的服务器的数量(包括接收到第二服务器返回的响应消息中包含的允许所述客户端进行读写操作的服务器的数量以及该本地数据中心返回确认回复消息的服务器数量)超过所在广域网中服务器数量的二分之一,即响应该准备请求并返回确认回复消息的服务器达到多数时,则可表明“选举”通过,并确定批准该读写请求。
S205:所述第一服务器向所述第二服务器发送携带所述读写请求对应的实例内容及所述实例号的读写指令,以使所述第二服务器收集所述数据中心中允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息。
具体实施例中,该第一服务器在确认批准客户端发送的读写请求之后,即可向该允许所述客户端进行读写操作的服务器发送读写指令,以使该广域网中允许所述客户端进行读写操作的服务器根据该读写请求对应的实例内容进行读写操作,并收集该允许所述客户端进行读写操作的服务器进行读写操作后返回的操作确认消息。具体的,该第一服务器可向该广域网中的第二服务器发送该读写指令,以使该第二服务器将该读写指令转发给该第二服务器所在数据中心中允许所述客户端进行读写操作的服务器即返回了确认回复消息的服务器,从而使得该允许所述客户端进行读写操作的服务器根据该实例内容进行读写操作。
S206:所述第一服务器接收所述第二服务器响应所述读写指令返回的所述操作确认消息。
S207:当接收到所述广域网中允许所述客户端进行读写操作的服务器响应所述读写指令返回的操作确认消息时,所述第一服务器将所述读写请求的操作成功消息通知给所述广域网中的服务器。
S208:所述第一服务器将针对所述读写请求的请求成功消息通知给所述客户端。
当该第一服务器接收到所在广域网中允许所述客户端进行读写操作的服务器响应所述读写指令返回的操作确认消息时,即可表明该允许所述客户端进行读写操作的服务器根据该读写请求对应的实例内容完成了读写操作。具体的,该第一服务器可在检测到返回操作确认消息的服务器的数量超过当前广域网中服务器数量的二分之一时,确认对该读写请求对应的“选举”结束。
进一步的,该第一服务器还可在接收到该操作确认消息即确认对该读写请求对应的“选举”结束时,通知该广域网中的所有服务器该读写请求操作成功,并向所述客户端发送针对所述读写请求的请求成功消息,以通知客户端该读写请求已成功被接收。具体的,该第一服务器可在确认返回操作确认消息的服务器的数量超过当前广域网中服务器数量的一半时,通知该广域网中的各服务器以及客户端该“选举”通过消息。
实施本发明实施例第一服务器可在接收到客户端请求时,向当前广域网中的第二服务器发送与该客户端请求对应的准备请求,根据该第二服务器响应该准备请求返回的响应消息中包含的允许该客户端进行读写操作的服务器的数量以及本地数据中心允许该客户端进行读写操作的服务器的数量,确定是否批准该客户端请求。通过在各个数据中心中部署该第二服务器,实现了将在广域网中传递的部分消息转移到局域网中进行传递,使得广域网中消息的数量大大地减少,并且接收到请求的服务器即第一服务器的负载也被分散到多台服务器,减轻了该第一服务器的负载,提高了系统的稳定性和吞吐率。
请参见图4,是本发明实施例提供的又一种消息传递方法的流程示意图,本发明实施例的所述方法具体应用于第二服务器中,具体的,本发明实施例的所述方法包括:
S301:第二服务器接收第一服务器发送的携带实例号的准备请求,并向所述第二服务器所在数据中心的服务器发送所述准备请求。
需要说明的是,该第二服务器可从广域网的每个数据中心内部挑选得出,每个数据中心的第二服务器可以为一个或多个,本发明实施例不做限定。具体的,可选取网卡好,可以和数据中心内部所有服务器连通并且可以连接广域网中其它所有数据中心的服务器作为该第二服务器。
其中,所述实例号为所述第一服务器在接收到客户端请求如客户端发送的读写请求时为所述读写请求分配的。该实例号在该第一服务器所在的广域网中唯一确定,用于标识该接收到的客户请求。可选的,该准备请求还可包括该第一服务器的标识、该客户端请求对应的实例内容等等。
S302:所述第二服务器收集所述数据中心的服务器响应所述准备请求返回的确认回复消息,并根据收集的所述确认回复消息生成响应消息,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量。
S303:所述第二服务器向所述第一服务器发送所述响应消息,以使所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量确定是否批准所述读写请求。
具体实施例中,第二服务器在接收到第一服务器发送的准备请求之后,可将该准备请求转发给该第二服务器所在数据中心的其他服务器,该数据中心的服务器根据该准备消息确定是否接受该请求并回复给第二服务器。若第二服务器接收到该数据中心服务器返回的确认回复消息如ACK(Acknowledgement)消息时,即可表明该返回确认回复消息的服务器为允许所述客户端进行读写操作的服务器,第二服务器收集该数据中的服务器响应所述准备请求返回的确认回复消息,并根据收集的确认回复消息生成包含允许所述客户端进行读写操作的服务器的数量和/或标识的响应消息。进一步的,该第二服务器可根据该准备请求中包含的第一服务器的标识,向所述第一服务器发送该响应消息。
需要说明的是,该第二服务器生成的响应消息是根据收集到的确认回复消息的数量变化进行更新的,即该第二服务器在每收到一条该数据中心的服务器响应准备请求返回的确认回复消息时,则对响应消息进行更新,比如将该返回确认回复消息的服务器的标识加入该响应消息中,并将该响应消息中记录的允许所述客户端进行读写操作的服务器的数量加一。
作为一种可选的实施方式,所述第二服务器向所述第一服务器发送所述响应消息可通过检测所述第二服务器所在数据中心中允许所述客户端进行读写操作的服务器的数量是否超过所述数据中心服务器的总数的二分之一;若超过所述数据中心服务器的总数的二分之一,所述第二服务器向所述第一服务器发送所述响应消息。
作为一种可选的实施方式,所述第二服务器向所述第一服务器发送所述响应消息还可通过检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否达到所述数据中心服务器的总数;若达到所述数据中心服务器的总数,所述第二服务器向所述第一服务器发送所述响应消息。
作为一种可选的实施方式,所述第二服务器向所述第一服务器发送所述响应消息还可通过检测当前时间是否超过预设的响应时间,若超过所述预设的响应时间,所述第二服务器向所述第一服务器发送所述响应消息。
进一步的,该第二服务器在收集数据中心的服务器响应该准备请求返回的确认回复消息,并根据该确认回复消息生成包括所述数据中心中允许所述客户端进行读写操作的服务器的数量的响应消息的过程中,第二服务器可在检测到数据中心中允许所述客户端进行读写操作的服务器的数量超过所述数据中心服务器的总数的二分之一时,向第一服务器发送一次该响应消息;并且,该第二服务器还可在检测到该数据中心中允许所述客户端进行读写操作的服务器的数量达到所述数据中心服务器的总数时,或者在检测到当前时间超过预设的响应时间时,再向第一服务器发送一次响应消息,以便于第一服务器根据第一次接收到的响应消息,检测到当前允许所述客户端进行读写操作的服务器的数量未超过所述广域网服务器数量的二分之一时,还可根据该再次发送的响应消息中包含的允许所述客户端进行读写操作的服务器的数量再次进行检测,从而确定是否批准该读写请求。具体的,该第二服务器还可在该预设的响应时间范围内检测到该数据中心中允许所述客户端进行读写操作的服务器的数量达到所述数据中心服务器的总数时,再次向第一服务器发送该响应消息;否则,则第二服务器在当前时间超过该响应时间时,再次向第一服务器发送该响应消息。该当前时间即在接收到第一服务器发出的准备请求之后经过的时间。
进一步的,在所述第二服务器向所述第一服务器发送所述响应消息之后,所述第二服务器接收所述第一服务器确定批准所述读写请求发送的读写指令,并向所在数据中心中允许所述客户端进行读写操作的服务器发送所述读写指令,所述读写指令包括所述实例号以及所述读写请求对应的实例内容,以使所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作;所述第二服务器接收所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息,并将所述操作确认消息返回至所述第一服务器。
具体实施例中,第一服务器根据允许所述客户端进行读写操作的服务器的数量确定批准该读写请求之后,可向第二服务器发送包括该读写请求对应的实例内容及实例号的读写指令。该第二服务器接收该读写指令,并向该第二服务器所在数据中心的允许所述客户端进行读写操作的服务器(即返回了确认回复消息的服务器)转发该读写指令,以指示所述允许所述客户端进行读写操作的服务器根据该实例内容进行读写操作。第二服务器收集所述允许所述客户端进行读写操作的服务器返回的操作确认消息,并将该操作确认消息返回至所述第一服务器,以表明该允许所述客户端进行读写操作的服务器已完成该读写操作,使得第一服务器确认对该读写请求对应的“选举”结束。
实施本发明实施例第二服务器可在接收到第一服务器根据接收的客户端请求而发送的准备请求时,向该第二服务器所在数据中心的服务器转发该准备请求,并根据该数据中心的服务器响应该准备请求返回的确认回复消息而生成响应消息,将包含允许该客户端进行读写操作的服务器的数量的响应消息发送至第一服务器,以使该第一服务器根据该允许该客户端进行读写操作的服务器的数量确定是否批准该客户端请求,从而减少了广域网中消息传递的数量,并减轻了接收到请求的服务器负载。
请参见图5,是本发明实施例提供的其中一种应用场景,具体的,如图5所示的应用场景中,广域网中分布存在数据中心1、数据中心2以及数据中心3,该数据中心1中的某一服务器接收到客户端1发送的读写请求成为该广域网中的领导者,即第一服务器。同时,数据中心2和数据中心3中分别部署存在协调者2和协调者3(该协调者2和协调者3即为广域网中的第二服务器)。除此之外,该数据中心1中还部署有服务器1和服务器2,数据中心2中有服务器3和服务器4,数据中心3中有服务器5和服务器6。该广域网中的服务器针对该客户端发送的读写请求进行“选举”,该“选举”过程包括准备阶段和批准阶段。
1)准备阶段:
客户端1发送的读写请求被数据中心1中的服务器接收,该接收请求的服务器成为领导者(即第一服务器),负责主持该请求对应实例的选举过程。领导者给请求分配一个实例号,该实例号在该第一服务器所在的广域网中唯一确定,领导者给不同的客户端请求分配不同的实例号。领导者发送携带该实例号的准备请求给协调者2和协调者3,还有数据中心1中的其它服务器(服务器1和服务器2)。协调者2和协调者3接收到领导者发送的准备请求之后,协调者2将准备请求发送给服务器3和4,协调者3将请求发送给服务器5和6。
服务器1至服务器6接收到准备请求,并回复准备请求。服务器1和服务器2将请求直接回复给领导者,比如响应该准备请求并返回确认回复消息至领导者;服务器3和服务器4回复给协调者2,服务器5和服务器6回复给协调者3。
根据实例号的分配的原则,在系统不出现错误的情况下,服务器会接受该准备请求,并回复确认回复消息给所在数据中心的协调者。例如,服务器3和4会返回确认回复消息给协调者2。
协调者收到回复,即收到所在数据中心的服务器响应该准备请求返回的确认回复消息时,可对回复进行统计和处理。具体的,当协调者收到协调者所在数据中心内多数派(大于该数据中心总服务器数量的二分之一)返回的确认回复消息时,协调者立刻将响应消息回复给领导者,该响应消息中记录有收到的确认回复消息的服务器(即允许所述客户端进行读写操作的服务器)的数量和/或标识;如果协调者没有收到所在数据中心内多数派的确认回复消息,那么协调者不回复响应消息给领导者,而是继续等待。
例如,在可选的实施例中,假设协调者2收到服务器3返回的确认回复消息,协调者3收到服务器5返回的确认回复消息,并且协调者2和3自身也确认了这条准备请求,那么协调者2和协调者3所在的数据中心超过半数的服务器都确认了这条准备请求,协调者2和协调者3分别将包含允许所述客户端进行读写操作的服务器的数量和/或标识的响应消息发送给领导者,通知领导者该数据中心2和数据中心3内各有两台服务器确认了准备请求,协调者2和协调者3记录各自所在的数据中心中允许所述客户端进行读写操作的服务器的标识。与此同时,领导者所在数据中心1中包括领导者自身共3台服务器(即领导者、服务器1和服务器2)都确认了这条准备请求。那么,总共有9台服务器参与了该读写请求对应的实例的选举工作,并由有2+2+3=7台服务器确认了准备请求,超过广域网中服务器总数的二分之一,则领导者可确定批准该读写请求,并进入到下一阶段,即批准阶段。若领导者后续接收到协调者在检测到响应时间超时或者该数据中心中允许所述客户端进行读写操作的服务器的数量达到所述数据中心服务器的总数时再次发送的响应消息,则领导者可忽略该再次发送的响应消息。
进一步的,该协调者还可在检测所在数据中心中允许所述客户端进行读写操作的服务器的数量达到所述数据中心服务器的总数时,向领导者发送当前收集得到的包含该协调者所在数据中心中允许所述客户端进行读写操作的服务器的数量的响应消息。或者,还可预先设置一个响应时间。协调者如果检测到当前时间,即在接收到领导者发出的准备请求之后经过的时间超过该预设的响应时间如5分钟时,则可将当前收集得到的包含该协调者所在数据中心中允许所述客户端进行读写操作的服务器的数量的响应消息发送给领导者,无论这个数量是否超过该数据中心服务器总数的二分之一。该预设的响应时间可以为领导者通知的,比如该预设的响应时间可携带在该准备请求中;或者该预设的响应时间可为协调者预先设置的,本发明实施例不做限定。
例如,在可选的实施例中,如果数据中心3中协调者3没有收到服务器5和6的返回的确认回复消息,只有协调者3确认了该准备请求,那么协调者3将不会回复响应消息给领导者。同样,数据中心2中也仅仅只有协调者2确认了准备请求,数据中心1中3台服务器都确认了准备请求。领导者检测到当前只有3台服务器(即本地数据中心的领导者、服务器1和服务器2)确认了准备请求,无法达到多数派。那么这时领导者会继续等待。协调者继续收集确认回复消息,若收集消息的时间即协调者在接收到该准备请求后经过的时间超过该预设的响应时间,则协调者将当前收到的所有返回确认回复消息的服务器的数量即允许所述客户端进行读写操作的服务器的数量回复给领导者,这样领导者收到了协调者2和协调者3的回复的响应消息,检测得到当前允许所述客户端进行读写操作的服务器的数量增加了协调者2和协调者3这两台,使得允许所述客户端进行读写操作的服务器的总数达到5台,达到多数派,可以进入批准阶段。
再例如,如果数据中心3中协调者3没有收到服务器5和6的返回的确认回复消息,只有协调者3确认了该准备请求,那么协调者3将不会回复响应消息给领导者;而数据中心2中协调者2和服务器3都确认了准备请求,超过数据中心2中服务器总数的一半,协调者2向领导者发送包含允许所述客户端进行读写操作的服务器的数量和/或标识的响应消息,通知领导者该数据中心2内有两台服务器确认了准备请求;而数据中心1中有领导者和服务器1确认了准备请求。领导者检测到当前只有4台服务器(即本地数据中心1的领导者、服务器1、数据中心2的协调者2和服务器3)确认了准备请求,无法达到多数派,那么这时领导者会继续等待。若协调者2很快检测到服务器4也确认了准备请求,即协调者2检测到所在数据中心2中允许所述客户端进行读写操作的服务器的数量达到所述数据中心服务器的总数(3台),即该数据中心中所有服务器都确认了准备请求,则再次向领导者发送包含允许所述客户端进行读写操作的服务器的数量(即3台)的响应消息,这样领导者检测得到当前允许所述客户端进行读写操作的服务器的数量达到5台,即增加了服务器4,达到多数派,可以进入批准阶段。
2)批准阶段:
进入批准阶段之后,和准备阶段类似,领导者将该读写请求对应的实例内容和实例号作为一个读写指令发送给协调者,由协调者发送给准备阶段返回了确认回复消息即允许所述客户端进行读写操作的服务器;领导者还将该读写指令发送给本地数据中心返回了确认回复消息的服务器。即领导者在协调者的参与下,将读写指令发送给准备阶段所有返回了确认回复消息的服务器,即所有参与者。
参与者在不发生冲突的情况下,会回复操作确认消息确认该读写指令。回复消息的过程如下:和领导者处于一个数据中心的服务器将回复如操作确认消息直接发送给领导者;其它数据中心的服务器将回复发送给本数据中心内的协调者,协调者收集该协调者所在数据中心的参与者的回复,再将回复发送给领导者。领导者收到了多数派(服务器数量超过该广域网中服务器的二分之一)的确认回复之后,一个实例的选举过程结束,领导者回复客户端请求成功消息,并且通过协调者向该广域网中的所有服务器发送本实例最终决议的内容,即批准该客户端发送的读写请求。
举例来说,假设之前在准备阶段有服务器1、服务器2、服务器3、服务器5和协调者2、协调者3返回了确认回复消息,那么在批准阶段,领导者将读写指令发送给服务器1、服务器2和协调者2、协调者3,协调者2将读写指令转发给服务器3,协调者3将读写指令转发给服务器5。在收到确认接受该读写指令的回复即操作确认消息后,协调者2和协调者3将该操作确认消息发送给领导者,同时服务器1和服务器2也将操作确认消息发送给领导者,领导者在确认多数派已经接受了读写指令,即返回操作确认消息的服务器数量超过该广域网中服务器总数的二分之一时,实例的“选举”结束。领导者回复客户端请求成功消息,并将实例的结果借助协调者2和3发送给广域网中各数据中心的所有服务器。
本发明实施例通过设置将协调者即第二服务器作为各个数据中心的消息代理,避免了现有Paxos算法广泛采用的垮局域网的发送方式,使得减少了广域网中消息的数量,从而减少了错误发生的概率,增加了系统的稳定性。因为正常情况下数据中心内部的网络状况是非常好的,而广域网相对复杂。通过设置该协调者的角色,我们由协调者向数据中心内部的服务器发送消息,避免了由领导者即第一服务器向所有服务器发送消息所造成的不必要的通信,并且该领导者的负载也被分散到多台服务器,进一步提高了系统的稳定性和吞吐率。
请参见图6,是本发明实施例提供的一种消息传递装置的结构示意图,本发明实施例的所述装置可具体设置于第一服务器中,具体的,本发明实施例的所述装置包括:第一接收模块11、第一发送模块12、第二接收模块13、确定模块14以及第二发送模块15。其中,
所述第一接收模块11,用于接收客户端发送的读写请求,并为所述读写请求分配用于标识所述读写请求的实例号。
需要说明的是,该第一服务器可以为第一服务器所在广域网中的任意一台接收到客户端请求的服务器,该服务器在接收到客户端请求时,即可作为该广域网中的“领导者”,并发起对该客户端请求的选举过程,从而确定是否批准该客户端请求。
具体实施例中,第一接收模块11在接收到客户端请求时,即可为该客户端请求分配一个实例号,该实例号在该第一服务器所在的广域网中唯一确定,用于标识该接收到的客户请求。具体的,该客户端请求可具体为客户端发送读请求或写请求,本发明实施例不做限定。
所述第一发送模块12,用于向所在广域网中的第二服务器发送携带所述实例号的准备请求。
所述第二接收模块13,用于接收所述第二服务器返回的响应消息,所述响应消息为所述第二服务器根据所述第二服务器所在数据中心的服务器响应所述准备请求返回的确认回复消息而生成的,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量。
需要说明的是,该第二服务器可从广域网的每个数据中心内部挑选得出,每个数据中心的第二服务器可以为一个或多个,本发明实施例不做限定。具体的,可选取网卡好,可以和数据中心内部所有服务器连通并且可以连接广域网中其它所有数据中心的服务器作为该第二服务器。
具体实施例中,该第一接收模块11在为客户端发送的读写请求分配实例号之后,即通过第一发送模块12可向该第一服务器所在的本地数据中心的各服务器发送该携带配置的实例号的准备请求,并向该第一服务器所在广域网中设置的第二服务器发送该准备请求,以使该第二服务器向该第二服务器所在数据中心的服务器转发该准备请求,并收集该第二服务器所在数据中的服务器响应所述准备请求返回的确认回复消息,以对客户端请求进行选举。
可选的,该准备请求还可包括该第一服务器的标识、该客户端请求对应的实例内容等信息。
在第一发送模块12发送准备请求之后,可通过第二接收模块13接收该第二服务器响应该准备请求返回的响应消息。其中,所述响应消息为所述第二服务器根据所述第二服务器所在数据中心的服务器响应所述准备请求返回的确认回复消息而生成的,该响应消息包括该第二服务器所在数据中心中允许所述客户端进行读写操作的服务器(即返回确认回复消息的服务器)的数量,即“选举”通过的服务器数量。
所述确定模块14,用于根据所述响应消息中允许所述客户端进行读写操作的服务器的数量,确定是否批准所述读写请求。
具体实施例中,在第一发送模块12向所在广域网中的第二服务器发送携带所述实例号的准备请求以及向本地数据中心的服务器发送该准备请求之后,确定模块14即可检测当前允许所述客户端进行读写操作的服务器的数量,从而根据该允许所述客户端进行读写操作的服务器的数量确定出是否批准该客户端发送的读写请求。具体的,在第二接收模块13接收到第二服务器响应该准备请求返回的响应消息时,确定模块14即可根据该响应消息中包含的允许所述客户端进行读写操作的服务器的数量以及本地数据中心中确认允许所述客户端进行读写操作的服务器的数量,确定出是否批准该客户端发送的读写请求,即确定该“选举”是否通过。
所述第二发送模块15,用于在所述确定模块14确定批准所述读写请求时,根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令。
具体实施例中,确定模块14在确认批准客户端发送的读写请求之后,即可通过第二发送模块15向所述允许所述客户端进行读写操作的服务器发送读写指令,以使该广域网中允许所述客户端进行读写操作的服务器根据该读写请求对应的实例内容进行读写操作,完成“选举”。
实施本发明实施例可在第一服务器接收到客户端请求时,向当前广域网中的第二服务器发送与该客户端请求对应的准备请求,根据该第二服务器响应该准备请求返回的响应消息中包含的允许该客户端进行读写操作的服务器的数量,确定是否批准该客户端请求,从而实现将在广域网中传递的部分消息转移到局域网中进行传递,减少了广域网中消息传递的数量,并减轻了接收到请求的服务器的负载。
请参见图7,是本发明实施例提供的另一种消息传递装置的结构示意图,具体的,本发明实施例的所述装置包括:第一接收模块11、第一发送模块12、第二接收模块13、确定模块14以及第二发送模块15。其中,
所述第一接收模块11,用于接收客户端发送的读写请求,并为所述读写请求分配用于标识所述读写请求的实例号。
需要说明的是,该第一服务器可以为第一服务器所在广域网中的任意一台接收到客户端请求的服务器,该服务器在接收到客户端请求时,即可作为该广域网中的“领导者”,并发起对该客户端请求的选举过程,从而确定是否批准该客户端请求。
具体实施例中,第一接收模块11在接收到客户端请求时,即可为该客户端请求分配一个实例号,该实例号在该第一服务器所在的广域网中唯一确定,用于标识该接收到的客户请求。具体的,该客户端请求可具体为客户端发送读请求或写请求,本发明实施例不做限定。
所述第一发送模块12,用于向所在广域网中的第二服务器发送携带所述实例号的准备请求。
所述第二接收模块13,用于接收所述第二服务器返回的响应消息,所述响应消息为所述第二服务器根据所述第二服务器所在数据中心的服务器响应所述准备请求返回的确认回复消息而生成的,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量。
需要说明的是,该第二服务器可从广域网的每个数据中心内部挑选得出,每个数据中心的第二服务器可以为一个或多个,本发明实施例不做限定。具体的,可选取网卡好,可以和数据中心内部所有服务器连通并且可以连接广域网中其它所有数据中心的服务器作为该第二服务器。
具体实施例中,该第一接收模块11在为客户端发送的读写请求分配实例号之后,即通过第一发送模块12可向该第一服务器所在的本地数据中心的各服务器发送该携带配置的实例号的准备请求,并向该第一服务器所在广域网中设置的第二服务器发送该准备请求,以使该第二服务器向该第二服务器所在数据中心的服务器转发该准备请求,并收集该第二服务器所在数据中的服务器响应所述准备请求返回的确认回复消息,以对客户端请求进行选举。
可选的,该准备请求还可包括该第一服务器的标识、该客户端请求对应的实例内容等信息。
在第一发送模块12发送准备请求之后,可通过第二接收模块13接收该第二服务器响应该准备请求返回的响应消息。其中,所述响应消息为所述第二服务器根据所述第二服务器所在数据中心的服务器响应所述准备请求返回的确认回复消息而生成的,该响应消息包括该第二服务器所在数据中心中允许所述客户端进行读写操作的服务器(即返回确认回复消息的服务器)的数量,即“选举”通过的服务器数量。
所述确定模块14,用于根据所述响应消息中允许所述客户端进行读写操作的服务器的数量,确定是否批准所述读写请求。
具体实施例中,在第一发送模块12向所在广域网中的第二服务器发送携带所述实例号的准备请求以及向本地数据中心的服务器发送该准备请求之后,确定模块14即可检测当前允许所述客户端进行读写操作的服务器的数量,从而根据该允许所述客户端进行读写操作的服务器的数量确定出是否批准该客户端发送的读写请求。具体的,在第二接收模块13接收到第二服务器响应该准备请求返回的响应消息时,确定模块14即可根据该响应消息中包含的允许所述客户端进行读写操作的服务器的数量以及本地数据中心中确认允许所述客户端进行读写操作的服务器的数量,确定出是否批准该客户端发送的读写请求,即确定该“选举”是否通过。
所述第二发送模块15,用于在所述确定模块14确定批准所述读写请求时,根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令。
具体实施例中,确定模块14在确认批准客户端发送的读写请求之后,即可通过第二发送模块15向所述允许所述客户端进行读写操作的服务器发送读写指令,以使该广域网中允许所述客户端进行读写操作的服务器根据该读写请求对应的实例内容进行读写操作,完成“选举”。
可选的,在本发明实施例中,所述确定模块14可进一步包括:
检测单元141,用于根据所述响应消息,检测所述广域网中允许所述客户端进行读写操作的服务器的数量是否超过所述广域网中服务器数量的二分之一;
请求确定单元142,用于当所述检测单元141检测到所述广域网中允许所述客户端进行读写操作的服务器的数量超过所述广域网中服务器数量的二分之一时,确定批准所述读写请求。
具体的,该请求确定单元142可在检测单元141统计得到当前允许所述客户端进行读写操作的服务器的数量超过所在广域网中服务器数量的二分之一,即响应该准备请求并返回确认回复消息的服务器达到多数时,确定批准该读写请求。
可选的,在本发明实施例中,所述第二发送模块15可进一步包括:
指令发送单元151,用于向所述第二服务器发送携带所述读写请求对应的实例内容及所述实例号的读写指令,以使所述第二服务器收集所述数据中心中允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息;
消息接收单元152,用于接收所述第二服务器响应所述读写指令返回的所述操作确认消息。
具体实施例中,在确定模块14确认批准客户端发送的读写请求之后,第二发送模块15即可向该允许所述客户端进行读写操作的服务器发送读写指令,以使该广域网中允许所述客户端进行读写操作的服务器根据该读写请求对应的实例内容进行读写操作,并收集该允许所述客户端进行读写操作的服务器进行读写操作后返回的操作确认消息。具体的,可通过指令发送单元151向该广域网中的第二服务器发送该读写指令,以使该第二服务器将该读写指令转发给该第二服务器所在数据中心中允许所述客户端进行读写操作的服务器即返回了确认回复消息的服务器,从而使得该允许所述客户端进行读写操作的服务器根据该实例内容进行读写操作。消息接收单元152接收所述第二服务器响应所述读写指令返回的所述操作确认消息。
当消息接收单元152接收到所在广域网中允许所述客户端进行读写操作的服务器响应所述读写指令返回的操作确认消息时,即可表明该允许所述客户端进行读写操作的服务器根据该读写请求对应的实例内容完成了读写操作。具体的,可在消息接收单元152检测到返回操作确认消息的服务器的数量超过当前广域网中服务器数量的二分之一时,确认对该读写请求对应的“选举”结束。
进一步的,在本发明实施例中,所述装置还可包括:
第一通知模块16,用于当接收到所述广域网中允许所述客户端进行读写操作的服务器响应所述读写指令返回的操作确认消息时,将所述读写请求的操作成功消息通知给所述广域网中的服务器,所述操作确认消息为所述允许所述客户端进行读写操作的服务器根据所述读写请求对应的实例内容进行读写操作返回的;
第二通知模块17,用于将针对所述读写请求的请求成功消息通知给所述客户端。
进一步的,在消息接收单元152接收到该操作确认消息即确认对该读写请求对应的“选举”结束时,还可通过第一通知模块16通知该广域网中的服务器该读写请求操作成功,并通过第二通知模块17向所述客户端发送针对所述读写请求的请求成功消息,以通知客户端该读写请求已成功被接收。具体的,该第一通知模块16和第二通知模块17可在消息接收单元152确认返回操作确认消息的服务器的数量超过当前广域网中服务器数量的一半时,分别通知该广域网中的各服务器以及客户端该“选举”通过消息。
实施本发明实施例第一服务器可在接收到客户端请求时,向当前广域网中的第二服务器发送与该客户端请求对应的准备请求,根据该第二服务器响应该准备请求返回的响应消息中包含的允许该客户端进行读写操作的服务器的数量以及本地数据中心允许该客户端进行读写操作的服务器的数量,确定是否批准该客户端请求。通过在各个数据中心中部署该第二服务器,实现了将在广域网中传递的部分消息转移到局域网中进行传递,使得广域网中消息的数量大大地减少,并且接收到请求的服务器即第一服务器的负载也被分散到多台服务器,减轻了该第一服务器的负载,提高了系统的稳定性和吞吐率。
请参见图8,是本发明实施例提供的又一种消息传递装置的结构示意图,本发明实施例的所述装置可具体设置于第二服务器中,具体的,本发明实施例的所述装置包括:请求处理模块21、生成模块22以及发送模块23。其中,
所述请求处理模块21,用于接收第一服务器发送的携带实例号的准备请求,并向所述第二服务器所在数据中心的服务器发送所述准备请求。
需要说明的是,该第二服务器可从广域网的每个数据中心内部挑选得出,每个数据中心的第二服务器可以为一个或多个,本发明实施例不做限定。具体的,可选取网卡好,可以和数据中心内部所有服务器连通并且可以连接广域网中其它所有数据中心的服务器作为该第二服务器。
其中,所述实例号为所述第一服务器在接收到客户端请求如客户端发送的读写请求时为所述读写请求分配的。该实例号在该第一服务器所在的广域网中唯一确定。
所述生成模块22,用于收集所述数据中心的服务器响应所述准备请求返回的确认回复消息,并根据收集的所述确认回复消息生成响应消息,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量。
所述发送模块23,用于向所述第一服务器发送所述生成模块22生成的响应消息,以使所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量确定是否批准所述读写请求。
具体实施例中,请求处理模块21在接收到第一服务器发送的准备请求之后,可将该准备请求转发给该第二服务器所在数据中心的其他服务器,该数据中心的服务器根据该准备消息确定是否接受该请求并回复给第二服务器。若第二服务器接收到该数据中心服务器返回的确认回复消息,即可表明该返回确认回复消息的服务器为允许所述客户端进行读写操作的服务器,生成模块22收集该数据中的服务器响应所述准备请求返回的确认回复消息,并根据收集的确认回复消息生成包含允许所述客户端进行读写操作的服务器的数量和/或标识的响应消息,通过发送模块23向第一服务器发送该响应消息。
实施本发明实施例第二服务器可在接收到第一服务器根据接收的客户端请求而发送的准备请求时,向该第二服务器所在数据中心的服务器转发该准备请求,并根据该数据中心的服务器响应该准备请求返回的确认回复消息而生成响应消息,将包含允许该客户端进行读写操作的服务器的数量的响应消息发送至第一服务器,以使该第一服务器根据该允许该客户端进行读写操作的服务器的数量确定是否批准该客户端请求,从而实现将在广域网中传递的部分消息转移到局域网中进行传递,减少了广域网中消息传递的数量,并减轻了接收到请求的服务器负载。
请参见图9,是本发明实施例提供的再一种消息传递装置的结构示意图,具体的,本发明实施例的所述装置包括:请求处理模块21、生成模块22以及发送模块23。其中,
所述请求处理模块21,用于接收第一服务器发送的携带实例号的准备请求,并向所述第二服务器所在数据中心的服务器发送所述准备请求。
需要说明的是,该第二服务器可从广域网的每个数据中心内部挑选得出,每个数据中心的第二服务器可以为一个或多个,本发明实施例不做限定。具体的,可选取网卡好,可以和数据中心内部所有服务器连通并且可以连接广域网中其它所有数据中心的服务器作为该第二服务器。
其中,所述实例号为所述第一服务器在接收到客户端请求如客户端发送的读写请求时为所述读写请求分配的。该实例号在该第一服务器所在的广域网中唯一确定,用于标识该接收到的客户请求。可选的,该准备请求还可包括该第一服务器的标识、该客户端请求对应的实例内容等等。
所述生成模块22,用于收集所述数据中心的服务器响应所述准备请求返回的确认回复消息,并根据收集的所述确认回复消息生成响应消息,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量。
所述发送模块23,用于向所述第一服务器发送所述生成模块22生成的响应消息,以使所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量确定是否批准所述读写请求。
具体实施例中,请求处理模块21在接收到第一服务器发送的准备请求之后,可将该准备请求转发给该第二服务器所在数据中心的其他服务器,该数据中心的服务器根据该准备消息确定是否接受该请求并回复给第二服务器。若第二服务器接收到该数据中心服务器返回的确认回复消息,即可表明该返回确认回复消息的服务器为允许所述客户端进行读写操作的服务器,生成模块22收集该数据中的服务器响应所述准备请求返回的确认回复消息,并根据收集的确认回复消息生成包含允许所述客户端进行读写操作的服务器的数量和/或标识的响应消息。进一步的,发送模块23可根据该准备请求中包含的第一服务器的标识,向所述第一服务器发送该响应消息。
需要说明的是,该第二服务器生成的响应消息是根据收集到的确认回复消息的数量变化进行更新的,即该第二服务器在每收到一条该数据中心的服务器响应准备请求返回的确认回复消息时,则对响应消息进行更新,比如将该返回确认回复消息的服务器的标识加入该响应消息中,并将该响应消息中记录的允许所述客户端进行读写操作的服务器的数量加一。
可选的,在本发明实施例中,所述发送模块23可包括:
第一检测单元231,用于检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否超过所述数据中心的服务器的总数的二分之一;
第一发送单元232,用于在所述第一检测单元231的检测结果为超过所述数据中心服务器的总数的二分之一时,向所述第一服务器发送所述响应消息。
具体的,发送模块23向第一服务器发送包含允许所述客户端进行读写操作的服务器的数量的响应消息时,可通过第一检测单元231检测数据中心中允许所述客户端进行读写操作的服务器的数量是否超过该数据中心服务器总数的二分之一,并在检测到超过该数据中心的服务器总数的二分之一时,通过第一发送单元232向所述第一服务器发送该响应消息。
可选的,在本发明实施例中,所述发送模块23还可包括:
第二检测单元233,用于检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否达到所述数据中心服务器的总数;
第二发送单元234,用于在所述第二检测单元233检测结果为达到所述数据中心服务器的总数时,向所述第一服务器发送所述响应消息。
具体的,发送模块23向第一服务器发送包含允许所述客户端进行读写操作的服务器的数量的响应消息时,还可通过第二检测单元233检测数据中心中允许所述客户端进行读写操作的服务器的数量是否达到该数据中心服务器的总数,即该数据中心的所有服务器均返回了确认回复消息,并在检测到超过该数据中心的服务器总数的二分之一时,通过第二发送单元234向所述第一服务器发送响应消息。
可选的,在本发明实施例中,所述发送模块23还可包括:
第三检测单元235,用于检测当前时间是否超过预设的响应时间;
第三发送单元236,用于当所述第三检测单元235的检测结果为超过所述预设的响应时间时,向所述第一服务器发送所述响应消息。
具体的,发送模块23向第一服务器发送包含允许所述客户端进行读写操作的服务器的数量的响应消息时,还可通过第三检测单元235检测当前时间,即接收到第一服务器发送的准备请求之后经过的时间是否超过预设的响应时间,如5分钟,并在检测到当前时间超过该5分钟时,通过第三发送单元236向所述第一服务器发送响应消息。
进一步的,在本发明实施例中,所述装置还可包括:
指令处理模块24,用于接收所述第一服务器确定批准所述读写请求发送的读写指令,并向所述数据中心中允许所述客户端进行读写操作的服务器发送所述读写指令,所述读写指令包括所述实例号以及所述读写请求对应的实例内容,以使所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作;
消息处理模块25,用于接收所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息,并将所述操作确认消息返回至所述第一服务器。
具体实施例中,第一服务器根据允许所述客户端进行读写操作的服务器的数量确定批准该读写请求之后,可向第二服务器发送包括该读写请求对应的实例内容及实例号的读写指令。该第二服务器通过指令处理模块24接收该读写指令,并向该第二服务器所在数据中心的允许所述客户端进行读写操作的服务器(即返回了确认回复消息的服务器)转发该读写指令,以指示所述允许所述客户端进行读写操作的服务器根据该实例内容进行读写操作。消息处理模块25接收所述允许所述客户端进行读写操作的服务器返回的操作确认消息,并将所述操作确认消息返回至所述第一服务器,以表明该允许所述客户端进行读写操作的服务器已完成该读写操作,使得第一服务器确认对该读写请求对应的“选举”结束。
实施本发明实施例第二服务器可在接收到第一服务器根据接收的客户端请求而发送的准备请求时,向该第二服务器所在数据中心的服务器转发该准备请求,并根据该数据中心的服务器响应该准备请求返回的确认回复消息而生成响应消息,将包含允许该客户端进行读写操作的服务器的数量的响应消息发送至第一服务器,以使该第一服务器根据该允许该客户端进行读写操作的服务器的数量确定是否批准该客户端请求,并在接收到第一服务器确定批准该读写请求发送的读写指令时,将该读写指令转发至所在数据中心的返回了确认回复消息的服务器,向第一服务器反馈收集的反馈该确认回复消息的服务器的读写操作情况,实现了将在广域网中传递的部分消息转移到局域网中进行传递,从而减少了广域网中消息传递的数量,并减轻了接收到请求的服务器负载。
进一步的,请参见图10,是本发明实施例提供的一种服务器的结构组成示意图,本发明实施例的服务器包括:接收器300、发射器400、存储器200和处理器100,所述存储器200可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。作为一种计算机存储介质的存储器200中存储相应的应用程序等。所述接收器300、发射器400、存储器200以及处理器100之间可以通过总线进行数据连接,也可以通过其他方式数据连接。本实施例中以总线连接进行说明。具体的,本发明实施例的所述服务器具体为第一服务器,并可参照图6至图7对应实施例中的消息传递装置的相关描述。
其中,所述处理器100执行如下步骤:
通过接收器300接收客户端发送的读写请求,并为所述读写请求分配用于标识所述读写请求的实例号;
通过发射器400向所在广域网中的第二服务器发送携带所述实例号的准备请求;
通过接收器300接收所述第二服务器返回的响应消息,所述响应消息为所述第二服务器根据所述第二服务器所在数据中心的服务器响应所述准备请求返回的确认回复消息而生成的,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量;
根据所述响应消息中允许所述客户端进行读写操作的服务器的数量,确定是否批准所述读写请求;
若批准,则根据所述读写请求,通过发射器400向所述允许所述客户端进行读写操作的服务器发送读写指令。
需要说明的是,该第一服务器可以为第一服务器所在广域网中的任意一台接收到客户端请求的服务器,该服务器在接收到客户端请求时,即可作为该广域网中的“领导者”,并发起对该客户端请求的选举过程,从而确定是否批准该客户端请求。
具体实施例中,在接收到客户端请求时,第一服务器即可通过处理器100为该客户端请求分配一个实例号,该实例号在该第一服务器所在的广域网中唯一确定,用于标识该接收到的客户请求。具体的,该客户端请求可具体为客户端发送读请求或写请求,本发明实施例不做限定。
可选的,该准备请求还可包括该第一服务器的标识、该客户端请求对应的实例内容等等。
在可选的实施例中,所述处理器100在执行所述根据所述响应消息中允许所述客户端进行读写操作的服务器的数量,确定是否批准所述读写请求,具体执行以下步骤:
根据所述响应消息,检测所述广域网中允许所述客户端进行读写操作的服务器的数量是否超过所述广域网中服务器数量的二分之一;
若超过所述广域网中服务器数量的二分之一,确定批准所述读写请求。
具体实施例中,接收器300接收到第二服务器响应该准备请求返回的响应消息和本地数据中心的服务器返回的确认回复消息时,处理器100即可根据该响应消息中包含的允许所述客户端进行读写操作的服务器的数量以及该本地数据中心返回确认回复消息的服务器数量,确定出是否批准该客户端发送的读写请求,即确定该“选举”是否通过。
具体的,该处理器100可在统计得到允许所述客户端进行读写操作的服务器的数量(包括接收到第二服务器返回的响应消息中包含的允许所述客户端进行读写操作的服务器的数量以及该本地数据中心返回确认回复消息的服务器数量)超过所在广域网中服务器数量的二分之一,即响应该准备请求并返回确认回复消息的服务器达到多数时,则可表明“选举”通过,并确定批准该读写请求。
在可选的实施例中,所述处理器100在执行所述根据所述读写请求,通过发射器400向所述允许所述客户端进行读写操作的服务器发送读写指令,具体执行以下步骤:
通过发射器400向所述第二服务器发送携带所述读写请求对应的实例内容及所述实例号的读写指令,以使所述第二服务器收集所述数据中心中允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息;
通过接收器300接收所述第二服务器响应所述读写指令返回的所述操作确认消息。
当接收器300接收到所在广域网中允许所述客户端进行读写操作的服务器响应所述读写指令返回的操作确认消息时,即可表明该允许所述客户端进行读写操作的服务器根据该读写请求对应的实例内容完成了读写操作。进一步的,该处理器100可在检测到返回操作确认消息的服务器的数量超过当前广域网中服务器数量的二分之一时,确认对该读写请求对应的“选举”结束。
进一步的,所述处理器100在执行所述根据所述读写请求,通过发射器400向所述允许所述客户端进行读写操作的服务器发送读写指令之后,还执行以下步骤:
当接收到所述广域网中允许所述客户端进行读写操作的服务器响应所述读写指令返回的操作确认消息时,将所述读写请求的操作成功消息通知给所述广域网中的服务器,所述操作确认消息为所述允许所述客户端进行读写操作的服务器根据所述读写请求对应的实例内容进行读写操作返回的;
将针对所述读写请求的请求成功消息通知给所述客户端。
实施本发明实施例可在第一服务器接收到客户端请求时,向当前广域网中的第二服务器发送与该客户端请求对应的准备请求,根据该第二服务器响应该准备请求返回的响应消息中包含的允许该客户端进行读写操作的服务器的数量,确定是否批准该客户端请求,从而实现将在广域网中传递的部分消息转移到局域网中进行传递,减少了广域网中消息传递的数量,并减轻了接收到请求的服务器的负载。
进一步的,请参见图11,是本发明实施例提供的另一种服务器的结构组成示意图,本发明实施例的服务器包括:接收器700、发射器800、存储器600和处理器500,所述存储器600可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。作为一种计算机存储介质的存储器600中存储相应的应用程序等。所述接收器700、发射器800、存储器600以及处理器500之间可以通过总线进行数据连接,也可以通过其他方式数据连接。本实施例中以总线连接进行说明。具体的,本发明实施例的所述服务器具体为第二服务器,并可参照图8至图9对应实施例中的消息传递装置的相关描述。
其中,所述处理器500执行如下步骤:
通过接收器700接收第一服务器发送的携带实例号的准备请求,并通过发射器800向所在数据中心的服务器发送所述准备请求,所述实例号为所述第一服务器在接收到客户端发送的读写请求时为所述读写请求分配的;
收集所述数据中心的服务器响应所述准备请求返回的确认回复消息,并根据收集的所述确认回复消息生成响应消息,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量;
通过发射器800向所述第一服务器发送所述响应消息,以使所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量确定是否批准所述读写请求。
需要说明的是,该第二服务器可从广域网的每个数据中心内部挑选得出,每个数据中心的第二服务器可以为一个或多个,本发明实施例不做限定。具体的,可选取网卡好,可以和数据中心内部所有服务器连通并且可以连接广域网中其它所有数据中心的服务器作为该第二服务器。
其中,所述实例号为所述接收器700接收到客户端请求如客户端发送的读写请求时处理器500为所述读写请求分配的。该实例号在该第一服务器所在的广域网中唯一确定。可选的,该准备请求还可包括该第一服务器的标识、该客户端请求对应的实例内容等等。
具体实施例中,接收器700在接收到第一服务器发送的准备请求之后,可通过发射器800将该准备请求转发给该第二服务器所在数据中心的其他服务器,该数据中心的服务器根据该准备消息确定是否接受该请求并回复给第二服务器。若接收器700接收到该数据中心服务器返回的确认回复消息时,即可表明该返回确认回复消息的服务器为允许所述客户端进行读写操作的服务器,第二服务器通过处理器500收集该数据中的服务器响应所述准备请求返回的确认回复消息,并根据收集的确认回复消息生成包含允许所述客户端进行读写操作的服务器的数量和/或标识的响应消息。第二服务器通过发射器800向第一服务器发送该响应消息。
在可选的实施例中,所述处理器500在执行所述通过发射器800向所述第一服务器发送所述响应消息,具体执行以下步骤:
检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否超过所述数据中心服务器的总数的二分之一;
若超过所述数据中心服务器的总数的二分之一,则通过发射器800向所述第一服务器发送所述响应消息。
具体的,发射器800向第一服务器发送包含允许所述客户端进行读写操作的服务器的数量的响应消息,可以是通过处理器500检测数据中心中允许所述客户端进行读写操作的服务器的数量是否超过该数据中心服务器总数的二分之一,并在检测到超过该数据中心的服务器总数的二分之一时,通过发射器800向第一服务器发送该响应消息。
在可选的实施例中,所述处理器500在执行所述通过发射器800向所述第一服务器发送所述响应消息,还执行以下步骤:
检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否达到所述数据中心服务器的总数;
若达到所述数据中心服务器的总数,通过发射器800向所述第一服务器发送所述响应消息。
在可选的实施例中,所述处理器500在执行所述通过发射器800向所述第一服务器发送所述响应消息,还执行以下步骤:
检测当前时间是否超过预设的响应时间;
若超过所述预设的响应时间,则通过发射器800向所述第一服务器发送所述响应消息。
进一步的,所述处理器500在执行所述通过发射器800向所述第一服务器发送所述响应消息之后,还执行以下步骤:
通过接收器700接收所述第一服务器确定批准所述读写请求发送的读写指令,并通过发射器800向所述数据中心中允许所述客户端进行读写操作的服务器发送所述读写指令,所述读写指令包括所述实例号以及所述读写请求对应的实例内容,以使所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作;
通过接收器700接收所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息,并通过发射器800将所述操作确认消息返回至所述第一服务器。
实施本发明实施例第二服务器可在接收到第一服务器根据接收的客户端请求而发送的准备请求时,向该第二服务器所在数据中心的服务器转发该准备请求,并根据该数据中心的服务器响应该准备请求返回的确认回复消息而生成响应消息,将包含允许该客户端进行读写操作的服务器的数量的响应消息发送至第一服务器,以使该第一服务器根据该允许该客户端进行读写操作的服务器的数量确定是否批准该客户端请求,从而减少了广域网中消息传递的数量,并减轻了接收到请求的服务器负载。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (18)
1.一种消息传递方法,其特征在于,包括:
第一服务器接收客户端发送的读写请求,并为所述读写请求分配用于标识所述读写请求的实例号;
所述第一服务器向所在广域网中的第二服务器发送携带所述实例号的准备请求;
所述第一服务器接收所述第二服务器返回的响应消息,所述响应消息为所述第二服务器根据所述第二服务器所在数据中心的服务器响应所述准备请求返回的确认回复消息而生成的,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量;
所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量,确定是否批准所述读写请求;
若批准,所述第一服务器根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令。
2.根据权利要求1所述的方法,其特征在于,所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量,确定是否批准所述读写请求,包括:
所述第一服务器根据所述响应消息,检测所述广域网中允许所述客户端进行读写操作的服务器的数量是否超过所述广域网中服务器数量的二分之一;
若超过所述广域网中服务器数量的二分之一,所述第一服务器确定批准所述读写请求。
3.根据权利要求1所述的方法,其特征在于,所述第一服务器根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令,包括:
所述第一服务器向所述第二服务器发送携带所述读写请求对应的实例内容及所述实例号的读写指令,以使所述第二服务器收集所述数据中心中允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息;
所述第一服务器接收所述第二服务器响应所述读写指令返回的所述操作确认消息。
4.根据权利要求1-3任一项所述的方法,其特征在于,在所述第一服务器根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令之后,所述方法还包括:
当接收到所述广域网中允许所述客户端进行读写操作的服务器响应所述读写指令返回的操作确认消息时,所述第一服务器将所述读写请求的操作成功消息通知给所述广域网中的服务器,所述操作确认消息为所述允许所述客户端进行读写操作的服务器根据所述读写请求对应的实例内容进行读写操作返回的;
所述第一服务器将针对所述读写请求的请求成功消息通知给所述客户端。
5.一种消息传递方法,其特征在于,包括:
第二服务器接收第一服务器发送的携带实例号的准备请求,并向所述第二服务器所在数据中心的服务器发送所述准备请求,所述实例号为所述第一服务器在接收到客户端发送的读写请求时为所述读写请求分配的;
所述第二服务器收集所述数据中心的服务器响应所述准备请求返回的确认回复消息,并根据收集的所述确认回复消息生成响应消息,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量;
所述第二服务器向所述第一服务器发送所述响应消息,以使所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量确定是否批准所述读写请求。
6.根据权利要求5所述的方法,其特征在于,所述第二服务器向所述第一服务器发送所述响应消息,包括:
所述第二服务器检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否超过所述数据中心服务器的总数的二分之一;
若超过所述数据中心服务器的总数的二分之一,所述第二服务器向所述第一服务器发送所述响应消息。
7.根据权利要求5所述的方法,其特征在于,所述第二服务器向所述第一服务器发送所述响应消息,包括:
所述第二服务器检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否达到所述数据中心服务器的总数;
若达到所述数据中心服务器的总数,所述第二服务器向所述第一服务器发送所述响应消息。
8.根据权利要求5所述的方法,其特征在于,所述第二服务器向所述第一服务器发送所述响应消息,包括:
所述第二服务器检测当前时间是否超过预设的响应时间;
若超过所述预设的响应时间,所述第二服务器向所述第一服务器发送所述响应消息。
9.根据权利要求5-8任一项所述的方法,其特征在于,在所述第二服务器向所述第一服务器发送所述响应消息之后,所述方法还包括:
所述第二服务器接收所述第一服务器确定批准所述读写请求发送的读写指令,并向所述数据中心中允许所述客户端进行读写操作的服务器发送所述读写指令,所述读写指令包括所述实例号以及所述读写请求对应的实例内容,以使所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作;
所述第二服务器接收所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息,并将所述操作确认消息返回至所述第一服务器。
10.一种消息传递装置,其特征在于,所述装置设置于第一服务器中,包括:
第一接收模块,用于接收客户端发送的读写请求,并为所述读写请求分配用于标识所述读写请求的实例号;
第一发送模块,用于向所在广域网中的第二服务器发送携带所述实例号的准备请求;
第二接收模块,用于接收所述第二服务器返回的响应消息,所述响应消息为所述第二服务器根据所述第二服务器所在数据中心的服务器响应所述准备请求返回的确认回复消息而生成的,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量;
确定模块,用于根据所述响应消息中允许所述客户端进行读写操作的服务器的数量,确定是否批准所述读写请求;
第二发送模块,用于在所述确定模块确定批准所述读写请求时,根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令。
11.根据权利要求10所述的装置,其特征在于,所述确定模块包括:
检测单元,用于根据所述响应消息,检测所述广域网中允许所述客户端进行读写操作的服务器的数量是否超过所述广域网中服务器数量的二分之一;
请求确定单元,用于当所述检测单元检测到所述广域网中允许所述客户端进行读写操作的服务器的数量超过所述广域网中服务器数量的二分之一时,确定批准所述读写请求。
12.根据权利要求10所述的装置,其特征在于,所述第二发送模块包括:
指令发送单元,用于向所述第二服务器发送携带所述读写请求对应的实例内容及所述实例号的读写指令,以使所述第二服务器收集所述数据中心中允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息;
消息接收单元,用于接收所述第二服务器响应所述读写指令返回的所述操作确认消息。
13.根据权利要求10-12任一项所述的装置,其特征在于,所述装置还包括:
第一通知模块,用于当接收到所述广域网中允许所述客户端进行读写操作的服务器响应所述读写指令返回的操作确认消息时,将所述读写请求的操作成功消息通知给所述广域网中的服务器,所述操作确认消息为所述允许所述客户端进行读写操作的服务器根据所述读写请求对应的实例内容进行读写操作返回的;
第二通知模块,用于将针对所述读写请求的请求成功消息通知给所述客户端。
14.一种消息传递装置,其特征在于,所述装置设置于第二服务器中,包括:
请求处理模块,用于接收第一服务器发送的携带实例号的准备请求,并向所述第二服务器所在数据中心的服务器发送所述准备请求,所述实例号为所述第一服务器在接收到客户端发送的读写请求时为所述读写请求分配的;
生成模块,用于收集所述数据中心的服务器响应所述准备请求返回的确认回复消息,并根据收集的所述确认回复消息生成响应消息,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量;
发送模块,用于向所述第一服务器发送所述生成模块生成的响应消息,以使所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量确定是否批准所述读写请求。
15.根据权利要求14所述的装置,其特征在于,所述发送模块包括:
第一检测单元,用于检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否超过所述数据中心服务器的总数的二分之一;
第一发送单元,用于在所述第一检测单元的检测结果为超过所述数据中心服务器的总数的二分之一时,向所述第一服务器发送所述响应消息。
16.根据权利要求14所述的装置,其特征在于,所述发送模块还包括:
第二检测单元,用于检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否达到所述数据中心服务器的总数;
第二发送单元,用于在所述第二检测单元的检测结果为达到所述数据中心服务器的总数时,向所述第一服务器发送所述响应消息。
17.根据权利要求14所述的装置,其特征在于,所述发送模块还包括:
第三检测单元,用于检测当前时间是否超过预设的响应时间;
第三发送单元,用于当所述第三检测单元的检测结果为超过所述预设的响应时间时,向所述第一服务器发送所述响应消息。
18.根据权利要求14-17任一项所述的装置,其特征在于,所述装置还包括:
指令处理模块,用于接收所述第一服务器确定批准所述读写请求发送的读写指令,并向所述数据中心中允许所述客户端进行读写操作的服务器发送所述读写指令,所述读写指令包括所述实例号以及所述读写请求对应的实例内容,以使所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作;
消息处理模块,用于接收所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息,并将所述操作确认消息返回至所述第一服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410643261.5A CN105656853B (zh) | 2014-11-14 | 2014-11-14 | 一种消息传递方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410643261.5A CN105656853B (zh) | 2014-11-14 | 2014-11-14 | 一种消息传递方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105656853A true CN105656853A (zh) | 2016-06-08 |
CN105656853B CN105656853B (zh) | 2018-11-20 |
Family
ID=56479618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410643261.5A Active CN105656853B (zh) | 2014-11-14 | 2014-11-14 | 一种消息传递方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105656853B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6311206B1 (en) * | 1999-01-13 | 2001-10-30 | International Business Machines Corporation | Method and apparatus for providing awareness-triggered push |
CN101938502A (zh) * | 2009-07-14 | 2011-01-05 | 北京邮电大学 | 一种服务器集群系统及负载均衡方法 |
CN103370917A (zh) * | 2012-11-20 | 2013-10-23 | 华为技术有限公司 | 消息处理方法及服务器 |
CN103516744A (zh) * | 2012-06-20 | 2014-01-15 | 阿里巴巴集团控股有限公司 | 一种数据处理的方法和应用服务器及集群 |
CN103685501A (zh) * | 2013-12-06 | 2014-03-26 | 北京奇虎科技有限公司 | 数据处理方法、装置和系统 |
-
2014
- 2014-11-14 CN CN201410643261.5A patent/CN105656853B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6311206B1 (en) * | 1999-01-13 | 2001-10-30 | International Business Machines Corporation | Method and apparatus for providing awareness-triggered push |
CN101938502A (zh) * | 2009-07-14 | 2011-01-05 | 北京邮电大学 | 一种服务器集群系统及负载均衡方法 |
CN103516744A (zh) * | 2012-06-20 | 2014-01-15 | 阿里巴巴集团控股有限公司 | 一种数据处理的方法和应用服务器及集群 |
CN103370917A (zh) * | 2012-11-20 | 2013-10-23 | 华为技术有限公司 | 消息处理方法及服务器 |
CN103685501A (zh) * | 2013-12-06 | 2014-03-26 | 北京奇虎科技有限公司 | 数据处理方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105656853B (zh) | 2018-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11120440B2 (en) | Payments in communication systems | |
CN109150971B (zh) | 超级节点投票和选举方法、装置和网络节点 | |
CN108764868B (zh) | 区块链节点代理对账方法和区块对账代理节点 | |
CN108768665A (zh) | 区块链生成方法、装置、计算机设备以及存储介质 | |
US20170339536A1 (en) | Offline peer-assisted notification delivery | |
CN112261135A (zh) | 基于一致性协议的节点选举方法、系统、装置及设备 | |
CN108021492B (zh) | 一种告警合并方法及设备 | |
CN104486407A (zh) | 编号的生成方法及装置 | |
CN105991412A (zh) | 消息推送方法及装置 | |
US11256536B2 (en) | Method and system for processing transactions using a transaction coordinator | |
CN107341062A (zh) | 一种数据推送方法、装置、设备以及存储介质 | |
CN111209032A (zh) | 灰度发布方法、配置中心服务器、用户终端、系统及介质 | |
US20200004785A1 (en) | Automatic grouping based on user behavior | |
CN113900598A (zh) | 基于区块链的数据存储方法、装置、设备以及存储介质 | |
CN102957594A (zh) | 基于消息队列的消息处理方法、相关设备及系统 | |
US11341842B2 (en) | Metering data management system and computer readable recording medium | |
CN103428260A (zh) | 用于将终端分配到服务器并高效地提示终端的系统及方法 | |
CN110909978A (zh) | 资源处理方法、装置、服务器及计算机可读存储介质 | |
CN104463062B (zh) | 基于二维码扫描的访问方法和系统 | |
CN107204897A (zh) | 网络链路的故障检测方法及系统 | |
CN105656853A (zh) | 一种消息传递方法及相关装置 | |
EP3349416A1 (en) | Relationship chain processing method and system, and storage medium | |
US11777753B2 (en) | Apparatus and method for managing online conference | |
CN114157720A (zh) | 处理业务请求的方法、装置、电子设备及介质 | |
US20220092082A1 (en) | Login based device data synchronization |
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 |