一种即时消息的传输方法、装置、电子设备及存储介质与流程

文档序号:22396937发布日期:2020-09-29 18:06阅读:102来源:国知局
一种即时消息的传输方法、装置、电子设备及存储介质与流程

本发明涉及互联网技术领域,尤其涉及一种即时消息的传输方法、装置、电子设备及存储介质。



背景技术:

随着微信和直播等应用的兴起,即时消息成为用户之间重要的联络和交流方式。在即使消息通讯中,不同用户之间可以通过数据中心进行信息转发。

根据业务需求的不同,即时消息的转发可以基于一个数据中心或多个数据中心。其中,多个数据中心可以按照地理位置分布,例如欧洲数据中心、北美中心等,从而使处于不同地理位置的用户可以接入就近的数据中心,获得较佳的网络服务。

然而,当进行即使消息通信的用户属于不同数据中心的情况下,这些数据中心之间就需要进行消息同步。目前,数据中心之间大都采用基于http(hypertexttransferprotocol,超文本传输协议)或者rpc(remoteprocedurecall,远过程调用)的服务传输方式。其中,http方式传输速度慢,而rpc方式在遇到网络抖动时,会丢消息,可靠性差。



技术实现要素:

有鉴于此,本发明实施例提供一种即时消息的传输方法、装置、电子设备及存储介质,能够有效提高即时消息的传输效率和可靠性。

第一方面,本发明实施例提供一种即时消息的传输方法,包括:接收即时消息,所述即时消息携带所述即时消息的接收对象的对象标识,所述即时消息的发出者位于第一数据中心的服务范围内;若所述即时消息的接收对象位于第二数据中心的服务范围内,则将所述即时消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述即时消息并转发给所述接收对象,其中,所述第一数据中心与所述第二数据中心不同。

可选的,所述若所述即时消息的接收对象位于第二数据中心的服务范围内,则将所述即时消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述即时消息并转发给所述接收对象包括:若所述即时消息的接收对象处于第二数据中心的服务范围内,且所述即时消息的接收对象为群或直播间,则根据所述即时消息生成广播消息;将所述广播消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述广播消息并向所述第二数据中心的服务范围内的所有长连接服务器广播所述广播消息。

可选的,所述若所述即时消息的接收对象位于第二数据中心的服务范围内,则将所述即时消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述即时消息并转发给所述接收对象包括:若所述即时消息的接收对象处于第二数据中心的服务范围内,且所述即时消息的接收对象为群或直播间,则查找所述即时消息的接收对象中的各成员所连接的目标长连接服务器,所述目标长连接服务器位于所述第二数据中心的服务范围内;根据所述即时消息生成广播消息,所述广播消息携带所述目标长连接服务器的身份标识;将所述广播消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述广播消息,并向所述目标长连接服务器的身份标识对应的所述长连接服务器广播所述广播消息。

可选的,在所述将所述即时消息存入所述第一数据中心的第一消息队列服务器之前,所述方法还包括:根据所述接收对象的对象标识,确定所述接收对象所在的数据中心,其中,所述接收对象包括以下任一项:单聊用户、群、直播间,所述群的成员或所述直播间的成员所在的数据中心为一个或多个。

可选的,在所述将所述即时消息存入所述第一数据中心的第一消息队列服务器之后,所述方法还包括:维护所述即时消息,并在所述第二数据中心从所述第一消息队列服务器读取所述即时消息后,将所述即时消息从所述第一消息队列服务器中删除。

第二方面,本发明的实施例还提供一种即时消息的传输方法,包括:从第一数据中心的第一消息队列服务器中获取更新的即时消息,所述即时消息携带所述即时消息的接收对象的对象标识,所述接收对象位于第二数据中心的服务范围内,所述第一数据中心与所述第二数据中心不同;根据所述对象标识,将所述即时消息转发给所述接收对象。

可选的,所述根据所述对象标识,将所述即时消息转发给所述接收对象包括:若所述即时消息为广播消息,则向所述第二数据中心的服务范围内的所有长连接服务器广播所述广播消息;各所述长连接服务器根据所述广播消息,确定本长连接服务器中是否存在所述对象标识对应的群中或直播间中的成员;若本长连接服务器中存在所述对象标识对应的群中或直播间中的成员,则向每个所述成员转发所述广播消息。

可选的,所述根据所述对象标识,将所述即时消息转发给所述接收对象包括:若所述即时消息为广播消息,则从所述广播消息中获取目标长连接服务器的身份标识,所述目标长连接服务器为所述即时消息的接收对象中的成员所连接的长连接服务器,所述目标长连接服务器位于所述第二数据中心的服务范围内;根据所述目标长连接服务器的身份标识,向所述目标长连接服务器广播所述广播消息;所述目标长连接服务器向与其连接的每个所述成员转发所述广播消息。

第三方面,本发明的实施例还提供一种即时消息的传输装置,包括:消息接收单元,用于接收即时消息,所述即时消息携带所述即时消息的接收对象的对象标识,所述即时消息的发出者位于第一数据中心的服务范围内;消息存入单元,用于若所述即时消息的接收对象位于第二数据中心的服务范围内,则将所述即时消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述即时消息并转发给所述接收对象,其中,所述第一数据中心与所述第二数据中心不同。

可选的,所述消息存入单元包括:第一生成模块,用于若所述即时消息的接收对象处于第二数据中心的服务范围内,且所述即时消息的接收对象为群或直播间,则根据所述即时消息生成广播消息;第一存入模块,用于将所述广播消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述广播消息并向所述第二数据中心的服务范围内的所有长连接服务器广播所述广播消息。

可选的,所述消息存入单元包括:查找模块,用于若所述即时消息的接收对象处于第二数据中心的服务范围内,且所述即时消息的接收对象为群或直播间,则查找所述即时消息的接收对象中的各成员所连接的目标长连接服务器,所述目标长连接服务器位于所述第二数据中心的服务范围内;第二生成模块,用于根据所述即时消息生成广播消息,所述广播消息携带所述目标长连接服务器的身份标识;第二存入模块,用于将所述广播消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述广播消息,并向所述目标长连接服务器的身份标识对应的所述长连接服务器广播所述广播消息。

可选的,所述即时消息的传输装置还包括:确定单元,用于在所述将所述即时消息存入所述第一数据中心的第一消息队列服务器之前,根据所述接收对象的对象标识,确定所述接收对象所在的数据中心,其中,所述接收对象包括以下任一项:单聊用户、群、直播间,所述群的成员或所述直播间的成员所在的数据中心为一个或多个。

可选的,所述即时消息的传输装置还包括:维护和删除单元,用于在将所述即时消息存入所述第一数据中心的第一消息队列服务器之后,维护所述即时消息,并在所述第二数据中心从所述第一消息队列服务器读取所述即时消息后,将所述即时消息从所述第一消息队列服务器中删除。

第四方面,本发明的实施例还提供一种即时消息的传输装置,包括:消息获取单元,用于从第一数据中心的第一消息队列服务器中获取更新的即时消息,所述即时消息携带所述即时消息的接收对象的对象标识,所述接收对象位于第二数据中心的服务范围内,所述第一数据中心与所述第二数据中心不同;消息转发单元,用于根据所述对象标识,将所述即时消息转发给所述接收对象。

可选的,所述消息转发单元包括:第一广播模块,用于若所述即时消息为广播消息,则向所述第二数据中心的服务范围内的所有长连接服务器广播所述广播消息;确定模块,用于各所述长连接服务器根据所述广播消息,确定本长连接服务器中是否存在所述对象标识对应的群中或直播间中的成员;第一转发模块,用于若本长连接服务器中存在所述对象标识对应的群中或直播间中的成员,向每个所述成员转发所述广播消息。

可选的,所述消息转发单元包括:标识获取模块,用于若所述即时消息为广播消息,则从所述广播消息中获取目标长连接服务器的身份标识,所述目标长连接服务器为所述即时消息的接收对象中的成员所连接的长连接服务器,所述目标长连接服务器位于所述第二数据中心的服务范围内;第二广播模块,用于根据所述目标长连接服务器的身份标识,向所述目标长连接服务器广播所述广播消息;第二转发模块,用于使所述目标长连接服务器向与其连接的每个所述成员转发所述广播消息。

第五方面,本发明的实施例还提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行本发明的实施例提供的任一种即时消息的传输方法。

第六方面,本发明的实施例还提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行本发明的实施例提供的任一种即时消息的传输方法。

第七方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现本发明的实施例提供的任一种即时消息的传输方法。

第八方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现本发明的实施例提供的任一种即时消息的传输方法。

本发明的实施例提供的即时消息的传输方法、装置、电子设备及存储介质,能够接收第一数据中心的服务范围内的消息发出者发出的即时消息,若所述即时消息的接收对象位于第二数据中心的服务范围内,则将所述即时消息存入所述第一数据中心的第一消息队列务器,以使所述第二数据中心从所述第一消息队列服务器读取所述即时消息并转发给所述接收对象。这样,当消息发出者与消息接收对象分别位于不同的数据中心时,就可以通过第一消息队列服务器使即时消息在两个数据中心之间进行得到及时可靠的同步,而无需采用http或rpd的消息同步方式,从而有效提高了即时消息的传输效率和可靠性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明的实施例提供的即时消息的传输方法的一种应用场景示意图;

图2为本发明的实施例提供的即时消息的传输方法的一种流程图;

图3为本发明的实施例提供的即时消息的传输方法的另一种流程图;

图4为本发明的实施例提供的即时消息的传输方法的一种具体的应用场景示意图;

图5为本发明的实施例提供的即时消息的传输装置的一种结构示意图;

图6为本发明的实施例提供的即时消息的传输装置的另一种结构示意图;

图7为本发明的实施例提供的电子设备的一种结构示意图;

图8为本发明的实施例提供的电子设备的一种结构示意图。

具体实施方式

下面结合附图对本发明实施例进行详细描述。

应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

为了对本发明的实施例提供的即时消息的传输方法进行更好的理解,首先对本发明的实施例提供的即时消息的传输方法的应用场景进行简单介绍。

在本发明的实施例中,用户之间可以进行即时消息通讯,不同用户之间的即时消息可以通过数据中心进行传递和转发。数据中心可以包括一系列用于即时消息转发的服务,例如,用于长连接的长连接服务器。基于长连接服务,又可以建立多种类型的具体服务形式,例如单聊、群聊、直播间等。

如图1所示,当即时消息的发送者向接收对象发送一条即时消息时,该即时消息首先到达发送者所在的数据中心(即第一数据中心),如果第一数据中心发现即时消息的接收对象位于第二数据中心的服务范围内,则可以将该条即时消息存入第一数据中心中的第一消息队列服务器,以便第二数据中心从该第一消息队列服务器读取即时消息。第二数据中心可以监听第一消息队列服务器中的数据更新情况,监听到第一消息队列服务器中的数据更新情况后,可以从第一消息队列服务器中读取该即时消息,并将该即时消息转发给对应的接收对象。这样就无需采用http或rpd的消息同步方式,从而有效提高了即时消息的传输效率和可靠性。

第一方面,本发明的实施例提供一种即时消息的传输方法,基于第一数据中心,能够有效提高即时消息的传输效率和可靠性。

如图2所示,本发明的实施例提供一种即时消息的传输方法,包括:

s11,接收即时消息,所述即时消息携带所述即时消息的接收对象的对象标识,所述即时消息的发出者位于第一数据中心的服务范围内;

本步骤中,第一数据中心可以接收即时消息,可选的,该即时消息既可以是用户输入的消息,例如文字信息、语音信息、视频信息、表情、礼物等,也可以是用户状态改变消息,例如登录或退出消息等。即时消息中可以携带消息接收对象的对象标识和/或携带消息发出者的身份标识。其中,消息接收对象既可以是用户个人,也可以是一个集体,例如一个群或直播间等。

s12,若所述即时消息的接收对象位于第二数据中心的服务范围内,则将所述即时消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述即时消息并转发给所述接收对象,其中,所述第一数据中心与所述第二数据中心不同。

本步骤中,第一数据中心接收到即时消息后,可以根据即时消息中接收对象的对象标识确定接收对象是否位于第一数据中心的服务范围内。如果接收对象在第一数据中心的服务范围内,则可以直接在第一数据中心内部将即时消息转发给接收对象,例如可以通过第一数据中心的长连接服务器将即时消息转发给接收对象。如果接收对象在第一数据中心的服务范围以外,例如,位于第二数据中心的服务范围内,则可以将即时消息存入第一数据中心的第一消息队列服务器,以便第二数据中心从第一消息队列服务器读取该即时消息。

由于接收对象可以包括多种类型,例如用户个人、群或直播间等,接收对象是否在第一数据中心的服务范围内也可以根据接收对象来具体细分。可选的,在本发明的一个实施例中,当接收对象为用户个人时,即时消息的发出者和接收对象之间可能正在进行单聊,则可以直接确定该接收对象是否在第一数据中心的服务范围内。当接收对象为群或直播间时,可以根据群或直播间中的成员是否在第一数据中心的服务范围内来确定该接收对象是否在第一数据中心的服务范围内。例如,当该群内或直播间内的所有成员都在第一数据中心的服务范围内时,可以认为该接收对象在第一数据中心的服务范围内,只要该群内或直播间内存在至少一个成员位于第一数据中心之外,即可认为该接收对象不在第一数据中心服务范围内。

可选的,当接收对象为群或直播间时,不在第一数据中心的服务范围内的成员既可以集中分布在另一个数据中心(即一个第二数据中心),也可以分布在另外的多个数据中心(即多个第二数据中心)。若即时消息的接收对象位于一个或多个第二数据中心的服务范围内,则可以将即时消息存入第一数据中心的第一消息队列服务器,以便上述一个或多个第二数据中心从第一消息队列服务器读取该即时消息。

本发明的实施例提供的即时消息的传输方法,能够接收第一数据中心的服务范围内的消息发出者发出的即时消息,若所述即时消息的接收对象位于第二数据中心的服务范围内,则将所述即时消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述即时消息并转发给所述接收对象。这样,当消息发出者与消息接收对象分别位于不同的数据中心时,就可以通过第一消息队列服务器使即时消息在两个数据中心之间进行得到及时可靠的同步,而无需采用http或rpd的消息同步方式,从而有效提高了即时消息的传输效率和可靠性。

在步骤s11中第一数据中心接收到即时消息后,可以根据即时消息的接收对象所在的数据中心的不同而对即时消息进行不同方式的转发。可选的,对于也处于第一数据中心服务范围的接收对象,可以直接在第一数据中心内部进行消息转发,对于处于第二数据中心服务范围内的接收对象,则可以先通过第一数据中心的第一消息队列服务器在第一数据中心和第二数据中心之间进行数据同步,随后再由第二数据中心向接收对象转发该即时消息。

可选的,为了能够获知每个即时消息的接收对象位于哪个数据中心的服务范围内,在本发明的一个实施例中,在第一数据中心接收到即时消息之后,在将所述即时消息存入所述第一数据中心的第一消息队列服务器之前,本发明的实施例提供的即时消息的传输方法还可以包括:根据所述接收对象的对象标识,确定所述接收对象所在的数据中心,其中,所述接收对象包括以下任一项:单聊用户、群、直播间,所述群的成员或所述直播间的成员所在的数据中心可以为一个或多个。当即时消息写入第一数据中心的第一消息队列服务器后,每个成员所在的数据中心都可以从该第一消息队列服务器中读取该即时消息。

可选的,在第一数据中心接收到即时消息之后,在将所述即时消息存入所述第一数据中心的第一消息队列服务器之前,还可以对敏感词进行过滤,并将过滤后的即时消息存入第一消息队列服务器,从而可以过滤掉敏感词,有效净化网络空间。

在本发明的实施例中,由于即时消息的接收对象不但可以为用户个人,也可以为一个群或直播间,为了使即时消息能够及时送达群或直播间中的每一个成员,可选的,在本发明的一个实施例中,步骤s12中若所述即时消息的接收对象位于第二数据中心的服务范围内,则将所述即时消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述即时消息并转发给所述接收对象具体可以包括:

若所述即时消息的接收对象处于第二数据中心的服务范围内,且所述即时消息的接收对象为群或直播间,则根据所述即时消息生成广播消息;

将所述广播消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述广播消息并向所述第二数据中心的服务范围内的所有长连接服务器广播所述广播消息。

也即是说,本实施例中,若即时消息为群聊消息或直播间消息,则意味着可能有多个成员需要接收到该即时消息,因此,可以根据该即时消息生成对应的广播消息,以便向群或直播间中的其他成员进行广播。

可选的,在本发明的一个实施例中,根据即时消息生成的广播消息,可以依据广播消息的属性来分类,并依据不同的广播消息属性进行自定义扩展,不同消息属性可以对应不同的事件处理方式。例如,如果广播消息为群组属性,则广播消息的接收者即为群组id,相关群组下的成员都可以接收到本消息。如果广播消息是直播间属性,则广播消息的接收者为直播间id,相关当前直播间的成员也都可以接收到该消息。

可选的,在本发明的一个实施例中,不同数据中心间的消息同步涉及的消息种类可以包括三大类,分别为单聊、群聊及直播间消息,这些大类下又共包括200余种小类,其中大都以直播间的消息为主。不同数据中心之间进行数据传输时,可以进行分别同步,并按照消息协议格式(例如按照消息的大类及小类)分别进行识别保存和传输,以便其它数据中心接收到消息后,进行相应的针对性处理。

可选的,生成广播消息后,可以将广播消息存入第一数据中心的第一消息队列服务器,例如kafka服务器,以实现数据中心之间的数据同步。其中,kafka服务器是一种高吞吐量的分布式发布订阅消息系统,能够保存并传输消息数据,从而有效提高数据中心之间消息传输的可靠性和及时性。由于多数据中心之间采用kafka服务的方式对即时消息进行保存,数据中心之间唯一交互的只是kafka消息队列,因此能够有效的减化服务设计,降低服务架构的复杂性。

可选的,除了kafka服务器之外,在本发明的其他实施例中也可以采用rabbitmq、阿里云的全球redis,mongodb等。由于直播间消息量比较大,可以根据线上实现情况进行选型或者优化定制。

本实施例中,基于即时消息,广播消息中也可以携带消息的接收对象的身份标识,例如群标识或直播间标识等,但群或直播间中的成员信息在广播消息中可以不体现,从而简化了第一数据中心的数据维护压力,进一步提高了即时消息的传输效率。但本发明的实施例不限于此。

可选的,在本发明的另一个实施例中,也可以在广播消息中携带群成员或直播间成员相关的信息,从而使第二数据中心能够更快将广播消息转发到对应成员。举例而言,在本发明的一个实施例中,步骤s12中所述若所述即时消息的接收对象位于第二数据中心的服务范围内,则将所述即时消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述即时消息并转发给所述接收对象具体可以包括:

若所述即时消息的接收对象处于第二数据中心的服务范围内,且所述即时消息的接收对象为群或直播间,则查找所述即时消息的接收对象中的各成员所连接的目标长连接服务器,所述目标长连接服务器位于所述第二数据中心的服务范围内;

根据所述即时消息生成广播消息,所述广播消息携带所述目标长连接服务器的身份标识;

将所述广播消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述广播消息,并向所述目标长连接服务器的身份标识对应的所述长连接服务器广播所述广播消息。

具体而言,在本发明的实施例中,为了保证即时消息的实时性,当用户发送或接收即时消息前,可以先与一个长连接服务器建立并维持长连接,并以此长连接为基础,建立多种具体的消息服务,例如单聊(chat)、群聊(groupchat)、直播间(room)等。在群聊或直播间中,即时消息需要转发给群或直播间中的所有成员。可选的,这些成员所连接的长连接服务器可以相同,也可以不同,例如群成员a1、a2、a3都处于第二数据中心的服务范围内,a1、a2、a3既可以连接在同一个目标长连接服务器server1上,也可以a1、a2连接在目标长连接服务器server1上,a3连接在目标长连接服务器server2上。

本实施例中,第一数据中心可以维护一个用户与长连接服务器的对应关系表,根据该对应关系表可以查找到与群或直播间成员建立连接的长连接服务器,并将该长连接服务器的身份标识添加到广播消息中。这样,当第二数据中心从第一消息队列服务器读取该广播消息时,就可以获知该广播消息应该被转发到哪些对应的长连接服务器上,并进一步转发给该长连接服务器下连接的用户。

由于将即时消息或广播消息存入第一消息队列服务器涉及到外部数据交互,为了提高消息的处理效率,可选的,在本发明的一个实施例中,可以通过一个单独的服务来处理这些耗时业务,例如专门处理保存数据库,操作消息队列,操作缓存等的服务。

进一步的,在步骤s12中将即时消息存入第一数据中心的第一消息队列服务器之后,本发明的实施例提供的即时消息的传输方法还可以包括:维护所述即时消息,并在所述第二数据中心从所述第一消息队列服务器读取所述即时消息后,将所述即时消息从所述第一消息队列服务器中删除。这样,基于即时消息消费后再删除的机制,可以使得每一条消息都能够得以完整消费,从而有效解决了弱网环境下的消息丢失问题,有效提高即时消息传输的可靠性。

第二方面,本发明的实施例还提供一种即时消息的传输方法,基于第二数据中心,能够有效提高即时消息的传输效率和可靠性。

如图3所示,本发明的实施例提供一种即时消息的传输方法,可以包括:

s21,从第一数据中心的第一消息队列服务器中获取更新的即时消息,所述即时消息携带所述即时消息的接收对象的对象标识,所述接收对象位于第二数据中心的服务范围内,所述第一数据中心与所述第二数据中心不同;

本步骤中,第二数据中心可以监听第一消息队列服务器中的消息更新情况,一旦发现消息更新,第二数据中心即可以从第一消息队列服务器中读取更新的即时消息。可选的,该即时消息既可以是用户输入的消息,例如文字信息、表情、礼物等,也可以是用户状态改变消息,例如登录或退出消息等。

由于读取即时消息涉及到外部数据交互,为了提高消息的处理效率,可选的,在本发明的一个实施例中,可以通过一个单独的服务来处理这些耗时业务,例如专门处理保存数据库,操作消息队列,操作缓存等的服务。

s22,根据所述对象标识,将所述即时消息转发给所述接收对象。

在本发明的实施例中,第二数据中心获取了即时消息后,即可以根据即时消息中携带的接收对象的对象标识,将该即时消息转发给对应的接收对象。可选的,即时消息的接收对象既可以是用户个人,也可以是一个集体,例如一个群或直播间等。可选的,当接收对象为群或直播间时,将即时消息转发给接收对象也就是将即时消息转发给群中或直播间中的每个成员。

本发明的实施例提供的即时消息的传输方法,第二数据中心能够从第一数据中心的第一消息队列服务器中获取更新的即时消息,所述即时消息携带所述即时消息的接收对象的对象标识,所述接收对象位于第二数据中心的服务范围内,并根据所述对象标识,将所述即时消息转发给所述接收对象。这样,当消息发出者与消息接收对象分别位于不同的数据中心时,就可以通过第一消息队列服务器使即时消息在两个数据中心之间进行得到及时可靠的同步,而无需采用http或rpd的消息同步方式,从而有效提高了即时消息的传输效率和可靠性。

可选的,在本发明的一个实施例中,获取到即时消息后,第二数据中心可以根据即时消息的消息格式(例如预设关键字)确定该即时消息是单发消息还是广播消息。若为广播消息,则可以向即时消息的接收对象中的各成员广播该即时消息。具体而言,在本发明的一个实施例中,步骤s22中根据所述对象标识,将所述即时消息转发给所述接收对象具体可以包括:

若所述即时消息为广播消息,则向所述第二数据中心的服务范围内的所有长连接服务器广播所述广播消息;

各所述长连接服务器根据所述广播消息,确定本长连接服务器中是否存在所述对象标识对应的群中或直播间中的成员;

若本长连接服务器中存在所述对象标识对应的群中或直播间中的成员,则向每个所述成员转发所述广播消息。

具体而言,本实施例中,如果第二数据中心从第一消息队列服务器中获取到的即时消息是一种广播消息,则可以向第二数据中心服务范围内的所有长连接服务器广播该广播消息。相应的,各长连接服务器在接收到该广播消息后,可以根据各自维护的用户状态列表,确定本长连接服务器中是否存在所述对象标识对应的群中或直播间中的成员。每当有新用户连接到长连接服务器时,若存在,则向该群或直播间中连接于该长连接服务器下的每个成员转发该广播消息,若不存在,则无需进行上述广播消息的转发。例如,长连接服务器server6可以根据用户状态列表获知群c中的成员c2、c8连接于本长连接服务器,长连接服务器server4可以根据用户状态列表获知群c中的成员c1、c3、c4、c9连接于本长连接服务器,则长连接服务器server6可以向成员c2、c8转发该广播消息,长连接服务器server4可以向成员c1、c3、c4、c9转发该广播消息。长连接服务器server2根据用户状态列表获知群c中的成员没有连接于本长连接服务器中,则长连接服务器server2无需对该广播消息进行进一步转发,丢弃即可。

在本发明的前一个实施例中,第二数据中心会将从第一消息队列服务器中获取的即时消息向第二数据中心服务范围内的所有长连接服务器广播,由每个长连接服务器来确定是否需要对即时消息进一步转发,或者向哪些用户进一步转发。但本发明的实施例不限于此。在本发明的其他实施例中,也可以通过其他方式进行即时消息的转发。

例如,可选的,在本发明的另一个实施例中,步骤s22中根据所述对象标识,将所述即时消息转发给所述接收对象具体可以包括:

若所述即时消息为广播消息,则从所述广播消息中获取目标长连接服务器的身份标识,所述目标长连接服务器为所述即时消息的接收对象中的成员所连接的长连接服务器,所述目标长连接服务器位于所述第二数据中心的服务范围内;

根据所述目标长连接服务器的身份标识,向所述目标长连接服务器广播所述广播消息;

所述目标长连接服务器向与其连接的每个所述成员转发所述广播消息。

也即是说,本实施例中,第二数据中心从第一消息队列服务器获取到的即时消息为一种广播消息,且该广播消息中携带有接收对象中的各成员所连接的长连接服务器(即目标长连接服务器)的身份标识。因此,第二数据中心可以直接根据目标长连接服务器的身份标识,向对应的目标长连接服务器转发该广播消息,从而使广播消息的转发更具有针对性,也有效提高了即时消息的传输效率。

结合前述基于第一数据中心的即时消息传输方法和基于第二数据中心的即时消息传输方法,在本发明的一个实施例中,第一数据中心和第二数据中心的结构示意图可以如图4所示。

图4中左侧例如可以为关东数据中心,右侧例如可以为中东数据中心。用户聊天时可以就近接入其中一个物理位置较近,网络速度更佳的数据中心,来进行相关业务数据的处理。

其中,每个数据中心下可以设置一个或多个live服务器。live服务器为长连接服务器,用户的服务状态信息均可以保存在该服务上。在live服务器提供的长连接服务的基础上,又设置单聊(chat)、群聊(groupchat)及直播间聊天(room)三种具体的聊天方式。如果即时消息为直播间消息时,则可以将即时消息路由至room服务器。聊天的用户可以来自全球各个国家或地区。举例而言,在本发明的一个实施例中,用户的服务状态信息可以包括直播间的当前状态等信息,例如当用户新加入某直播间或者切换直播间时,均可以将相应的直播间id同步至live服务器对应的直播间中。

用户使用即时消息功能前首先需要与live服务器建立长连接,并维持长连接。单聊、群聊及直播间中所产生的消息数据可以通过redis缓存来暂时快速保存。redis中的消息数据可以不断被更新,可以通过task服务将redis中暂存的消息数据转存到mongo数据库中,从而为新数据赢得更多的存储空间。其中,task服务为耗时业务处理任务服务,可以进行例如保存数据库,操作消息队列,操作缓存等服务。mongo数据库为消息落地数据库,其存储容量巨大但存取速度相对较慢。

当不同的数据中心之间需要进行数据同步时,暂存在redis中的即时消息数据可以通过task服务存入kafka服务器。kafka服务为消息队列服务,可以用于保存并传输消息数据。其他数据中心的task服务可以监听该kafka服务的消息更新,从kafka服务中读取更新的消息,并将读取到的消息通过live服务器转发给该消息的接收对象。即时消息通过消息队列服务器(例如kafka服务器)在不同的数据中心之间的传输过程,已经在前文进行了详细说明,此处不在赘述。

第三方面,本发明的实施例还提供一种即时消息的传输装置,能够有效提高即时消息的传输效率和可靠性。

如图5所示,本发明的实施例提供的即时消息的传输装置,可以包括:

消息接收单元31,用于接收即时消息,所述即时消息携带所述即时消息的接收对象的对象标识,所述即时消息的发出者位于第一数据中心的服务范围内;

消息存入单元32,用于若所述即时消息的接收对象位于第二数据中心的服务范围内,则将所述即时消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述即时消息并转发给所述接收对象,其中,所述第一数据中心与所述第二数据中心不同。

本发明的实施例提供的即时消息的传输装置,能够接收第一数据中心的服务范围内的消息发出者发出的即时消息,若所述即时消息的接收对象位于第二数据中心的服务范围内,则将所述即时消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述即时消息并转发给所述接收对象。这样,当消息发出者与消息接收对象分别位于不同的数据中心时,就可以通过第一消息队列服务器使即时消息在两个数据中心之间进行得到及时可靠的同步,而无需采用http或rpd的消息同步方式,从而有效提高了即时消息的传输效率和可靠性。

可选的,消息存入单元32可以包括:

第一生成模块,用于若所述即时消息的接收对象处于第二数据中心的服务范围内,且所述即时消息的接收对象为群或直播间,则根据所述即时消息生成广播消息;

第一存入模块,用于将所述广播消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述广播消息并向所述第二数据中心的服务范围内的所有长连接服务器广播所述广播消息。

可选的,消息存入单元32可以包括:

查找模块,用于若所述即时消息的接收对象处于第二数据中心的服务范围内,且所述即时消息的接收对象为群或直播间,则查找所述即时消息的接收对象中的各成员所连接的目标长连接服务器,所述目标长连接服务器位于所述第二数据中心的服务范围内;

第二生成模块,用于根据所述即时消息生成广播消息,所述广播消息携带所述目标长连接服务器的身份标识;

第二存入模块,用于将所述广播消息存入所述第一数据中心的第一消息队列服务器,以使所述第二数据中心从所述第一消息队列服务器读取所述广播消息,并向所述目标长连接服务器的身份标识对应的所述长连接服务器广播所述广播消息。

可选的,所述即时消息的传输装置还可以包括:

确定单元,用于在所述将所述即时消息存入所述第一数据中心的第一消息队列服务器之前,根据所述接收对象的对象标识,确定所述接收对象所在的数据中心,其中,所述接收对象包括以下任一项:单聊用户、群、直播间,所述群的成员或所述直播间的成员所在的数据中心为一个或多个。

可选的,所述即时消息的传输装置还可以包括:

维护和删除单元,用于在将所述即时消息存入所述第一数据中心的第一消息队列服务器之后,维护所述即时消息,并在所述第二数据中心从所述第一消息队列服务器读取所述即时消息后,将所述即时消息从所述第一消息队列服务器中删除。

第四方面,本发明的实施例还提供一种即时消息的传输方法,基于第二数据中心,能够有效提高即时消息的传输效率和可靠性。

如图6所示,本发明的实施例提供的即时消息的传输装置,可以包括:

消息获取单元41,用于从第一数据中心的第一消息队列服务器中获取更新的即时消息,所述即时消息携带所述即时消息的接收对象的对象标识,所述接收对象位于第二数据中心的服务范围内,所述第一数据中心与所述第二数据中心不同;

消息转发单元42,用于根据所述对象标识,将所述即时消息转发给所述接收对象。

本发明的实施例提供的即时消息的传输装置,能够从第一数据中心的第一消息队列服务器中获取更新的即时消息,所述即时消息携带所述即时消息的接收对象的对象标识,所述接收对象位于第二数据中心的服务范围内,并根据所述对象标识,将所述即时消息转发给所述接收对象。这样,当消息发出者与消息接收对象分别位于不同的数据中心时,就可以通过第一消息队列服务器使即时消息在两个数据中心之间进行得到及时可靠的同步,而无需采用http或rpd的消息同步方式,从而有效提高了即时消息的传输效率和可靠性。

可选的,消息转发单元42可以包括:

第一广播模块,用于若所述即时消息为广播消息,则向所述第二数据中心的服务范围内的所有长连接服务器广播所述广播消息;

确定模块,用于各所述长连接服务器根据所述广播消息,确定本长连接服务器中是否存在所述对象标识对应的群中或直播间中的成员;

第一转发模块,用于若本长连接服务器中存在所述对象标识对应的群中或直播间中的成员,则向每个所述成员转发所述广播消息。

可选的,消息转发单元42可以包括:

标识获取模块,用于若所述即时消息为广播消息,则从所述广播消息中获取目标长连接服务器的身份标识,所述目标长连接服务器为所述即时消息的接收对象中的成员所连接的长连接服务器,所述目标长连接服务器位于所述第二数据中心的服务范围内;

第二广播模块,用于根据所述目标长连接服务器的身份标识,向所述目标长连接服务器广播所述广播消息;

第二转发模块,用于使所述目标长连接服务器向与其连接的每个所述成员转发所述广播消息。

相应的,第五方面,本发明实施例提供一种电子设备,能够有效提高即时消息的传输效率和可靠性。

如图7所示,本发明的实施例提供的电子设备,可以包括:壳体51、处理器52、存储器53、电路板54和电源电路55,其中,电路板54安置在壳体51围成的空间内部,处理器52和存储器53设置在电路板54上;电源电路55,用于为上述电子设备的各个电路或器件供电;存储器53用于存储可执行程序代码;处理器52通过读取存储器53中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例提供的即时消息的传输方法。

处理器52对上述步骤的具体执行过程以及处理器52通过运行可执行程序代码来进一步执行的步骤,可以参见前述实施例的描述,在此不再赘述。

相应的,第六方面,本发明实施例提供一种电子设备,能够有效提高即时消息的传输效率和可靠性。

如图8所示,本发明的实施例提供的电子设备,可以包括:壳体61、处理器62、存储器63、电路板64和电源电路65,其中,电路板64安置在壳体61围成的空间内部,处理器62和存储器63设置在电路板64上;电源电路65,用于为上述电子设备的各个电路或器件供电;存储器63用于存储可执行程序代码;处理器62通过读取存储器63中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例提供的即时消息的传输方法。

处理器62对上述步骤的具体执行过程以及处理器62通过运行可执行程序代码来进一步执行的步骤,可以参见前述实施例的描述,在此不再赘述。

上述电子设备以多种形式存在,包括但不限于:

(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iphone)、多媒体手机、功能性手机,以及低端手机等。

(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:pda、mid和umpc设备等,例如ipad。

(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如ipod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。

(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

(5)其他具有数据交互功能的电子设备。

相应的,第七方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述实施例提供的任一种即时消息的传输方法,因此也能实现相应的技术效果,前文已经进行了详细说明,此处不再赘述。

相应的,第八方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述实施例提供的任一种即时消息的传输方法,因此也能实现相应的技术效果,前文已经进行了详细说明,此处不再赘述。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。

尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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