可扩展消息传送系统中的数据复制技术方案

技术编号:20886738 阅读:17 留言:0更新日期:2019-04-17 13:42
本发明专利技术提供了包括编码在计算机存储介质上的计算机程序的方法、系统和设备,用于:维护多个通道,各通道包括一个或多个缓冲器中所存储的有序的多个消息,各缓冲器具有相应的存活时间并且多个副本驻留在相应节点上;检测所述多个节点中的第一节点的故障,其中所述第一节点存储第一缓冲器的相应的第一副本,并且至少一个订户订阅一个或多个第一通道的消息;对于具有驻留在所述第一节点上的第一副本的第一缓冲器,将所述多个节点中的任意其它节点标识为存储所述第一缓冲器的第二副本的第二节点;将所述至少一个订户从所述第一节点重定向至所述第二节点;以及针对所述至少一个订户,检索所述第二节点上的所述第二副本中所存储的消息。

【技术实现步骤摘要】
【国外来华专利技术】可扩展消息传送系统中的数据复制
技术介绍
本说明书涉及数据通信系统,特别地涉及用于实现消息传送系统中的数据复制的系统。发布-订阅模式(或者“PubSub”)是利用软件系统实现的数据通信消息传送布置,其中,所谓的发布者将消息发布到主题,并且所谓的订户接收与他们所订阅的特定主题有关的消息。每个主题可以存在一个或多个发布者,并且发布者一般不知道什么样的订户(如果有的话)将接收到所发布的消息。一些PubSub系统不缓存消息或者具有小的缓存,这意味着订户可能不会接收到在订阅特定主题之前所发布的消息。在消息发布激增期间、或者随着特定主题的订户的数量增加,PubSub系统可能易受到性能不稳定性的影响。
技术实现思路
一般来说,本说明书中所描述的主题的一个方面可以体现在如下的方法中,该方法包括如下的动作:维护多个通道,各通道包括一个或多个缓冲器中所存储的有序的多个消息,各缓冲器包括相应的存活时间并且多个副本驻留在相应的多个节点上;检测所述多个节点中的第一节点的故障,其中所述第一节点存储针对一个或多个第一通道的第一缓冲器的相应的第一副本,以及其中至少一个订户订阅所述一个或多个第一通道的消息;对于具有驻留在所述第一节点上的第一副本的第一缓冲器,将所述多个节点中的任意其它节点标识为存储所述第一缓冲器的第二副本的第二节点;将所述至少一个订户从所述第一节点重定向至所述第二节点;以及针对所述至少一个订户,检索所述第二节点上的所述第二副本中所存储的消息。该方面的其它实施例包括相应的系统、设备和计算机程序。这些和其它方面可以可选地包括以下特征中的一个或多个特征。将所述多个节点中的任意其它节点标识为第二节点可以包括:基于所述多个节点中的任意其它节点中的各节点的相应工作负载来选择所述第二节点。至少一个发布者可以从所述第一节点重定向至所述第二节点,并且消息可以从所述至少一个发布者发送至所述第二节点以存储在所述第二副本中。所述第二节点可被配置为将来自发布者的用以存储在所述第二副本中的消息转发至所述多个节点中的任意第三节点以将所述消息存储在所述第一缓冲器的第三副本中。所述第一缓冲器的多个副本可以包括副本链,所述副本链包括至少头部副本和尾部副本。所述链中的特定副本中所存储的消息可被转发至所述链的下一相邻副本以进行存储,直到所述头部副本中的消息被存储在所述尾部副本中为止。检测所述第一节点的故障可以包括:检测所述第一副本中所存储的一个或多个消息未被转发至所述链中的所述第一副本的下一相邻副本以进行存储的故障。所述第一副本可以是所述头部副本,以及至少一个发布者可被配置为在被重定向至所述第二节点之前将所述第一缓冲器的消息发送至所述第一节点以存储在所述第一副本中。检测所述多个节点中的所述第一节点的故障可以包括:检测所述至少一个发布者将消息发送至所述第一节点以存储在所述第一副本中的故障。检测所述多个节点中的所述第一节点的故障可以包括:检测所述至少一个订户在被重定向至所述第二节点之前从所述第一副本获得消息的故障,以及其中所述第一副本可以是所述链中的特定副本。可以实施本说明中所描述的主题的特定实施例,以实现以下优点中的一个或多个优点。在消息传送系统中,通道管理器维护多个通道。各通道包括一个或多个缓冲器中所存储的有序的多个消息。各缓冲器包括相应的存活时间并且具有驻留在相应的多个节点上的多个副本。所述通道管理器检测所述多个节点中的第一节点的故障,其中所述第一节点存储针对一个或多个第一通道的第一缓冲器的相应的第一副本,以及其中至少一个订户订阅所述一个或多个第一通道的消息。对于具有驻留在所述第一节点上的第一副本的第一缓冲器,所述通道管理器可以将所述多个节点中的任意其它节点标识为存储特定缓冲器的第二副本的第二节点。所述通道管理器将所述至少一个订户从所述第一节点重定向至所述第二节点。所述通道管理器针对所述至少一个订户而检索所述第二节点上的所述第二副本中所存储的消息。以这种方式,所述第二节点上所存储的第二副本提供针对所述特定缓冲器的数据复制,并且在该特定缓冲器的仅一个副本被存储在所述消息传送系统中的情况下启用冗余以防单点故障。在附图和以下的描述中详细阐述了本说明书中所描述的主题的一个或多个实施例。根据说明书、附图和权利要求,本主题的其它特征、方面和优点将变得明显。附图说明图1A示出支持PubSub通信模式的示例性系统。图1B示出示例性客户端装置上的软件的功能层。图2是示例性消息传送系统的图。图3A是用于将数据写入通道细流(streamlet)的示例性方法的数据流程图。图3B是用于从通道细流读取数据的示例性方法的数据流程图。图4A是用于将消息发布到消息传送系统的通道的示例性方法的数据流程图。图4B是用于订阅消息传送系统的通道的示例性方法的数据流程图。图4C是用于存储消息传送系统的通道的消息的示例性数据结构。图5A是用于发布和复制消息传送系统的消息的示例性方法的数据流程图。图5B是用于检索消息传送系统中所存储的消息的示例性方法的数据流程图。图5C和5D是用于修复消息传送系统中的数据副本链的示例性方法的数据流程图。图6是消息传送系统的发布者和订户所用的用于发布和订阅消息的示例性方法的流程图。具体实施方式图1A示出支持PubSub通信模式的示例性系统100。发布者客户端(例如,发布者1)可以通过系统100来将消息发布到命名通道(例如,“通道1”)。消息可以包括任何类型的信息,该信息包括以下各项中的一项或多项:文本、图像内容、声音内容、多媒体内容、视频内容、以及二进制数据等。其它类型的消息数据也是可以的。订户客户端(例如,订户2)可以使用系统100来订阅命名通道,并且开始接收在订阅请求之后发生的或来自给定位置(例如,消息编号或时间偏移)的消息。客户端可以是发布者和订户两者。根据配置,PubSub系统可以分类如下:·一对一(1:1)。在该配置中,各通道存在一个发布者和一个订户。典型的用例是私人消息传送。·一对多(1:N)。在该配置中,各通道存在一个发布者和多个订户。典型的用例是广播消息(例如,股票价格)。·多对多(M:N)。在该配置中,存在发布到单个通道的许多发布者。消息然后被传递给多个订户。典型的用例是地图应用。创建命名通道不需要单独的操作。在订阅通道时或者在向通道发布消息时隐式地创建通道。在一些实现中,通道名称可以由名称空间来限定。名称空间包括一个或多个通道名称。不同的名称空间可以具有相同的通道名称,而不会引起歧义。名称空间的名称可以是通道名称的前缀,其中名称空间和通道名称以点或其它合适分隔符分隔。在一些实现中,可以在指定通道授权设置时使用名称空间。例如,消息传送系统100可以具有app1.foo和app1.system.notifications通道,其中“app1”是名称空间的名称。系统可以允许客户端订阅和发布到app1.foo通道。然而,客户端仅可以订阅但不发布到app1.system.notifications通道。图1B示出示例性客户端装置上的软件的功能层。客户端装置(例如,客户端102)是诸如个人计算机、膝上型计算机、平板计算机、智能电话、智能手表或服务器计算机等的数据处理设备。其它类型的客户端装置也是可以的。应用层104包括将与PubSub系统100集成的最终用户应本文档来自技高网...

【技术保护点】
1.一种计算机实现的方法,包括:维护多个通道,其中各通道包括一个或多个缓冲器中所存储的有序的多个消息,各缓冲器包括相应的存活时间,各缓冲器包括多个副本,以及各副本驻留在相应的多个节点上;检测所述多个节点中的第一节点的故障,其中所述第一节点存储针对一个或多个第一通道的第一缓冲器的相应的第一副本,以及至少一个订户订阅所述一个或多个第一通道的消息;对于具有驻留在所述第一节点上的第一副本的第一缓冲器,将所述多个节点中的任意其它节点标识为存储所述第一缓冲器的第二副本的第二节点;将所述至少一个订户从所述第一节点重定向至所述第二节点;以及针对所述至少一个订户,检索所述第二节点上的所述第二副本中所存储的消息。

【技术特征摘要】
【国外来华专利技术】2016.08.31 US 15/252,9891.一种计算机实现的方法,包括:维护多个通道,其中各通道包括一个或多个缓冲器中所存储的有序的多个消息,各缓冲器包括相应的存活时间,各缓冲器包括多个副本,以及各副本驻留在相应的多个节点上;检测所述多个节点中的第一节点的故障,其中所述第一节点存储针对一个或多个第一通道的第一缓冲器的相应的第一副本,以及至少一个订户订阅所述一个或多个第一通道的消息;对于具有驻留在所述第一节点上的第一副本的第一缓冲器,将所述多个节点中的任意其它节点标识为存储所述第一缓冲器的第二副本的第二节点;将所述至少一个订户从所述第一节点重定向至所述第二节点;以及针对所述至少一个订户,检索所述第二节点上的所述第二副本中所存储的消息。2.根据权利要求1所述的方法,其中,将所述多个节点中的任意其它节点标识为存储所述第一缓冲器的第二副本的第二节点包括:基于所述多个节点中的任意其它节点中的各节点的相应工作负载来选择所述第二节点。3.根据权利要求1所述的方法,还包括:将至少一个发布者从所述第一节点重定向至所述第二节点;以及将来自所述至少一个发布者的消息发送至所述第二节点以存储在所述第二副本中。4.根据权利要求1所述的方法,其中,所述第二节点被配置为将来自发布者的用以存储在所述第二副本中的消息转发至所述多个节点中的任意第三节点以将所述消息存储在所述第一缓冲器的第三副本中。5.根据权利要求1所述的方法,其中,所述第一缓冲器的多个副本包括副本链,所述副本链包括至少头部副本和尾部副本。6.根据权利要求5所述的方法,其中,所述链中的特定副本中所存储的消息被转发至所述链的下一相邻副本以进行存储,直到所述头部副本中的消息被存储在所述尾部副本中为止。7.根据权利要求6所述的方法,其中,检测所述多个节点中的所述第一节点的故障包括:检测所述第一副本中所存储的一个或多个消息未被转发至所述链中的所述第一副本的下一相邻副本以进行存储的故障。8.根据权利要求5所述的方法,其中,所述第一副本包括所述头部副本,以及至少一个发布者被配置为在被重定向至所述第二节点之前将所述第一缓冲器的消息发送至所述第一节点以存储在所述第一副本中。9.根据权利要求8所述的方法,其中,检测所述多个节点中的所述第一节点的故障包括:检测所述至少一个发布者将消息发送至所述第一节点以存储在所述第一副本中的故障。10.根据权利要求5所述的方法,其中,检测所述多个节点中的所述第一节点的故障包括:检测所述至少一个订户在被重定向至所述第二节点之前从所述第一副本获得消息的故障,以及其中所述第一副本是所述链中的特定副本。11.一种消息传送系统,包括:通道管理器,其被配置为维护多个通道,其中各通道包括一个或多个缓冲器中所存储的有序的多个消息,各缓冲器包括相应的存活时间,各缓冲器包括多个副本,各副本驻留在相应的多个节点上,以及其中所述通道管理器能够操作以进行包括以下各项的操作:检测所述多个节点中的第一节点的故障,其中所述第一节点存储针对一个或多个第一通...

【专利技术属性】
技术研发人员:Y·哈弗里L·瓦尔金F·E·林德
申请(专利权)人:萨托里环球有限责任公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1