本发明涉及通信技术领域,特别是涉及一种消息同步方法及数据中心。
背景技术:
随着通信技术的不断发展,全球数据中心的搭建及使用受到广泛的关注。
目前,在全球数据中心中的每一数据中心根据其所在区域,由该数据中心处理该区域中各个客户端发送的消息。当任意一个数据中心全线停用或宕机时,将由与客户端所在区域距离较近或网络性能较好的其他数据中心承接该数据中心的全部业务,从而保证通信的正常进行。因此,为了保证客户端发送的消息可以被及时处理,如何保障全球数据中心中每一数据中心所存储的消息的一致性,成为其他数据中心承接全线停用或宕机的数据中心全部业务的重要前提。
技术实现要素:
本发明实施例的目的在于提供一种消息同步方法及数据中心,以提高不同数据中心间的消息的一致性。具体技术方案如下:
本发明实施例提供了一种消息同步方法,应用于全球数据中心中的目标数据中心,所述目标数据中心包括长连接服务器和业务服务器,所述方法包括:
所述长连接服务器在与客户端建立长连接后,接收所述客户端发送的业务消息,并将所述业务消息路由到对应的目标业务服务器;
所述目标业务服务器对所述业务消息进行预处理得到第一待同步消息,并将所述第一待同步消息存储到第一消息队列中,以使所述全球数据中心中的其他数据中心从所述第一消息队列中获得所述第一待同步消息;其中,所述目标数据中心与所述其他数据中心处于同一虚拟局域网。
可选的,所述目标数据中心还包括消息存储设备;
所述方法还包括:
当业务服务器监听到所述其他数据中心的第二消息队列中存在第二待同步消息时,从所述第二消息队列中获取所述第二待同步消息,并将所述第二待同步消息存储到所述消息存储设备中。
可选的,所述方法还包括:
所述业务服务器通过所述长连接服务器,将获取到的第二待同步消息推送至所述客户端。
可选的,所述业务服务器通过所述长连接服务器,将获取到的第二待同步消息推送至所述客户端的步骤,包括:
当所述客户端与所述长连接服务器之间的长连接断开后,若所述客户端在预设时长内重新与所述长连接服务器建立长连接,则所述业务服务器通过所述长连接服务器,将目标时间段内从所述其他数据中心获得的第三待同步消息推送至所述客户端;所述目标时间段为所述客户端与所述长连接服务器间长连接断开至重新建立所对应的时间段。
可选的,所述第一消息队列为卡夫卡kafka消息队列;
所述方法还包括:
若所述kafka消息队列中的第一待同步消息同步至每一其他数据中心后,则所述业务服务器丢弃所述kafka消息队列中的第一待同步消息。
可选的,所述目标数据中心还包括任务服务器;
所述方法还包括:
当所述业务服务器对目标消息的处理时长大于预设时长阈值时,所述任务服务器对所述目标消息进行处理,所述目标消息包括所述业务消息和待同步的消息。
本发明实施例还提供了一种数据中心,所述数据中心包括长连接服务器和业务服务器:
所述长连接服务器,用于在与客户端建立长连接后,接收所述客户端发送的业务消息,并将所述业务消息路由到对应的目标业务服务器;
所述目标业务服务器,用于对所述业务消息进行预处理得到第一待同步消息,并将所述第一待同步消息存储到第一消息队列中,以使全球数据中心中的其他数据中心从所述第一消息队列中获得所述第一待同步消息;其中,所述数据中心与所述其他数据中心处于同一虚拟局域网。
可选的,所述数据中心还包括消息存储设备;
所述业务服务器,用于在监听到所述其他数据中心的第二消息队列中存在第二待同步消息时,从所述第二消息队列中获取所述第二待同步消息,并将所述第二待同步消息存储到所述消息存储设备中。
可选的,所述业务服务器,还用于通过所述长连接服务器,将获取到的第二待同步消息推送至所述客户端。
可选的,所述业务服务器,具体用于当所述客户端与所述长连接服务器之间的长连接断开后,若所述客户端在预设时长内重新与所述长连接服务器建立长连接,则所述业务服务器通过所述长连接服务器,将目标时间段内从所述其他数据中心获得的第三待同步消息推送至所述客户端;所述目标时间段为所述客户端与所述长连接服务器间长连接断开至重新建立所对应的时间段。
可选的,所述第一消息队列为卡夫卡kafka消息队列;
所述业务服务器,还用于若所述kafka消息队列中的第一待同步消息同步至每一其他数据中心后,则丢弃所述kafka消息队列中的第一待同步消息。
可选的,所述数据中心还包括任务服务器;
所述任务服务器,用于当所述业务服务器对目标消息的处理时长大于预设时长阈值时,对所述目标消息进行处理,所述目标消息包括所述业务消息和待同步的消息。
本发明实施例有益效果:
本发明实施例提供的消息同步方法及数据中心,由于全球数据中心中的每一数据中心均处于同一虚拟局域网中,当目标数据中心中的业务服务器将待同步消息存储到消息队列中,其他数据中心可以从该消息队列中同步获得待同步消息,实现不同数据中心中消息的同步,解决了不同数据中心存储的消息不一致的问题,提高了不同数据中心间的消息的一致性。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的消息同步方法的第一种流程示意图;
图2为本发明实施例提供的消息同步方法的第二种流程示意图;
图3为本发明实施例提供的消息同步方法的第三种流程示意图;
图4为本发明实施例提供的消息同步方法的第四种流程示意图;
图5为本发明实施例提供的消息同步方法的第五种流程示意图;
图6为本发明实施例提供的全球数据中心的一种结构示意图;
图7为本发明实施例提供的数据中心的一种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决不同数据中心中存储的消息不一致的问题,本发明实施例提供了一种消息同步方法。该方法可以应用于全球数据中心中的目标数据中心,该目标数据中心为全球数据中心中的任一数据中心,并不起任何限定作用。在本发明实施例提供的方法中,目标数据中心中的长连接服务器在与客户端建立长连接后,接收客户端发送的业务消息,并将业务消息路由到对应的目标业务服务器,目标业务服务器对业务消息进行预处理得到第一待同步消息,并将第一待同步消息存储到第一消息队列中,以使全球数据中心中的其他数据中心从第一消息队列中获得第一待同步消息;其中,目标数据中心与其他数据中心处于同一虚拟局域网。
通过本发明实施例提供的方法,由于全球数据中心中的每一数据中心均处于同一虚拟局域网中,当目标数据中心中的业务服务器将待同步消息存储到消息队列中,其他数据中心可以从该消息队列中同步获得待同步消息,实现不同数据中心中消息的同步,解决了不同数据中心存储的消息不一致的问题,提高了不同数据中心间的消息的一致性。
下面通过具体的实施例,对本发明实施例进行说明。
如图1所示,图1为本发明实施例提供的消息同步方法的第一种流程示意图。该方法应用于全球数据中心中的目标数据中心,该目标数据中心包括长连接服务器和业务服务器,具体包括以下步骤。
步骤s101,长连接服务器在与客户端建立长连接后,接收客户端发送的业务消息,并将业务消息路由到对应的目标业务服务器。
在本步骤中,目标数据中心所对应的管理区域中的客户端可以与目标数据中心中的长连接服务器建立长连接。在客户端与长连接服务器建立长连接后,长连接服务器可以接收客户端发送的业务消息。长连接服务器可以根据接收到的业务消息所对应的业务类别,将接收到的业务消息路由到对应的目标业务服务器。
一个可选的实施例中,上述客户端与长连接服务器之间长连接的建立过程,具体可以表示为:客户端可以根据其所在的区域,向数据中心发送互联网协议(internetprotocol,ip)地址获取请求,该数据中心一般是根据物理距离和网络传输速率所确定出的性能最佳的数据中心,该数据中心在接收到该ip地址获取请求后,可以向客户端发送一ip地址列表。该ip地址列表中包括多个数据中心中长连接服务器所对应的ip地址,每一ip地址可以按照长连接服务器对应的性能进行排序。客户端优先对ip地址列表中性能最佳的ip地址进行访问,从而与该ip地址所对应的长连接服务器建立长连接。
在上述长连接建立过程中,当性能最佳的数据中心无法访问时,如该数据中心宕机,客户端可以访问下一ip地址,从而与该ip地址所对应的长连接服务器建立长连接。也就是在性能最佳的数据中心异常时,由性能次之的数据中心承接异常数据中心的全部业务。
在本发明实施例中,上述全球数据中心的每一数据中心中可以包括多个业务服务器。以应用场景为即时通讯的全球数据中心为例,每一数据中心中至少可以包括直播业务服务器、单聊业务服务器和群聊业务服务中心。不同业务类别的业务服务服务器分别处理对应的业务消息。例如,直播业务服务器可以处理直播过程中的各种直播消息。单聊业务服务器可以客户端中聊天软件等产生的单聊消息。群聊业务服务器可以客户端中聊天软件等产生的群聊消息。
上述长连接服务器可以将接收到的业务消息路由到对应的目标业务服务器,具体可以表示为:长连接服务可以根据业务消息所对应的业务类别,将该业务消息发送给对应业务类别的目标业务服务器。例如,长连接服务器可以将直播消息路由给直播业务服务器,此时,目标业务服务器为直播业务服务器。
一个可选的实施例中,上述长连接服务器所接收到的业务消息中可以携带有该业务消息所对应的业务类别标识。长连接服务器可以依据该业务类别标识,将路由到目标业务服务器。
上述业务消息中还可以携带有其他信息,如该业务消息的字体颜色,格式等信息。
步骤s102,目标业务服务器对业务消息进行预处理得到第一待同步消息,并将第一待同步消息存储到第一消息队列中,以使全球数据中心中的其他数据中心从第一消息队列中获得第一待同步消息;其中,目标数据中心与其他数据中心处于同一虚拟局域网。
在本步骤中,目标业务服务器在接收上述业务消息后,可以对接收到的业务消息进行预处理,得到第一待同步消息。目标业务服务器可以将第一待同步消息存储到第一消息队列中。全球数据中心中的每一其他数据中心可以实时对目标数据中心的第一消息队列进行监听。当监听到第一消息队列中存在待同步的消息,即第一待同步消息时,每一其他数据中心可以从第一消息队列中获得待同步的消息。
上述其他数据中心从第一消息队列中获得第一待同步消息的具体过程可参照下文描述,在此不作具体说明。
一个可选的实施例中,上述预处理过程可以为敏感词检查,不文明用语检查等处理过程。以敏感词检查为例,业务服务器在接收到业务消息后,可以检查该业务消息中是否包含预设的敏感词。若包含预设的敏感词,则对该业务消息中的敏感词进行屏蔽处理。若不包含预设的敏感词,则对该业务消息进行处理。上述预处理过程可以根据具体需求进行设定,在此不作具体限定。
在本发明实施例中,经过上述预处理后,第一待同步消息可以与业务消息相同,也可以与业务消息不同。
一个可选的实施例中,上述第一消息队列可以为kafka消息队列。除此以外,第一消息队列还可以为rabbitmq(rabbitmessagequeue)或activemq(activemessagequeue)等消息队列。其中,rabbitmq是实现了高级消息队列协议(amqp)的开源消息代理软件,activemq是apache软件基金会研发的开放源代码消息中间件。在此,对上述第一消息队列不作具体限定。
在本发明实施例中,上述目标数据中心与其他数据中心处于同一虚拟局域网,具体可以表示为:在全球数据中心的每一数据中心之间搭建有高速通道(expressconnect)或者网络专线,从而使得每一数据中心处于同一虚拟局域网。
采用图1所示的方法,由于全球数据中心中的每一数据中心均处于同一虚拟局域网中,当目标数据中心中的业务服务器将待同步消息存储到消息队列中,其他数据中心可以从该消息队列中同步获得待同步消息,实现不同数据中心中消息的同步,解决了不同数据中心存储的消息不一致的问题,提高了不同数据中心间的消息的一致性。
一个可选的实施例中,上述目标数据中心还可以包括消息存储设备。目标业务服务器在得到上述第一待同步消息后,可以将该第一待同步消息存储到消息存储设备。
一个可选的实施例中,上述消息存储设备可以包括第一存储设备和第二存储设备。其中,第一存储设备的存储时长小于第二存储设备。例如,上述第一存储设备可以为远程字典服务(remotedictionaryserver,redis)数据库所对应的消息存储设备。第二存储设备为mongo数据库所对应的消息存储设备。其中,mongo数据库为一种基于分布式文件存储的数据库。
每一业务服务器可以将第一待同步消息存储到上述第一存储设备中,也可以将第一待同步消息存储到上述第二存储设备中。
一个可选的实施例中,基于图1所示的方法,本发明实施例还提供了一种消息同步方法。如图2所示,图2为本发明实施例提供的消息同步方法的第二种流程示意图。该方法包括以下步骤。
步骤s201,长连接服务器在与客户端建立长连接后,接收客户端发送的业务消息,并将业务消息路由到对应的目标业务服务器。
步骤s202,目标业务服务器对业务消息进行预处理得到第一待同步消息,并将第一待同步消息存储到第一消息队列中,以使全球数据中心中的其他数据中心从第一消息队列中获得第一待同步消息;其中,目标数据中心与其他数据中心处于同一虚拟局域网。
上述步骤s201-步骤s202与上述步骤s101-步骤s102相同。
步骤s203,业务服务器监听其他数据中心的第二消息队列中是否存在第二待同步消息。若是,则执行步骤s204。
在本步骤中,目标数据中心中的每一业务服务器可以监听全球数据中心中每一其他数据中心的第二消息队列中是否存在第二待同步消息。
上述第二待同步消息的生成方式与上述第一待同步消息的生成方式相同,在此不作具体说明。
步骤s204,业务服务器从第二消息队列中获取第二待同步消息,并将第二待同步消息存储到消息存储设备中。
在本步骤中,当监听到其他数据中心的第二消息队列中存在第二待同步消息时,业务服务器可以从第二消息队列中获取第二待同步消息,并将获取到的待同步消息存储到目标数据中心的消息存储设备中。
一个可选的实施例中,在监听到其他数据中心的第二消息队列中不存在第二待同步消息时,业务服务器将不会进行待同步的消息的获取过程。也就是业务服务器不会进行消息同步过程。
上述步骤s102中其他数据中心从第一消息队列中获得第一待同步消息的过程可参照上述步骤s203-步骤s204,在此不作具体说明。
通过图2所示的方法,目标数据中心可以及时、准确的将其他数据中心中的待同步消息同步本地,实现不同数据中心中消息的同步,提高了消息同步的及时性以及准确性,保证了不同数据中心中消息的一致性。
一个可选的实施例中,根据图2所示的方法,本发明实施例还提供了一种消息同步方法。如图3所示,图3为本发明实施例提供的消息同步方法的第三种流程示意图。该方法包括以下步骤。
步骤s301,长连接服务器在与客户端建立长连接后,接收客户端发送的业务消息,并将业务消息路由到对应的目标业务服务器。
步骤s302,目标业务服务器对业务消息进行预处理得到第一待同步消息,并将第一待同步消息存储到第一消息队列中,以使全球数据中心中的其他数据中心从第一消息队列中获得第一待同步消息;其中,目标数据中心与其他数据中心处于同一虚拟局域网。
步骤s303,业务服务器监听其他数据中心的第二消息队列中是否存在第二待同步消息。若是,则执行步骤s304。
步骤s304,业务服务器从第二消息队列中获取第二待同步消息,并将第二待同步消息存储到消息存储设备中。
上述步骤s301-步骤s304与上述步骤s201-步骤s204相同。
步骤s305,业务服务器通过长连接服务器,将获取到的第二待同步消息推送至客户端。
在本步骤中,业务服务器在从其他数据中心中获得第二待同步消息后,可以通过长连接服务器将第二待同步消息推送给客户端。也就是业务服务器将第二待同步消息发送给长连接服务器。长连接服务器将接收到的第二待同步消息转发给客户端。
一个可选的实施例中,客户端在接收到上述第二待同步消息后,可以显示该第二待同步消息。例如,上述第二同步消息为直播消息。当客户端在接收到直播消息时,可以将该直播消息显示在客户端中直播软件的显示界面中。
采用图3所示的方法,业务服务器通过长连接服务器将第二待同步数据发送给客户端,使得客户端可以及时接收并展示其他数据中心对应管理区域中的其他客户端所发送的消息,实现不同区域的客户端间的消息传输。
一个可选的实施例中,在客户端与长连接服务器长连接过程中,可能由于网络问题或者客户端用户的操作问题等因素,导致客户端和长连接服务器之间的连接断开。为了保证消息传输的稳定性和准确性,上述步骤s303,业务服务器通过长连接服务器,将获取到的第二待同步消息推送至客户端,具体可以表示为:
当客户端与长连接服务器之间的长连接断开后,若客户端在预设时长内重新与长连接服务器建立长连接,则业务服务器通过长连接服务器,将目标时间段内从其他数据中心获得的第三待同步消息推送至客户端;目标时间段为客户端与长连接服务器间长连接断开至重新建立所对应的时间段。
上述预设时长可以根据用户需求以及应用场景等进行设定,在此不作具体限定。
在本发明实施例中,业务服务器将上述目标时间段内的待同步消息推送给上述客户端,使得客户端可以接收到目标时间段内其他客户端所发送的待同步消息,降低了目标时间段内客户端未接收到待同步消息丢失的概率,提高了通信的稳定性。
一个可选的实施例中,当上述第一消息队列为上述kafka消息队列时,根据上述图1所示的方法,本发明实施例还提供了一种消息同步方法。如图4所示,图4为本发明实施例提供的消息同步方法的第四种流程示意图。该方法包括以下步骤。
步骤s401,长连接服务器在与客户端建立长连接后,接收客户端发送的业务消息,并将业务消息路由到对应的目标业务服务器。
步骤s402,目标业务服务器对业务消息进行预处理得到第一待同步消息,并将第一待同步消息存储到第一消息队列中,以使全球数据中心中的其他数据中心从第一消息队列中获得第一待同步消息;其中,目标数据中心与其他数据中心处于同一虚拟局域网。
上述步骤s401-步骤s402与上述步骤s101-步骤s102相同。
步骤s403,若kafka消息队列中的第一待同步消息同步至每一其他数据中心后,则业务服务器丢弃kafka消息队列中的第一待同步消息。
在本步骤中,目标数据中心在确定kafka消息队列中的第一待同步消息已经同步到全球数据中心的每一其他数据中心后,业务服务器可以丢弃kafka消息队列中的第一待同步消息。也就是对kafka消息队列中的第一待同步消息进行出队操作。
在本发明实施例中,上述kafka消息队列会自动记录消息队列中每一消息的状态,即记录每一消息是否被消费,业务服务器可以根据第一待同步消息的状态,确定第一待同步消息是否同步到每一其他数据中心。若是,则可以丢弃第一待同步消息。
在现有数据同步过程中,由于网络的不稳定性以及传输链路的抖动可能会导致数据的不一致,为了解决数据不一致的问题,在现有数据同步过程中采用的确认字符(acknowledgecharacter,ack)机制,即接收端在接收到发送端发送的数据后,通过向发送端发送ack消息,从而使得发送端确认接收端已经接收到该数据,这将使得数据同步过程耗时过长。相比于现有数据同步过程所采用的ack机制,在本发明实施例中,利用kafka消息队列中消息不消费不消失的特性,实现不同数据中心中消息的同步,有效缩短了消息同步所耗费的时间,提高了消息同步的效率。
上述rabbitmq消息队列以及activemq消息队列同样具备消息不消费不消失的特性,在此不作具体说明。
一个可选的实施例中,上述目标数据中心还可以包括任务服务器。根据图1所示的方法,本发明实施例还提供了一种消息同步方法。如图5所示,图5为本发明实施例提供的消息同步方法的第五种流程示意图。该方法包括以下步骤。
步骤s501,长连接服务器在与客户端建立长连接后,接收客户端发送的业务消息,并将业务消息路由到对应的目标业务服务器。
步骤s502,目标业务服务器对业务消息进行预处理得到第一待同步消息,并将第一待同步消息存储到第一消息队列中,以使全球数据中心中的其他数据中心从第一消息队列中获得第一待同步消息;其中,目标数据中心与其他数据中心处于同一虚拟局域网。
上述步骤s501-步骤s502与上述步骤s101-步骤s102相同。
步骤s503,任务服务器确定业务服务器对目标消息的处理时长是否大于预设时长阈值。若是,则执行步骤s504。
在本步骤中,数据中心中的任务服务器可以将业务服务器对目标消息的处理时长与预设时长阈值进行比较,从而确定对目标消息的处理时长是否大于预设时长阈值。
上述处理时长可以为业务服务器对目标消息进行处理的真实时长,也可以为业务服务器处理目标消息的预估时长。其中,预估时长可以是根据目标消息的数据量的大小、业务类别等进行预估得到的。在此,对上述处理时长不作具体限定。
上述目标消息可以包括上述业务消息和待同步的消息,如上述第一待同步消息和上述第二待同步消息。
步骤s504,任务服务器对目标消息进行处理。
在本步骤中,当业务服务器对目标消息的处理时长大于预设时长阈值时,任务服务器可以对目标消息进行处理。也就是任务服务器可以承接业务服务器的业务,对目标消息进行处理。
例如,当目标消息为上述业务消息时,任务服务器可以对业务消息进行预处理,从而得到第一待同步数据,并将第一待同步数据存储到上述消息存储设备或第一消息队列。再例如,当目标消息为上述第二待同步消息时,任务服务器可以从其他数据中心的第二消息队列中获取第二待同步消息,并对第二待同步消息进行存储或推送。在此,对任务服务器对目标消息的处理过程不作具体说明。
在本发明实施例中,通过任务服务器承接业务服务器的耗时较长的工作,从而缓解了业务服务器的压力,提高了业务服务器的工作效率,保证了数据中心的正常运行。
为便于理解,下面结合图6对本发明实施提供的消息同步方法进行说明。图6为本发明实施例提供的全球数据中心的一种结构示意图。在全球数据中心中可以包括多个数据中心,在图6所示的示意图中,为便于描述仅示出数据中心1和数据中心2。其中,数据中心1和数据中心2位于同一虚拟局域网。客户端1与长连接服务器1之间长连接,客户端2与长连接服务器2之间长连接。业务服务器1和业务服务器3为单聊业务服务器,业务服务器2和业务服务器4为群聊业务服务器。假设客户端1的用户1与客户端2的用户2通过同一聊天软件进行聊天。
用户1在客户端1的聊天界面中输入消息1。客户端1可以将消息1发送给长连接服务器1。长连接服务器1在接收到消息1后,可以确定消息1所对应的业务类别为单聊业务,长连接服务器1可以将消息1路由到业务服务器1。业务服务器1可以对消息1进行预处理。假设预处理后得到消息仍为消息1,即上述第一待同步消息为消息1。业务服务器1可以将消息1存储到消息存储设备1以及第一消息队列中。当业务服务器1的对消息1的处理时长大于预设时长阈值时,可以由任务服务器1对消息1进行处理。例如,任务服务器1可以将消息1存储到消息存储设备1以及第一消息队列中。
当业务服务器3或任务服务器2监听到第一消息队列中存在待同步的消息时,即监听到第一消息队列中存在消息1时,可以从第一消息队列中获取消息1。业务服务器3或任务服务器2可以将消息1存储到消息存储设备2中,并将消息1发送给长连接服务器2。长连接服务器2将消息1转发至客户端2。客户端2在聊天界面中显示消息1,使得用户2可以接收到用户1发送的消息1,实现消息的传输。以此类推,用户2可以采用类似的方法向客户端1发送消息2,完成数据中心1和数据中心2中的消息同步,以及客户端1和客户端2的消息交互过程。
基于同一种发明构思,根据上述本发明实施例提供的消息同步方法,本发明实施例还提供了一种数据中心。如图7所示,图7为本发明实施例提供的数据中心的一种结构示意图。该数据中心可以包括长连接服务器701和业务服务器702。
长连接服务器701,用于在与客户端建立长连接后,接收客户端发送的业务消息,并将业务消息路由到对应的目标业务服务器;
目标业务服务器,用于对业务消息进行预处理得到第一待同步消息,并将第一待同步消息存储到第一消息队列中,以使全球数据中心中的其他数据中心从第一消息队列中获得第一待同步消息;其中,数据中心与其他数据中心处于同一虚拟局域网。
可选的,上述数据中心还可以包括消息存储设备;
上述业务服务器702,还可以用于在监听到其他数据中心的第二消息队列中存在第二待同步消息时,从第二消息队列中获取第二待同步消息,并将第二待同步消息存储到消息存储设备中。
可选的,上述业务服务器702,还可以用于通过长连接服务器701,将获取到的第二待同步消息推送至客户端。
可选的,上述业务服务器702,具体可以用于当客户端与长连接服务器701之间的长连接断开后,若客户端在预设时长内重新与长连接服务器701建立长连接,则业务服务器702通过长连接服务器701,将目标时间段内从其他数据中心获得的第三待同步消息推送至客户端;目标时间段为客户端与长连接服务器701间长连接断开至重新建立所对应的时间段。
可选的,上述第一消息队列可以为kafka消息队列;
上述业务服务器702,还可以用于若kafka消息队列中的第一待同步消息同步至每一其他数据中心后,则丢弃kafka消息队列中的第一待同步消息。
可选的,上述数据中心还可以包括任务服务器;
上述任务服务器,用于当业务服务器702对目标消息的处理时长大于预设时长阈值时,对目标消息进行处理,目标消息包括业务消息和待同步的消息。
通过本发明实施例提供的数据中心,由于全球数据中心中的每一数据中心均处于同一虚拟局域网中,当目标数据中心中的业务服务器将待同步消息存储到消息队列中,其他数据中心可以从该消息队列中同步获得待同步消息,实现不同数据中心中消息的同步,解决了不同数据中心存储的消息不一致的问题,提高了不同数据中心间的消息的一致性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于数据中心等实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
1.一种消息同步方法,其特征在于,应用于全球数据中心中的目标数据中心,所述目标数据中心包括长连接服务器和业务服务器,所述方法包括:
所述长连接服务器在与客户端建立长连接后,接收所述客户端发送的业务消息,并将所述业务消息路由到对应的目标业务服务器;
所述目标业务服务器对所述业务消息进行预处理得到第一待同步消息,并将所述第一待同步消息存储到第一消息队列中,以使所述全球数据中心中的其他数据中心从所述第一消息队列中获得所述第一待同步消息;其中,所述目标数据中心与所述其他数据中心处于同一虚拟局域网。
2.根据权利要求1所述的方法,其特征在于,所述目标数据中心还包括消息存储设备;
所述方法还包括:
当业务服务器监听到所述其他数据中心的第二消息队列中存在第二待同步消息时,从所述第二消息队列中获取所述第二待同步消息,并将所述第二待同步消息存储到所述消息存储设备中。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述业务服务器通过所述长连接服务器,将获取到的第二待同步消息推送至所述客户端。
4.根据权利要求3所述的方法,其特征在于,所述业务服务器通过所述长连接服务器,将获取到的第二待同步消息推送至所述客户端的步骤,包括:
当所述客户端与所述长连接服务器之间的长连接断开后,若所述客户端在预设时长内重新与所述长连接服务器建立长连接,则所述业务服务器通过所述长连接服务器,将目标时间段内从所述其他数据中心获得的第三待同步消息推送至所述客户端;所述目标时间段为所述客户端与所述长连接服务器间长连接断开至重新建立所对应的时间段。
5.根据权利要求1所述的方法,其特征在于,所述第一消息队列为卡夫卡kafka消息队列;
所述方法还包括:
若所述kafka消息队列中的第一待同步消息同步至每一其他数据中心后,则所述业务服务器丢弃所述kafka消息队列中的第一待同步消息。
6.根据权利要求1-5任一所述的方法,其特征在于,所述目标数据中心还包括任务服务器;
所述方法还包括:
当所述业务服务器对目标消息的处理时长大于预设时长阈值时,所述任务服务器对所述目标消息进行处理,所述目标消息包括所述业务消息和待同步的消息。
7.一种数据中心,其特征在于,所述数据中心包括长连接服务器和业务服务器:
所述长连接服务器,用于在与客户端建立长连接后,接收所述客户端发送的业务消息,并将所述业务消息路由到对应的目标业务服务器;
所述目标业务服务器,用于对所述业务消息进行预处理得到第一待同步消息,并将所述第一待同步消息存储到第一消息队列中,以使全球数据中心中的其他数据中心从所述第一消息队列中获得所述第一待同步消息;其中,所述数据中心与所述其他数据中心处于同一虚拟局域网。
8.根据权利要求7所述的数据中心,其特征在于,所述数据中心还包括消息存储设备;
所述业务服务器,用于在监听到所述其他数据中心的第二消息队列中存在第二待同步消息时,从所述第二消息队列中获取所述第二待同步消息,并将所述第二待同步消息存储到所述消息存储设备中。
9.根据权利要求8所述的数据中心,其特征在于,所述业务服务器,还用于通过所述长连接服务器,将获取到的第二待同步消息推送至所述客户端。
10.根据权利要求9所述的数据中心,其特征在于,所述业务服务器,具体用于当所述客户端与所述长连接服务器之间的长连接断开后,若所述客户端在预设时长内重新与所述长连接服务器建立长连接,则所述业务服务器通过所述长连接服务器,将目标时间段内从所述其他数据中心获得的第三待同步消息推送至所述客户端;所述目标时间段为所述客户端与所述长连接服务器间长连接断开至重新建立所对应的时间段。
技术总结