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

文档序号:9891391阅读:来源:国知局
数量的响应消息的过程中,第二服务器可在检测到数据中心中允许所述客户端进行读写操作的服务器的数量超过所述数据中心服务器的总数的二分之一时,向第一服务器发送一次该响应消息;并且,该第二服务器还可在检测到该数据中心中允许所述客户端进行读写操作的服务器的数量达到所述数据中心服务器的总数时,或者在检测到当前时间超过预设的响应时间时,再向第一服务器发送一次响应消息,以便于第一服务器根据第一次接收到的响应消息,检测到当前允许所述客户端进行读写操作的服务器的数量未超过所述广域网服务器数量的二分之一时,还可根据该再次发送的响应消息中包含的允许所述客户端进行读写操作的服务器的数量再次进行检测,从而确定是否批准该读写请求。具体的,该第二服务器还可在该预设的响应时间范围内检测到该数据中心中允许所述客户端进行读写操作的服务器的数量达到所述数据中心服务器的总数时,再次向第一服务器发送该响应消息;否则,则第二服务器在当前时间超过该响应时间时,再次向第一服务器发送该响应消息。该当前时间即在接收到第一服务器发出的准备请求之后经过的时间。
[0129]进一步的,在所述第二服务器向所述第一服务器发送所述响应消息之后,所述第二服务器接收所述第一服务器确定批准所述读写请求发送的读写指令,并向所在数据中心中允许所述客户端进行读写操作的服务器发送所述读写指令,所述读写指令包括所述实例号以及所述读写请求对应的实例内容,以使所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作;所述第二服务器接收所述允许所述客户端进行读写操作的服务器根据所述实例内容进行读写操作返回的操作确认消息,并将所述操作确认消息返回至所述第一服务器。
[0130]具体实施例中,第一服务器根据允许所述客户端进行读写操作的服务器的数量确定批准该读写请求之后,可向第二服务器发送包括该读写请求对应的实例内容及实例号的读写指令。该第二服务器接收该读写指令,并向该第二服务器所在数据中心的允许所述客户端进行读写操作的服务器(即返回了确认回复消息的服务器)转发该读写指令,以指示所述允许所述客户端进行读写操作的服务器根据该实例内容进行读写操作。第二服务器收集所述允许所述客户端进行读写操作的服务器返回的操作确认消息,并将该操作确认消息返回至所述第一服务器,以表明该允许所述客户端进行读写操作的服务器已完成该读写操作,使得第一服务器确认对该读写请求对应的“选举”结束。
[0131]实施本发明实施例第二服务器可在接收到第一服务器根据接收的客户端请求而发送的准备请求时,向该第二服务器所在数据中心的服务器转发该准备请求,并根据该数据中心的服务器响应该准备请求返回的确认回复消息而生成响应消息,将包含允许该客户端进行读写操作的服务器的数量的响应消息发送至第一服务器,以使该第一服务器根据该允许该客户端进行读写操作的服务器的数量确定是否批准该客户端请求,从而减少了广域网中消息传递的数量,并减轻了接收到请求的服务器负载。
[0132]请参见图5,是本发明实施例提供的其中一种应用场景,具体的,如图5所示的应用场景中,广域网中分布存在数据中心1、数据中心2以及数据中心3,该数据中心I中的某一服务器接收到客户端I发送的读写请求成为该广域网中的领导者,即第一服务器。同时,数据中心2和数据中心3中分别部署存在协调者2和协调者3 (该协调者2和协调者3即为广域网中的第二服务器)。除此之外,该数据中心I中还部署有服务器I和服务器2,数据中心2中有服务器3和服务器4,数据中心3中有服务器5和服务器6。该广域网中的服务器针对该客户端发送的读写请求进行“选举”,该“选举”过程包括准备阶段和批准阶段。
[0133]I)准备阶段:
[0134]客户端I发送的读写请求被数据中心I中的服务器接收,该接收请求的服务器成为领导者(即第一服务器),负责主持该请求对应实例的选举过程。领导者给请求分配一个实例号,该实例号在该第一服务器所在的广域网中唯一确定,领导者给不同的客户端请求分配不同的实例号。领导者发送携带该实例号的准备请求给协调者2和协调者3,还有数据中心I中的其它服务器(服务器I和服务器2)。协调者2和协调者3接收到领导者发送的准备请求之后,协调者2将准备请求发送给服务器3和4,协调者3将请求发送给服务器5和60
[0135]服务器I至服务器6接收到准备请求,并回复准备请求。服务器I和服务器2将请求直接回复给领导者,比如响应该准备请求并返回确认回复消息至领导者;服务器3和服务器4回复给协调者2,服务器5和服务器6回复给协调者3。
[0136]根据实例号的分配的原则,在系统不出现错误的情况下,服务器会接受该准备请求,并回复确认回复消息给所在数据中心的协调者。例如,服务器3和4会返回确认回复消息给协调者2。
[0137]协调者收到回复,即收到所在数据中心的服务器响应该准备请求返回的确认回复消息时,可对回复进行统计和处理。具体的,当协调者收到协调者所在数据中心内多数派(大于该数据中心总服务器数量的二分之一)返回的确认回复消息时,协调者立刻将响应消息回复给领导者,该响应消息中记录有收到的确认回复消息的服务器(即允许所述客户端进行读写操作的服务器)的数量和/或标识;如果协调者没有收到所在数据中心内多数派的确认回复消息,那么协调者不回复响应消息给领导者,而是继续等待。
[0138]例如,在可选的实施例中,假设协调者2收到服务器3返回的确认回复消息,协调者3收到服务器5返回的确认回复消息,并且协调者2和3自身也确认了这条准备请求,那么协调者2和协调者3所在的数据中心超过半数的服务器都确认了这条准备请求,协调者2和协调者3分别将包含允许所述客户端进行读写操作的服务器的数量和/或标识的响应消息发送给领导者,通知领导者该数据中心2和数据中心3内各有两台服务器确认了准备请求,协调者2和协调者3记录各自所在的数据中心中允许所述客户端进行读写操作的服务器的标识。与此同时,领导者所在数据中心I中包括领导者自身共3台服务器(即领导者、服务器I和服务器2)都确认了这条准备请求。那么,总共有9台服务器参与了该读写请求对应的实例的选举工作,并由有2+2+3 = 7台服务器确认了准备请求,超过广域网中服务器总数的二分之一,则领导者可确定批准该读写请求,并进入到下一阶段,即批准阶段。若领导者后续接收到协调者在检测到响应时间超时或者该数据中心中允许所述客户端进行读写操作的服务器的数量达到所述数据中心服务器的总数时再次发送的响应消息,则领导者可忽略该再次发送的响应消息。
[0139]进一步的,该协调者还可在检测所在数据中心中允许所述客户端进行读写操作的服务器的数量达到所述数据中心服务器的总数时,向领导者发送当前收集得到的包含该协调者所在数据中心中允许所述客户端进行读写操作的服务器的数量的响应消息。或者,还可预先设置一个响应时间。协调者如果检测到当前时间,即在接收到领导者发出的准备请求之后经过的时间超过该预设的响应时间如5分钟时,则可将当前收集得到的包含该协调者所在数据中心中允许所述客户端进行读写操作的服务器的数量的响应消息发送给领导者,无论这个数量是否超过该数据中心服务器总数的二分之一。该预设的响应时间可以为领导者通知的,比如该预设的响应时间可携带在该准备请求中;或者该预设的响应时间可为协调者预先设置的,本发明实施例不做限定。
[0140]例如,在可选的实施例中,如果数据中心3中协调者3没有收到服务器5和6的返回的确认回复消息,只有协调者3确认了该准备请求,那么协调者3将不会回复响应消息给领导者。同样,数据中心2中也仅仅只有协调者2确认了准备请求,数据中心I中3台服务器都确认了准备请求。领导者检测到当前只有3台服务器(即本地数据中心的领导者、月艮务器I和服务器2)确认了准备请求,无法达到多数派。那么这时领导者会继续等待。协调者继续收集确认回复消息,若收集消息的时间即协调者在接收到该准备请求后经过的时间超过该预设的响应时间,则协调者将当前收到的所有返回确认回复消息的服务器的数量即允许所述客户端进行读写操作的服务器的数量回复给领导者,这样领导者收到了协调者2和协调者3的回复的响应消息,检测得到当前允许所述客户端进行读写操作的服务器的数量增加了协调者2和协调者3这两台,使得允许所述客户端进行读写操作的服务器的总数达到5台,达到多数派,可以进入批准阶段。
[0141]再例如,如果数据中心3中协调者3没有收到服务器5和6的返回的确认回复消息,只有协调者3确认了该准备请求,那么协调者3将不会回复响应消息给领导者;而数据中心2中协调者2和服务器3都确认了准备请求,超过数据中心2中服务器总数的一半,协调者2向领导者发送包含允许所述客户端进行读写操作的服务器的数量和/或标识的响应消息,通知领导者该数据中心2内有两台服务器确认了准备请求;而数据中心I中有领导者和服务器I确认了准备请求。领导者检测到当前只有4台服务器(即本地数据中心I的领导者、服务器1、数据中心2的协调者2和服务器3)确认了准备请求,无法达到多数派,那么这时领导者会继续等待。若协调者2很快检测到服务器4也确认了准备请求,即协调者2检测到所在数据中心2中允许所述客户端进行读写操作的服务器的数量达到所述数据中心服务器的总数(3台),即该数据中心中所有服务器都确认了准备请求,则再次向领导者发送包含允许所述客户端进行读写操作的服务器的数量(即3台)的响应消息,这样领导者检测得到当前允许所述客户端进行读写操作的服务器的数量达到5台,即增加了服务器4,达到多数派,可以进入批准阶段。
[0142]2)批准阶段:
[0143]进入批准阶段之后,和准备阶段类似,领导者将该读写请求对应的实例内容和实例号作为一个读写指令发送给协调者,由协调者发送给准备阶段返回了确认回复消息即允许所述客户端进行读写操作的服务器;领导者还将该读写指令发送给本地数据中心返回了确认回复消息的服务器。即领导者在协调者的参与下,将读写指令发送给准备阶段所有返回了确认回复消息的服务器,即所有参与者。
[0144]参与者在不发生冲突的情况下,会回复操作确认消息确认该读写指令。回复消息的过程如下:和领导者处于一个数据中心的服务器将回复如操作确认消息直接发送给领导者;其它数据中心的服务器将回复发送给本数据中心内的协调者,协调者收集该协调者所在数据中心的参与者的回复,再将回复发送给领导者。领导者收到了多数派(服务器数量超过该广域网中服务器的二分之一)的确认回复之后,一个实例的选举过程结束,领导者回复客户端请求成功消息,并且通过协调者向该广域网中的所有服务器发送本实例最终决议的内容,即批准该客户端发送的读写请求。
[0145]举例来说,假设之前在准备阶段有服务器1、服务器2、服务器3、服务器5和协调者2、协调者3返回了确认回复消息,那么在批准阶段,领导者将读写指令发送给服务器1、服务器2和协调者2、协调者3,协调者2将读写指令转发给服务器3,协调者3将读写指令转发给服务器5。在收到确认接受该读写指令的回复即操作确认消息后,协调者2和协调者3将该操作确认消息发送给领导者,同时服务器I和服务器2也将操作确认消息发送给领导者,领导者在确认多数派已经接受了读写指令,即返回操作确认消息的服务器数量超过该广域网中服务器总数的二分之一时,实例的“选举”结束。领导者回复客户端请求成功消息,并将实例的结果借助协调者2和3发送给广域网中各数据中心的所有服务器。
[0146]本发明实施例通过设置将协调者即第二服务器作为各个数据中心的消息代理,避免了现有Paxos算法广泛采用的垮局域网的发送方式,使得减少了广域网中消息的数量,从而减少了错误发生的概率,增加了系统的稳定性。因为正常情况下数据中心内部的网络状况是非常好的,而广域网相对复杂。通过设置该协调者的角色,我们由协调者向数据中心内部的服务器发送消息,避免了由领导者即第一服务器向所有服务器发送消息所造成的不必要的通信,并且该领导者的负载也被分散到多台服务器,进一步提高了系统的稳定性和吞吐率。
[0147]请参见图6,是本发明实施例提供的一种消息传递装置的结构示意图,本发明实施例的所述装置可具体设置于第一服务器中,具体的,本发明实施例的所述装置包括:第一接收模块11、第一发送模块12、第二接收模块13、确定模块14以及第二发送模块15。其中,
[0148]所述第一接收模块11,用于接收客户端发送的读写请求,并为所述读写请求分配用于标识所述读写请求的实例号。
[0149]需要说明的是,该第一服务器可以为第一服务器所在广域网中的任意一台接收到客户端请求的服务器,该服务器在接收到客户端请求时,即可作为该广域网中的“领导者”,并发起对该客户端请求的选举过程,从而确定是否批准该客户端请求。
[0150]具体实施例中,第一接收模块11在接收到客户端请求时,即可为该客户端请求分配一个实例号,该实例号在该第一服务器所在的广域网中唯一确定,用于标识该接收到的客户请求。具体的,该客户端请求可具体为客户端发送读请求或写请求,本发明实施例不做限定。
[0151]所述第一发送模块12,用于向所在广域网中的第二服务器发送携带所述实例号的准备请求。
[0152]所述第二接收模块13,用于接收所述第二服务器返回的响应消息,所述响应消息为所述第二服务器根据所述第二服务器所在数据中心的服务器响应所述准备请求返回的确认回复消息而生成的,所述响应消息包括所述数据中心中允许所述客户端进行读写操作的服务器的数量。
[0153]需要说明的是,该第二服务器可从广域网的每个数据中心内部挑选得出,每个数据中心的第二服务器可以为一个或多个,本发明实施例不做限定。具体的,可选取网卡好,可以和数据中心内部所有服务器连通并且可以连接广域网中其它所有数据中心的服务器作为该第二服务器。
[0154]具体实施例中,该第一接收模块11在为客户端发送的读写请求分配实例号之后,即通过第一发送模块12可向该第一服务器所在的本地数据中心的各服务器发送该携带配置的实例号的准备请求,并向该第一服务器所在广域网中设置的第二服务器发送该准备请求,以使该第二服务器向该第二服务器所在数据中心的服务器转发该准备请求,并收集该第二服务器所在数据中的服务器响应所述准备请求返回的确认回复消息,以对客户端请求进行选举。
[0155]可选的,该准备请求还可包括该第一服务器的标识、该客户端请求对应的实例内容等信息。
[0156]在第一发送模块12发送准备请求之后,可通过第二接收模块13接收该第二服务器响应该准备请求返回的响应消息。其中,所述响应消息为所述第二服务器根据所述第二服务器所在数据中心的服务器响应所述准备请求返回的确认回复消息而生成的,该响应消息包括该第二服务器所在数据中心中允许所述客户端进行读写操作的服务器(即返回确认回复消息的服务器)的数量,即“选举”通过的服务器数量。
[0157]所述确定模块14,用于根据所述响
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1