用于向多个订户提供消息的系统和方法技术方案

技术编号:21855777 阅读:27 留言:0更新日期:2019-08-14 01:43
本发明专利技术提供了包括编码在计算机存储装置上的计算机程序的方法、系统和设备,用于:从多个发布者接收多个消息;将所述消息中的各消息分配给多个通道其中之一,其中各通道包括有顺序的多个消息;根据所述顺序将所述通道中的各通道的消息存储在相应存储缓冲器中,其中各存储缓冲器具有第一持续时间的相应存活时间;对于特定通道,从相应存储缓冲器检索所述特定通道的消息;将所述特定通道的检索消息存储在传递缓冲器中,所述传递缓冲器包括数据块,其中各数据块包括第二持续时间的相应存活时间;以及将所述传递缓冲器中所存储的消息提供给所述特定通道的多个订户。

System and method for providing information to multiple subscribers

【技术实现步骤摘要】
【国外来华专利技术】用于向多个订户提供消息的系统和方法相关申请的交叉引用本申请要求2016年9月23日提交的美国专利申请15/274,281的优先权,其全部内容通过引用而并入于此。
技术介绍
本说明书涉及数据通信系统,特别地涉及用于实现实时、可扩展的发布-订阅消息传送的系统。发布-订阅模式(或者“PubSub”)是利用软件系统实现的数据通信消息传送布置,其中,所谓的发布者将消息发布到主题,并且所谓的订户接收与他们所订阅的特定主题有关的消息。每个主题可以存在一个或多个发布者,并且发布者一般不知道什么样的订户(如果有的话)将接收到所发布的消息。一些PubSub系统不缓存消息或者具有小的缓存,这意味着订户可能不会接收到在订阅特定主题之前所发布的消息。在消息发布激增期间、或者随着特定主题的订户的数量增加,PubSub系统可能易受到性能不稳定性的影响。
技术实现思路
在各种实现中,这里所描述的系统和方法利用共享结构(即,“快速缓冲器”)来存储多个订户可以同时读取的消息数据。为了避免与锁定相关联的问题,所述系统和方法利用“无锁”或非阻塞方法。订户能够在没有阻塞或者断定出从何处读取数据以及直到快速缓冲器中的哪个点的情况下抓取许多数据。所述系统和方法与现有方法相比提供了许多益处。例如,发布者不受订户或相关订阅逻辑的限制,并且与存在多少订户(如果有的话)无关地具有稳定的发布速度。系统的这种属性可以例如通过使发布和订阅组件和/或进程彼此无关来实现。在一些情况下,发布和订阅组件可以通过无锁存储器写入和读取(例如,使用这里所描述的快速缓冲器方法)来共享信息。可选地或另外,发布和订阅组件和/或进程可被配置为利用不同的物理核,使得例如发布和订阅组件仅通过存储器控制器和总线来进行交互,这通常很快以及/或者不存在瓶颈。可选地或另外,系统灵活性允许发布者在需要时优先(不优先)于订户。在优选示例中,快速缓冲器具有或利用松耦合的发布和订阅循环。这允许发布速度在需要时与订阅速度不同,以及/或者允许例如根据系统负载来选择或优先各速度。例如,在发布活动多、以及/或者优选不限制发布活动的情况下,发布循环可以优先于订阅循环。为了实现这种优先,发布循环可以自旋,就好像不存在订户一样(例如,可以比处理订阅循环更快地处理发布循环)。换句话说,可能期望通过允许系统即使在订户不能跟上或接收所有消息数据的情况下也传递尽可能多的发布消息数据,来使发布者不受到阻塞或限制。可选地或另外,在订阅活动多的情况下,可能期望使订户不受到阻塞或限制、以及/或者对发布者施加自动背压以使得发布活动减少。例如,可以通过创建两个工作体池(例如,一个用于发布者的池和一个用于订户的池)并且使用操作系统内核调度器优先机制为两个池中的线程设置不同的优先级,来实现这种优先。设想了用于使发布者和订户优先或不优先的其它方法。所述系统和方法的另一优点是,订户可以利用数据聚合,并且可以定义聚合多少数据。一般来说,数据聚合的使用和/或聚合大小优化可以有助于实现更好的性能特征以及/或者减少存储器使用。例如,在传递消息时,消息可被分组为块或批(例如,快速缓冲器中的以逗号分隔的消息列表)。在准备要发送的消息数据时,所述系统和方法可以决定对于下一块要聚合多少消息。在连接中交换的分组的大小可以取决于连接属性(例如,带宽和/或延时)和/或TCP连接的状态。在一些情况下,这允许用于收集连接消息以将更多消息聚合在块中的进程产生较大的分组,从而更好地利用网络容量并且以较少的开销提供较高的吞吐量。所述系统和方法的另一益处是,根据消息活动,订户可以通过在性能和延时之间找到最佳平衡来改变数据读取的频率。例如,使用这里所描述的通知器方法,可以有效地监视具有较多消息活动的通道以获得新消息,而具有较少消息活动的通道可以接收较不有效的监视。订户优选地是隔离的,并且不会相互影响。如果一个订户比消息流慢,则其他订户一般不会受慢订户的影响并且可以跟上消息流。所述系统和方法的另一益处是提高了模块性,这允许系统组件独立地实现。优选地,通过存储器来完成交互,因此可以将订户放置在单独的各个进程上以访问快速缓冲器。在可选方法中,系统的多个逻辑部分可以紧耦合以减少接口开销(例如,准备要导出的数据并对输入进行解析)以及/或者使改变更具粒度且精确。这种方法的缺点是降低了隔离度、降低了可靠性、以及通常有较低的效率(例如,由于一个组件的负载影响其它组件)。在这里所描述的系统和方法的示例中使用的相反方法是将组件彼此隔离并且实现增加的可靠性和效率以及系统组件的更好管理和优先。一般来说,在开销成本较低或至少可接受的情况下,隔离更有效。例如,在系统和方法中,开销成本一般较低,因为进程可以通过对快速缓冲器进行写入和读取来进行通信。所述系统和方法可以受益于这种模块化,而具有很少或者没有增加的成本。在一些实现中,在使用操作系统级别的共享存储器的情况下,发布者和订户可以在不同的进程中实现以及/或者可以开始使用以不同语言编写的实现。一般来说,通过使用快速缓冲器的交互将通信限制为仅两个操作:写入存储器以及从存储器读取。可以避免使用消息、信号、锁和/或同步原语。如这里所讨论的,测试结果表示所述系统和方法极大地改进了从发布者到订户的消息传送速率。一般来说,本说明书中所描述的主题的一个方面可以体现在如下的计算机实现的方法中,该计算机实现方法包括如下的动作:从多个发布者接收多个消息;将所述消息中的各消息分配给多个通道其中之一,其中各通道包括有顺序的多个消息;根据所述顺序将所述通道中的各通道的消息存储在一个或多个相应存储缓冲器中,其中各存储缓冲器具有第一持续时间的相应存活时间(TTL);对于特定通道,从相应存储缓冲器(例如具有尚未期满的存活时间的存储缓冲器,并且根据所述顺序)检索所述特定通道的消息;根据所述顺序将所述特定通道的检索消息存储在传递缓冲器中,所述传递缓冲器包括一个或多个数据块,其中各数据块包括第二持续时间(例如,比所述第一持续时间长)的相应存活时间;以及将所述传递缓冲器中所存储的消息提供给所述特定通道的多个订户。该方面的其它实施例包括相应的系统、设备、存储装置和计算机程序。这些和其它方面的实现可以可选地包括以下特征中的一个或多个。将所述传递缓冲器中所存储的消息提供给所述特定通道的多个订户还可以包括:判断特定订户的连接状况;以及基于此,将所述传递缓冲器中所存储的消息中的一个或多个消息提供给所述特定订户。该方面还可以包括:判断为所述特定订户具有到所述特定通道的当前连接,并且基于此,将所述传递缓冲器中所存储的一个或多个消息提供给所述特定订户,所述一个或多个消息包括具有已经期满的相应存活时间的一个或多个数据块中所存储的消息。该方面还可以包括:判断为所述特定订户不具有到所述特定通道的当前连接,并且基于此:(i)将具有尚未期满的相应存活时间的一个或多个数据块中所存储的一个或多个消息提供给所述特定订户;以及(ii)防止所述特定订户接收具有已经期满的相应存活时间的一个或多个数据块中所存储的一个或多个消息。将所述特定通道的检索消息存储在所述传递缓冲器中可以包括:将所述特定通道中的顺序较前的检索消息存储在如下数据块中,其中所述数据块相比用于存储所述特定通道中的顺序较后的检索消息的数据块而言具有将会较早期满的存活时本文档来自技高网...

【技术保护点】
1.一种计算机实现的方法,包括:从多个发布者接收多个消息;将所述消息中的各消息分配给多个通道其中之一,其中各通道包括有顺序的多个消息;根据所述顺序将所述通道中的各通道的消息存储在一个或多个相应存储缓冲器中,其中各存储缓冲器具有第一持续时间的相应存活时间;对于特定通道,从相应存储缓冲器检索所述特定通道的消息;根据所述顺序将所述特定通道的检索消息存储在传递缓冲器中,所述传递缓冲器包括一个或多个数据块,其中各数据块具有第二持续时间的相应存活时间;以及将所述传递缓冲器中所存储的消息提供给所述特定通道的多个订户。

【技术特征摘要】
【国外来华专利技术】2016.09.23 US 15/274,2811.一种计算机实现的方法,包括:从多个发布者接收多个消息;将所述消息中的各消息分配给多个通道其中之一,其中各通道包括有顺序的多个消息;根据所述顺序将所述通道中的各通道的消息存储在一个或多个相应存储缓冲器中,其中各存储缓冲器具有第一持续时间的相应存活时间;对于特定通道,从相应存储缓冲器检索所述特定通道的消息;根据所述顺序将所述特定通道的检索消息存储在传递缓冲器中,所述传递缓冲器包括一个或多个数据块,其中各数据块具有第二持续时间的相应存活时间;以及将所述传递缓冲器中所存储的消息提供给所述特定通道的多个订户。2.根据权利要求1所述的方法,其中,将所述传递缓冲器中所存储的消息提供给所述特定通道的多个订户还包括:判断特定订户的连接状况;以及基于此,将所述传递缓冲器中所存储的消息中的一个或多个消息提供给所述特定订户。3.根据权利要求2所述的方法,其中,还包括:判断为所述特定订户具有到所述特定通道的既存连接;以及基于此,将所述传递缓冲器中所存储的一个或多个消息提供给所述特定订户,所述一个或多个消息包括具有已经期满的相应存活时间的一个或多个数据块中所存储的消息。4.根据权利要求2所述的方法,其中,还包括:判断为所述特定订户具有到所述特定通道的新连接,并且基于此:(i)将具有尚未期满的相应存活时间的一个或多个数据块中所存储的一个或多个消息提供给所述特定订户;以及(ii)防止所述特定订户接收具有已经期满的相应存活时间的一个或多个数据块中所存储的一个或多个消息。5.根据权利要求1所述的方法,其中,将所述特定通道的检索消息存储在所述传递缓冲器中包括:将所述特定通道中的顺序较前的检索消息存储在如下数据块中,其中所述数据块相比用于存储所述特定通道中的顺序较后的检索消息的数据块而言具有将会较早期满的存活时间。6.根据权利要求1所述的方法,其中,所述传递缓冲器包括所述数据块的链表,其中所述特定通道中的顺序最后的检索消息被存储在所述链表的尾数据块中。7.根据权利要求6所述的方法,其中,将所述特定通道的检索消息存储在所述传递缓冲器中还包括:从所述链表中移除所述链表头处的一个或多个数据块,其中所移除数据块具有已经期满的相应存活时间。8.根据权利要求1所述的方法,其中,所述传递缓冲器驻留在第一计算节点上;以及所述传递缓冲器中所存储的消息通过驻留在所述第一计算节点上的相应计算进程而被提供给所述多个订户中的各订户。9.根据权利要求8所述的方法,其中,所述存储缓冲器驻留在与所述第一计算节点不同的相应第二计算节点上。10.根据权利要求1所述的方法,其中,所述传递缓冲器包括可见区域和不可见区域。11.根据权利要求10所述的方法,其中,具有既存连接的订户被许可访问来自所述可见区域和所述不可见区域这两者的数据。12.根据权利要求10所述的方法,其中,具有新连接的订户被许可访问来自所述可见区域的数据,并且不被许可访...

【专利技术属性】
技术研发人员:I·米尔雅可夫
申请(专利权)人:萨托里环球有限责任公司
类型:发明
国别省市:美国,US

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

1