一种消息传递方法及相关装置的制造方法

文档序号:9891391阅读:154来源:国知局
一种消息传递方法及相关装置的制造方法
【技术领域】
[0001]本发明涉及通信技术领域,尤其涉及一种消息传递方法及相关装置。
【背景技术】
[0002]分布式系统可以通过冗余,在系统内部各服务器执行同样的任务或者存储相同的数据。该分布式系统通过系统各服务器间协同工作,使得即使在该系统中的部分服务器无法正常工作时,整个系统依旧可以完成任务,有更好的面对意外情况如断电、自然灾害等的能力。在分布式系统中,为了保证系统中服务器状态的一致性,需要使用一致性算法如Paxos算法来进行消息传递。
[0003]然而,在通过Paxos算法进行消息传递时,接收到客户端请求的服务器需要与所在广域网中的其他所有服务器进行通信,导致大量的消息在广域网中传输,在系统规模庞大时严重制约了系统的吞吐量,且使得该接收到请求的服务器负载较重。同时,在广域网的环境中,由于网络状况十分复杂,地理位置相距较远的数据中心执行Paxos算法时,丢包或网络拥塞等情况不可避免。当运行Paxos算法的服务器数量增加时,消息数量也随之增长,可能由此引发更严重的网络问题。

【发明内容】

[0004]本发明实施例所要解决的技术问题在于,提供一种消息传递方法及相关装置,可在广域网中的各服务器之间有效地进行消息传递。
[0005]第一方面,本发明实施例提供了一种消息传递方法,包括:
[0006]第一服务器接收客户端发送的读写请求,并为所述读写请求分配用于标识所述读写请求的实例号;
[0007]所述第一服务器向所在广域网中的第二服务器发送携带所述实例号的准备请求;
[0008]所述第一服务器接收所述第二服务器返回的响应消息,所述响应消息为所述第二服务器根据所述第二服务器所在数据中心的服务器响应所述准备请求返回的确认回复消息而生成的,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量;
[0009]所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量,确定是否批准所述读写请求;
[0010]若批准,所述第一服务器根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令。
[0011]结合第一方面,在第一种可能的实现方式中,所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量,确定是否批准所述读写请求,包括:
[0012]所述第一服务器根据所述响应消息,检测所述广域网中允许所述客户端进行读写操作的服务器的数量是否超过所述广域网中服务器数量的二分之一;
[0013]若超过所述广域网中服务器数量的二分之一,所述第一服务器确定批准所述读写请求。
[0014]结合第一方面,在第二种可能的实现方式中,所述第一服务器根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令,包括:
[0015]所述第一服务器向所述第二服务器发送携带所述读写请求对应的实例内容及所述实例号的读写指令,以使所述第二服务器收集所述数据中心中允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息;
[0016]所述第一服务器接收所述第二服务器响应所述读写指令返回的所述操作确认消肩、O
[0017]结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,在第三种可能的实现方式中,在所述第一服务器根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令之后,所述方法还包括:
[0018]当接收到所述广域网中允许所述客户端进行读写操作的服务器响应所述读写指令返回的操作确认消息时,所述第一服务器将所述读写请求的操作成功消息通知给所述广域网中的服务器,所述操作确认消息为所述允许所述客户端进行读写操作的服务器根据所述读写请求对应的实例内容进行读写操作返回的;
[0019]所述第一服务器将针对所述读写请求的请求成功消息通知给所述客户端。
[0020]第二方面,本发明实施例还提供了另一种消息传递方法,包括:
[0021]第二服务器接收第一服务器发送的携带实例号的准备请求,并向所述第二服务器所在数据中心的服务器发送所述准备请求,所述实例号为所述第一服务器在接收到客户端发送的读写请求时为所述读写请求分配的;
[0022]所述第二服务器收集所述数据中心的服务器响应所述准备请求返回的确认回复消息,并根据收集的所述确认回复消息生成响应消息,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量;
[0023]所述第二服务器向所述第一服务器发送所述响应消息,以使所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量确定是否批准所述读写请求。
[0024]结合第二方面,在第一种可能的实现方式中,所述第二服务器向所述第一服务器发送所述响应消息,包括:
[0025]所述第二服务器检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否超过所述数据中心服务器的总数的二分之一;
[0026]若超过所述数据中心服务器的总数的二分之一,所述第二服务器向所述第一服务器发送所述响应消息。
[0027]结合第二方面,在第二种可能的实现方式中,所述第二服务器向所述第一服务器发送所述响应消息,包括:
[0028]所述第二服务器检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否达到所述数据中心服务器的总数;
[0029]若达到所述数据中心服务器的总数,所述第二服务器向所述第一服务器发送所述响应消息。
[0030]结合第二方面,在第三种可能的实现方式中,所述第二服务器向所述第一服务器发送所述响应消息,包括:
[0031]所述第二服务器检测当前时间是否超过预设的响应时间;
[0032]若超过所述预设的响应时间,所述第二服务器向所述第一服务器发送所述响应消肩、O
[0033]结合第二方面,或者第二方面的第一种可能的实现方式,或者第二方面的第二种可能的实现方式,或者第二方面的第三种可能的实现方式,在第四种可能的实现方式中,在所述第二服务器向所述第一服务器发送所述响应消息之后,所述方法还包括:
[0034]所述第二服务器接收所述第一服务器确定批准所述读写请求发送的读写指令,并向所述数据中心中允许所述客户端进行读写操作的服务器发送所述读写指令,所述读写指令包括所述实例号以及所述读写请求对应的实例内容,以使所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作;
[0035]所述第二服务器接收所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息,并将所述操作确认消息返回至所述第一服务器。
[0036]第三方面,本发明实施例提供了一种消息传递装置,所述装置设置于第一服务器中,包括:
[0037]第一接收模块,用于接收客户端发送的读写请求,并为所述读写请求分配用于标识所述读写请求的实例号;
[0038]第一发送模块,用于向所在广域网中的第二服务器发送携带所述实例号的准备请求;
[0039]第二接收模块,用于接收所述第二服务器返回的响应消息,所述响应消息为所述第二服务器根据所述第二服务器所在数据中心的服务器响应所述准备请求返回的确认回复消息而生成的,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量;
[0040]确定模块,用于根据所述响应消息中允许所述客户端进行读写操作的服务器的数量,确定是否批准所述读写请求;
[0041]第二发送模块,用于在所述确定模块确定批准所述读写请求时,根据所述读写请求,向所述允许所述客户端进行读写操作的服务器发送读写指令。
[0042]结合第三方面,在第一种可能的实现方式中,所述确定模块包括:
[0043]检测单元,用于根据所述响应消息,检测所述广域网中允许所述客户端进行读写操作的服务器的数量是否超过所述广域网中服务器数量的二分之一;
[0044]请求确定单元,用于当所述检测单元检测到所述广域网中允许所述客户端进行读写操作的服务器的数量超过所述广域网中服务器数量的二分之一时,确定批准所述读写请求。
[0045]结合第三方面,在第二种可能的实现方式中,所述第二发送模块包括:
[0046]指令发送单元,用于向所述第二服务器发送携带所述读写请求对应的实例内容及所述实例号的读写指令,以使所述第二服务器收集所述数据中心中允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息;
[0047]消息接收单元,用于接收所述第二服务器响应所述读写指令返回的所述操作确认消息。
[0048]结合第三方面,或者第三方面的第一种可能的实现方式,或者第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述装置还包括:
[0049]第一通知模块,用于当接收到所述广域网中允许所述客户端进行读写操作的服务器响应所述读写指令返回的操作确认消息时,将所述读写请求的操作成功消息通知给所述广域网中的服务器,所述操作确认消息为所述允许所述客户端进行读写操作的服务器根据所述读写请求对应的实例内容进行读写操作返回的;
[0050]第二通知模块,用于将针对所述读写请求的请求成功消息通知给所述客户端。
[0051]第四方面,本发明实施例还提供了另一种消息传递装置,所述装置设置于第二服务器中,包括:
[0052]请求处理模块,用于接收第一服务器发送的携带实例号的准备请求,并向所述第二服务器所在数据中心的服务器发送所述准备请求,所述实例号为所述第一服务器在接收到客户端发送的读写请求时为所述读写请求分配的;
[0053]生成模块,用于收集所述数据中心的服务器响应所述准备请求返回的确认回复消息,并根据收集的所述确认回复消息生成响应消息,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量;
[0054]发送模块,用于向所述第一服务器发送所述生成模块生成的响应消息,以使所述第一服务器根据所述响应消息中允许所述客户端进行读写操作的服务器的数量确定是否批准所述读写请求。
[0055]结合第四方面,在第一种可能的实现方式中,所述发送模块包括:
[0056]第一检测单元,用于检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否超过所述数据中心服务器的总数的二分之一;
[0057]第一发送单元,用于在所述第一检测单元的检测结果为超过所述数据中心服务器的总数的二分之一时,向所述第一服务器发送所述响应消息。
[0058]结合第四方面,在第二种可能的实现方式中,所述发送模块还包括:
[0059]第二检测单元,用于检测所述数据中心中允许所述客户端进行读写操作的服务器的数量是否达到所述数据中心服务器的总数;
[0060]第二发送单元,用于在所述第二检测单元的检测结果为达到所述数据中心服务器的总数时,向所述第一服务器发送所述响应消息。
[0061]结合第四方面,在第三种可能的实现方式中,所述发送模块还包括:
[0062]第三检测单元,用于检测当前时间是否超过预设的响应时间;
[0063]第三发送单元,用于当所述第三检测单元的检测结果为超过所述预设的响应时间时,向所述第一服务器发送所述响应消息。
[0064]结合第四方面,或者第四方面的第一种可能的实现方式,或者第四方面的第二种可能的实现方式,或者第四方面的第三种可能的实现方式,在第四种可能的实现方式中,所述装置还包括:
[0065]指令处理模块,用于接收所述第一服务器确定批准所述读写请求发送的读写指令,并向所述数据中心中允许所述客户端进行读写操作的服务器发送所述读写指令,所述读写指令包括所述实例号以及所述读写请求对应的实例内容,以使所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作;
[0066]消息处理模块,用于接收所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息,并将所述操作确认消息返回至所述第一服务器。
[0067]与现有技术相比,本发明实施例具有以下有益效果:
[0068]本发明实施例可在第一服务器接收到客户端请求时,向当前广域网中的第二服务器发送与该客户端请求对应的准备请求,根据该第二服务器响应该准备请求返回的响应消息中包含的允许该客户端进行读写操作的服务器的数量,确定出是否批准该客户端请求,从而实现将在广域网中传递的部分消息转移到局域网中进行传递,减少了广域网中消息传递的数量,并减轻了接收到请求的服务器的负载。
【附图说明】
[0069]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0070]图1是本发明实施例提供的网络架构图;
[0071]图2是本发明实施例提供的一种消息传递方法的流程示意图;
[0072]图3是本发明实施例提供的另一种消息传递方法的流程示意图;
[0073]图4是本发明实施例提供的又一种消息传递方法的流程示意图;
[0074]图5是本发明实施例提供的其中一种应用场景;
[0075]图6是本发明实施例提供的一种消息传递装置的结构示意图;
[0076]图7是本发明实施例提供的另一种消息传递装置的结构示意图;
[0077]图8是本发明实施例提供的又一种消息传递装置的结构示意图;
[0078]图9是本发明实施例提供的再一种消息传递装置的结构示意图;
[0079]图10是本发明实施例提供的一种服务器的结构示意图;
[0080]图11是本发明实施例提供的另一种服务器的结构示意图。
【具体实施方式】
[0081]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0082]在分布式系统中,为了保证系统中服务器状态的一致性,需要使用一致性算法,本发明实施例即可具体应用于分布式系统的服务器集群中,如图1所示,是本发明实施例提供的网络架构图。在广域网环境下,该集群中的服
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1