分布式系统的消息全序机制

文档序号:1775267 发布日期:2019-12-03 浏览:15次 >En<

阅读说明:本技术 分布式系统的消息全序机制 (The message total order mechanism of distributed system ) 是由 张霖涛 白巍 左格非 李博杰 于 2018-05-25 设计创作,主要内容包括:本公开公开的分布式系统的消息全序机制,通过时间戳结合消息屏障的方式来实现消息的全序控制,并利用交换机对屏障进行处理,有效地提高了实现消息全序控制的处理效率。(The message total order mechanism of distributed system disclosed in the disclosure, realizes the total order control of message by way of timestamp combination message barrier, and is handled using interchanger barrier, effectively improves the treatment effeciency for realizing the control of message total order.)

分布式系统的消息全序机制

背景技术

在分布式系统中,为了实现分布式事务(transactions)处理和分布式存储的一致性(consistency)的需要,希望在分布式系统中实现一种全序(Total Order)的消息处理机制,即要求各个接收端能够按照相同的消息投递(delivery)顺序来处理接收到的消息。

发明内容

提供本发明实施例内容是为了以精简的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。

本公开提出了一种分布式系统的消息全序机制,通过时间戳结合消息屏障(barriers)的方式来实现消息的全序控制,并利用交换机对消息屏障进行处理,有效地提高了实现消息全序控制的处理效率。

上述说明仅是本公开技术方案的概述,为了能够更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为了让本公开的上述和其它目的、特征和优点能够更明显易懂,以下特举本公开的

具体实施方式

附图说明

图1为描绘分布式系统的消息全序机制的示例环境之一的框图;

图2为描绘分布式系统的消息全序机制的示例环境之二的框图;

图3为描绘分布式系统的消息全序机制的示例环境之三的框图;

图4为描绘分布式系统的消息全序机制的示例环境之四的框图;

图5为描绘分布式系统的消息全序机制的示例环境之五的框图;

图6为描绘分布式系统的消息全序机制的示例环境中消息结构变形之一的框图;

图7为描绘分布式系统的消息全序机制的示例环境中消息结构变形之二的框图;

图8为描绘分布式系统的消息全序机制的示例环境中消息结构变形之三的框图;

图9为描绘分布式系统的消息全序机制的示例环境中消息结构变形之四的框图;

图10为描绘分布式系统的消息全序机制的示例环境之六的框图;

图11为描绘分布式系统的消息全序机制的示例环境之七的框图;

图12为描绘分布式系统的消息全序机制的示例环境之八的框图;

图13为实现消息全序机制的交换机的实现示例之一的结构示意框图;

图14为实现消息全序机制的交换机的实现示例之二的结构示意框图;

图15为实现消息全序机制的交换机的实现示例之三的结构示意框图;

图16为实现消息全序机制的交换机的实现示例之四的结构示意框图;

图17为实现消息全序机制的交换机的实现示例之五的结构示意框图;

图18为实现消息全序机制的交换机的实现示例之六的结构示意框图;

图19为实现消息全序机制的说明性处理过程之一的流程示意图;

图20为实现消息全序机制的说明性处理过程之二的流程示意图;

图21为实现消息全序机制的说明性处理过程之三的流程示意图;

图22为实现消息全序机制的说明性处理过程之四的流程示意图;

图23为实现消息全序机制的说明性处理过程之五的流程示意图;

图24为实现消息全序机制的说明性处理过程之六的流程示意图;

图25为示例性的电子设备的结构框图;

图26为示例性的计算设备的结构框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本公开中,术语“技术”、“机制”可以指代例如(一个或多个)系统、(一个或多个)方法、计算机可读指令、(一个或多个)模块、算法、硬件逻辑(例如,现场可编程门阵列(FPGA))、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)和/或上述上下文以及在本公开通篇中所允许的(一项或多项)其它技术。

概览

在分布式系统中,多个主机通过网络连接。当其中一个主机发生事件时,该主机作为发送端(以下称作发送端主机)会向其他多个作为接收端的主机(以下称作接收端主机)散播(scatter)消息。这里所说的散播是指:发送端主机以同一时间戳,给不同的接收端主机发送消息。这些消息可以是相同内容的消息(多播或者广播),也可以是不同内容的消息。

在分布式系统中,存在多个发送端主机和多个接收端主机,每个接收端主机会接收到不同的发送端主机散播来的消息。但由于存在网络延迟等原因,同一个发送端主机在同一时刻向多个接收端主机散播出的消息,到达接收端主机的时刻可能是不同的。当多个发送端主机进行散播操作时,接收端主机收到消息的顺序可能和多个发送端主机的事件发生的先后顺序是不一样的。

希望在分布式系统中实现全序(Total Order)的消息处理机制,即要求各个接收端主机能够按照相同的顺序对消息进行投递(delivery),从而满足分布式事务(transactions)处理和分布式存储的一致性(consistency)的需要。

例如,发送端主机S1在T1时刻向接收端主机R1和接收端主机R2分别发送了时间戳为T1的消息M11和消息M12,而发送端主机S2在T2时刻向接收端主机R1和接收端主机R2分别发送了时间戳为T2的消息M21和消息M22。在能够实现消息全序的分布式系统中,接收端主机R1对消息M11和消息M21的投递顺序,应当与接收端主机R2对消息M12和M22的投递顺序是一致的。例如,如果接收端主机R1的投递顺序为消息M11→消息M21,则要求接收端主机R2的投递顺序为消息M12→消息M22,反之,如果接收端主机R1的投递顺序为消息M21→消息M11,则要求接收端主机R2的投递顺序为消息M22→消息M12。

需要说明的是,消息全序机制要求各个接收端主机的投递顺序统一即可,并不要求各个接收端主机要按照发送端主机发送消息的先后顺序投递。本公开所说的消息投递是将接收到的消息提供给应用程序。

本公开提出了一种分布式系统的消息全序机制,来实现全序的消息散播(Total-Order Message Scattering),其主要通过时间戳结合消息屏障(barriers)的方式来实现消息的全序控制,并可利用交换机对屏障进行处理,有效地提高了实现消息全序控制的处理效率。

在本公开中涉及两种消息屏障,一种消息屏障为数据消息屏障,其表示基本含义为:在其对应的链路上,不会再收到时间戳小于该数据消息屏障的数据消息,也就是说,在其对应的链路上,时间戳小于该数据消息屏障的数据消息均已被发送。通过时间戳结合数据消息屏障可以实现基本的消息全序控制。另一种消息屏障为应答消息屏障,其表示的基本含义为:在其对应的链路上,时间戳小于或者等于应答消息屏障的数据消息都已经被接收端主机接收到。应答消息屏障有助于解决分布式系统的传输丢包问题,通过应答屏障可以在出现丢包的情况下,仍然能够保证可靠的消息全序控制。

此外,本公开提出了一种时间戳的调整机制,经过对各个主机的时间戳进行调整,使得在整个分布式系统上,缩短了由于链路延时而导致的消息投递的等待时间。

下面将分别详细介绍本公开的消息全序机制的示例实现方案。

说明性环境

下面描述的环境仅构成一个示例,而不旨在将各项权利要求限于任一特定操作环境。可以使用其它环境而不背离所要求保护的主题的精神和范围。

说明性环境A

作为示例,如图1所示,其为描绘分布式系统的消息全序机制的示例环境之一的框图100,如图2所示,其为描绘分布式系统的消息全序机制的示例环境之二的框图200。如框图100和200所示,分布式系统包括多个发送端主机101、多个交换机102以及多个接收端主机103。多个发送端主机101与多个接收端主机103之间通过多个交换机102来传输数据消息104,数据消息104中至少包含时间戳105、数据消息屏障106以及数据108。多个发送端主机101、多个交换机102以及多个接收端主机103之间形成了多条链路107。发送端主机101和接收端主机103都是分布式系统中的主机,只不过为了清楚地描述数据消息104传输过程,才进行了区分,本领域技术人员可以理解,发送端主机101和接收端主机103是可以互换角色,从而进行数据消息104的反向传输。

为了便于后续的示例性说明,对框图100和框图200中示例性的示出的多个发送端主机101、多个交换机102、多个接收端主机103以及多条链路107分别进行了进一步的编号,具体为发送端主机101a~101d、交换机102a~102d、接收端主机103a~103b以及链路107a~107j,在泛指发送端主机、交换机、接收端主机以及链路时,将采用101~103以及107的编号,在具体说明某一个发送端主机、交换机、接收端主机以及链路时,将采用101a~101d、102a~102d、103a~103b以及107a~107j的编号。

同理为了清楚说明交换机对于数据消息屏障106的处理过程,将框图100和200中的链路上的数据消息屏障106进一步编号为106a~106j,并在图中简单标记为“屏障”。

发送端主机101的处理:

发送端主机101可响应于事件的发生产生多个数据消息104,这些数据消息104被写入相同的时间戳105,向多个接收端主机103发送。时间戳105可以根据发送端主机101的本地物理时间而生成,时间戳105将按照数据消息104发送的顺序而递增。在本公开中,分布式系统的各个主机的本地物理时钟的增长速度是相同的或者是基本相同的(在合理的误差范围内),或者说各个主机本地物理时钟是同步的或者是基本同步的。

在本公开中,数据消息104是指需要被接收端主机103投递处理的消息。发送端主机101生成的数据消息104中,除了时间戳105之外,还包含数据消息屏障106。对于发送端主机101,该数据消息屏障106所表示的含义为:发送端主机101不会再发送时间戳小于该数据消息屏障106的数据消息104,即时间戳小于该数据消息屏障106的数据消息104均已经被发送端主机101发出。在发送端主机101生成数据消息104时,数据消息屏障106可以被设置为与时间戳105一致。

需要说明的是,发送端主机101向多个接收端主机发送的数据消息104可以承载有相同的数据,也可以承载有不同的数据。此外,发送端主机101可以向包括自身在内的分布式系统中的全部接收端主机103发送数据消息104,也可以向分布式系统中的部分接收端主机103发送数据消息104。

交换机102的处理:

如框图100所示,从发送端主机101到接收端主机103之间形成了多条传输消息的链路。以框图100中示例的情形,交换机之间以及交换机与主机之间形成了链路107a~107j。框图100仅用于说明从发送端主机101到接收端主机103进行消息的单向传输的情形,对于每个交换机102而言,将接收消息的链路称为入口链路,将发送消息的链路称为出口链路。

框图100中的每个交换机102执行如下处理:

从入口链路接收数据消息104,并获取数据消息104中包含的数据消息屏障106。每个交换机102可能会有多个入口链路和多个出口链路,例如,交换机102a的入口链路为链路107a和107b,出口链路为链路107e和链路107g,因此,交换机102会接收到来自多个入口链路的数据消息104,在一条链路上也会接收到多个数据消息104。

交换机102在获取到各个数据消息104中的数据消息屏障106后,确定数据消息屏障106的最小值,然后修改接收到的数据消息104中的数据消息屏障106,使得数据消息屏障106等于所确定的最小值。之后,再将修改后的数据消息104从出口链路发送。

例如,交换机102a从链路107a中接收到的数据消息104中携带的数据消息屏障106a为1,在链路107b中接收到的数据消息104的数据消息屏障106b为4,经过比较可知,数据消息屏障106a小于数据消息屏障106b,在交换机102a中,当前数据消息屏障106的最小值为1,因此,交换机102a将其收到的数据消息104中的数据消息屏障106都修改为1。然后,将修改后的数据消息104从链路107e和链路107f向下一跳的交换机102c和交换机102d发送。

在交换机102中,会不断地收到携带有数据消息屏障106的数据消息104,数据消息屏障106的最小值也会被不断的更新,之前确定出的数据消息屏障106的最小值也会参与到随后到来的数据消息屏障106的最小值的处理中。

通过上述的交换机102的处理过程可知,无论交换机102的入口链路和出口链路有多少个,经过交换机102处理后,其向下一跳发送的数据消息104中的数据消息屏障106所表示的含义为:交换机102不会在该数据屏障106所在出口链路上再发送时间戳小于该数据屏障106的数据消息104,即在该数据屏障106所在出口链路上时间戳小于该数据消息屏障106的数据消息104均已发送。从整个框图100可以看出,经过多个交换机102的层级式处理后,最终任意一个接收端主机103获得的数据消息屏障106应当是与其相关的链路中最小的数据消息屏障106。

在框图100中,由于发送端主机101a~101d向接收端主机103a和103b都分别发送了数据消息104,因此,接收端主机103a和103b所接收到的数据消息屏障106是整个分布式系统中消息屏障106的最小值。

不过,需要说明的是,对于任意接收端主机103,其接收到的数据消息屏障106并不必须是整个分布式系统中的最小值,只要能保证该接收端主机103所接收到的数据消息屏障106是与其相关的链路中的数据消息屏障106的最小值即可,即保证接收端主机103所接收到的数据消息屏障106是其能够接收到的数据消息104中数据消息屏障106的最小值,这样就能够保证接收端主机103实现数据消息的全序投递。

如框图200所示,作为另外一种示例性的环境,其与框图100的区别在于,缺少了链路107f,在框图200中,发送端主机101a和发送端主机101b没有向接收端主机103b发送数据消息104,在这种情况下,接收端主机103b接收到的数据消息屏障106的最小值为2,而接收端主机103a接收到的数据消息屏障106的最小值为1,虽然接收端主机103b获得的数据消息屏障106的最小值不是整个分布式系统的最小值,但是,接收端主机103b所获得的最小值2已经是其应当接收到的数据消息104中的数据消息屏障106的最小值,对于接收端主机103b而言,已经满足了进行消息全序控制的条件。

接收端主机103的处理:

如框图100和框图200所示,经过多个交换机102的传输处理,数据消息104到达接收端主机103,每个接收端主机103可以与一个交换机102(存在一个入口链路)连接,也可以与多个交换机102连接(存在多个入口链路)。框图100和框图200仅示出接收端主机103与一个交换机102连接的情形。

框图100和200中的每个接收端主机103执行如下处理:

接收端主机103从入口链路接收数据消息104,然后根据接收到的数据消息104中所包含的时间戳105对消息进行排序,排序后的数据消息104可以先存放于接收端主机103的缓存队列120中。

接收端主机103从接收到的数据消息104中获取数据消息屏障106,确定数据消息屏障106的最小值119,并对时间戳105小于该最小值119的数据消息104进行投递。

由于在发送端主机101中,数据消息屏障106的初始值可以等于发送数据消息104的时间戳105。在经过每个交换机102的处理后,数据消息屏障106会被交换机102设置为该交换机102的各个入口链路中数据消息屏障106的最小值,并通过出口链路向下一级交换机102或者接收端主机103发出。通过这样的处理机制,在数据消息屏障106到达接收端主机103后,对于接收端主机103而言,数据消息屏障106的最小值119的物理含义为:在与接收端主机103相关的全部链路中,不会出现时间戳105小于该最小值119的数据消息104,即时间戳105小于该最小值119的数据消息104均已被发送。因此,接收端主机103可以安全地对缓存队列120中时间戳105小于该数据消息屏障106的数据消息104进行投递,而不会破坏分布式系统的消息全序。

基于框图100和框图200的分布式系统对数据消息104的处理,实现了数据消息104的全序控制,使得在多个接收端主机103中,对于数据消息104的处理能够保持相同的顺序。

在消息全序的实现方面,引入了数据消息屏障106,并通过交换机对数据消息屏障106的处理,使得数据消息104在传输链路上,对于任意一个交换机102,其向出口链路发送的数据消息104中携带的数据消息屏障106都是当前数据消息屏障106的最小值,从而确保在数据消息104到达接收端主机103后,接收端主机103能够根据数据消息104中携带的数据消息屏障106,获知各个发送端主机101向该接收端主机103已经发出的数据消息104的最小时间戳,也就是说,对于某一个接收端主机103而言,通过其接收到的数据消息屏障106能够确定,该接收端主机103不会再接收到时间戳小于数据消息屏障106的数据消息104,因此,可以对接收到的时间戳小于数据消息屏障106的数据消息104进行投递处理,从而确保数据消息104的全序投递。

在上述的分布式系统中,时间戳105和数据消息屏障106为消息全序的控制信息,这些控制信息只需要伴随数据消息104一起,从发送端主机101到接收端主机103传递一次即可,降低了分布式系统中为了实现消息全序控制而产生的信息传输量,也降低了分布式系统为了实现消息全序的协调难度。

此外,交换机102仅对数据消息屏障106进行最小值的确定和修改,而不涉及对数据消息104中的数据108的处理,因此,不会阻碍数据消息104的传输。也就是说,在实现消息全序控制方面,将消息的控制层和数据层进行了分离,交换机只处理全序控制层方面的信息,而不会影响消息的正常的传输,从而可以在现有商用交换机的结构下高效实现。

此外,作为一种变形方式,在发送端主机101中,数据消息屏障106的初始值也可以为空,而由与该发送端主机101连接的交换机102来写入该数据消息屏障106。例如,在与发送端主机101连接的交换机102中,可以将从与该发送端主机101对应的入口链路上接收到的数据消息104中的时间戳105,作为初始的数据消息屏障106。可以看出,这种变形方式和前述的由发送端主机101将数据消息104中的时间戳105作为数据消息屏障106的初始值的处理方式实质上是相同的。

说明性环境B

在框图100和框图200所示出的示例中,作为消息全序控制信息的数据消息屏障106是通过数据消息104来传送的。在另一种示例中,数据消息屏障106也可以通过数据消息104以外的信标消息来传送,与数据消息104相对比,信标消息的结构相对简单,不需要承载数据。

如图3所示,其为描绘分布式系统的消息全序机制的示例环境之三的框图300。框图300中包括多个发送端主机301、多个交换机302以及多个接收端主机303,多个交换机302之间、多个交换机302与多个发送端主机301以及多个接收端主机303之间形成了多个链路307。

在框图300中,在发送端主机301上,产生两种消息:一种为数据消息304,另一种为信标消息309。数据消息304中包含时间戳305和数据308。框图300中的数据消息304与框图100和框图200中的数据消息104的区别在于,其不包含数据消息屏障106。在框图300中,数据消息屏障306被包含在信标消息309中。

发送端主机301照常生成并发送数据消息304,而信标消息309可以以一定的时间间隔被生成并发送。信标消息309相当于以一定的时间间隔***到数据消息304所形成的数据消息流中。信标消息309中的数据消息屏障306可以根据生成信标消息309时的本地物理时间来生成(相当于信标消息309的时间戳),也可以为当前时间段中已经生成并发送的数据消息304的时间戳305。为了能够更加精确地设定数据消息屏障306,在生成信标消息309时,可以采用最近生成并发送的数据消息304的时间戳305作为数据消息屏障306。

在框图300中,在各个交换机302中,从信标消息309中获取数据消息屏障306并确定最小值,然后修改接收到的信标消息309中的数据消息屏障306,使得数据消息屏障306等于确定出的最小值。之后,再将修改后的信标消息309从出口链路发送。在框图300的示例中,交换机302对于消息全序控制信息的处理只针对信标消息309而不再针对数据消息304。在正常情况下,由于信标消息309的数量会小于数据消息304的数量,并且信标消息309的结构比较简单,能够节省交换机302的计算资源。

作为一种变形方式,交换机302在确定出数据消息屏障306的最小值后,可以只向出口链路发送包含数据消息屏障306的最小值的信标消息309,而不再发送数据消息屏障306大于该最小值的信标消息309,这样的方式能够减少向下游交换机和/或接收端主机的信标消息的数量,从而能够进一步节省网络中的控制消息开销以及交换机和接收端主机的处理资源。

接收端主机303在接收到数据消息304和信标消息309,按照数据消息304包含的时间戳305对数据消息304进行排序,排序后的数据消息304可以先存放于接收端主机303的缓存队列320中。接收端主机303还从信标消息309中获取数据消息屏障306并确定最小值319。接收端主机303会根据其确定出的数据消息屏障306的最小值319对数据消息304进行投递处理,即只投递时间戳305小于数据消息屏障306的最小值319的数据消息304。

在框图300所示的示例中,信标消息309的发送的频度,可以根据实际需要而灵活设定,信标消息309生成和发送的频度越高,接收端主机303接收到的消息全序控制信息越精确,对数据消息304的投递也会更加及时。当然,从节省发送端主机301和交换机302的计算资源的角度考虑,减少信标消息309的发送的频度,能够起到节省计算资源的效果。

说明性环境C

如图4所示,其为描绘分布式系统的消息全序机制的示例环境之四的框图400。框图400中包括多个发送端主机401、多个交换机402以及多个接收端主机403,多个交换机402之间、多个交换机402与多个发送端主机401以及多个接收端主机403之间形成了多个链路407。

在框图400中,在发送端主机401上,产生两种消息:一种为数据消息404,另一种为信标消息409。数据消息404中包含时间戳405、数据消息屏障406以及数据408。与框图300中的示例不同之处在于,框图400中的数据消息404和信标消息409中均包含数据消息屏障406,在向交换机402和接收端主机403传递数据消息屏障406方面,信标消息409作为数据消息404的补充。

在发送端主机401上,如果在预设的时间间隔后,没有产生和发送数据消息404,则可以生成信标消息409并向链路发送,从而更新链路中传送的数据消息屏障406,这样处理能够避免由于部分发送端主机401的数据消息404的发送量的减少而导致的接收端主机403的投递延迟,提高分布式系统对数据消息404的投递处理效率。信标消息409中的数据消息屏障406可以根据生成信标消息409时的本地物理时间来生成(相当于信标消息409的时间戳)。

交换机402从接收到的数据消息404和信标消息409中获取到数据消息屏障406,并确定获取到的数据消息屏障406的最小值,然后修改其接收到的数据消息404和信标消息409中的数据消息屏障406,使之等于确定出的最小值。之后,再将修改后的数据消息404从出口链路发送。

作为一种变形方式,交换机402在确定出数据消息屏障406的最小值后,可以只向出口链路发送包含数据消息屏障406的最小值的信标消息409,而不再发送数据消息屏障406大于该最小值的信标消息409,这样的方式能够减少向下游交换机和/或接收端主机的信标消息的数量,从而能够进一步节省网络中的控制消息开销以及交换机和接收端主机的处理资源。

接收端主机403接收到数据消息404,然后根据接收到的数据消息404中所包含的时间戳405对消息进行排序,排序后的数据消息404可以先存放于接收端主机403的缓存队列420中。

接收端主机403从接收到的数据消息404和信标消息409中获取数据消息屏障406,并确定数据消息屏障406的最小值419,并对时间戳405小于该最小值419的数据消息404进行投递。

说明性环境D

以上的示例说明了如何在分布式系统中实现消息全序的基本方案。本公开还针对分布式系统中丢包的情形提出实现消息全序的解决方案,以降低丢包问题对实现消息全序的影响。

如图5所示,其为描绘分布式系统的消息全序机制的示例环境之五的框图500。框图500中包括多个发送端主机501、多个交换机502以及多个接收端主机503,多个交换机502之间、多个交换机502与多个发送端主机501以及多个接收端主机503之间形成了多个链路507。

与前述的示例不同之处在于,框图500所示的示例中,引入了应答屏障消息511和丢包标识512。在框图500中,发送端主机501生成数据消息504,数据消息504包括时间戳505、数据消息屏障506、数据508、应答消息屏障511以及丢包标识512。

丢包检测及处理机制

作为一种检测并处理丢包的机制的示例,在分布式系统中,发送端主机501向接收端主机503发送数据消息504,数据消息504中会携带有消息编号,该消息编号是连续递增的。接收端主机503在接收到该数据消息504后,会向发送端主机501发送应答消息,该应答消息中携带有与数据消息504相同的消息编号,发送端主机501接收到该应答消息后,确认了数据消息504已经被接收端主机503收到。

如果接收端主机503在连续接收发送端主机501发送的数据消息504的过程中,发现消息编号出现了不连续的情形,则判定为发生了丢包事件,因此,会向发送端主机501再次发送包含有出现不连续情形之前的消息编号的应答消息。例如,接收端主机503接收到了消息编号为1005和1007的数据消息504,由于消息编号为1005的消息为正常接收,因此,之前已经发送过包含消息编号为1005的应答消息。当接收端主机503发现了消息编号不连续的情形后,会再次发送消息编号为1005的应答消息,从而使得发送端主机501知道出现了丢包并且发生丢包的是哪个数据消息504。

在发生了丢包事件的情况下,发送端主机501会出现两种情形,一种是接收到了两次消息编号相同的应答消息(双次应答消息),另一种情形是在预设的时间范围内没有收到应答消息(应答消息超时)。当发送端主机501检测到任何一种情形出现时,就判断为发生了丢包事件,并重发发生丢包的数据消息504。

当接收端主机503接收到重发的数据消息504后,会恢复到没有丢包之前的状态继续发送应答消息。需要说明的是,接收端主机503不需要再发送发生丢包的数据消息504的应答消息,而是接着丢包之前的顺序接着发送未发送的应答消息。例如,如前面的示例,接收端主机503接收到了消息编号为1005和1007的数据消息504,由于消息编号为1005的消息为正常接收,因此,接收端主机503已经发送过包含消息编号为1005的应答消息,当接收端主机503接收到消息编号为1007的数据消息504后识别出了消息编号为1006的数据消息504发生了丢包,并向发送端主机501再次发送消息编号为1005的应答消息,发送端主机501重发消息编号为1006的数据消息504,接收端主机503接收到消息编号为1006的数据消息504后,不必再向发送端主机501发送消息编号为1006的应答消息,而直接发送消息编号为1007的应答消息即可,只要发送端主机501接收到消息编号为1007的应答消息,就能够知道消息编号为1007以及消息编号小于1007的数据消息504都被接收端主机503收到了。

在交换机502上,通过丢包计数器(packet loss counter)可以发现是否出现了丢包事件,并且交换机502可比发送端主机501和接收端主机503更早地检测到发生了丢包事件。此外,对于某一个交换机502,如果其检测到所接收到的数据消息504中的丢包标识512被设置为丢包状态,则该交换机502也会认为为其所在的链路上出现了丢包事件,也会视为当前处于丢包状态。

应答消息屏障的处理

应答消息屏障511所表示的含义为:时间戳505小于或者等于该应答消息屏障511的数据消息504都已经被接收端主机503接收到。应答消息屏障511的初始值为在发送端主机501上已经收到应答消息的数据消息504中时间戳505的最大值。

在交换机502上,除了对数据消息屏障506进行层级式处理外,也对应答消息屏障511执行类似的处理。即从入口链路接收数据消息504,并获取数据消息504中包含的数据消息屏障506和应答消息屏障511。分别确定数据消息屏障506的最小值和应答消息屏障511的最小值,然后修改接收到的数据消息504中的数据消息屏障506和应答消息屏障511,使得数据消息屏障506和应答消息屏障511等于确定出的各自的最小值。之后,再将修改后的数据消息504从出口链路发送。

丢包标识的处理

丢包标识512的作用在于标识在当前链路上是否存在丢包状态。

在发送端主机501上,如果检测到发生丢包事件,在该丢包没有被重发并且接收到接收端主机503返回的应答消息之前,视为处于丢包状态,在丢包状态下,发送端主机501生成的数据消息504中,丢包标识512的初始值将被设置为丢包状态。如果该丢包已经重发并且收到了来自接收端主机503返回的应答消息,并且上次丢包之后没有再检测到新的丢包事件,则视为丢包状态消失,发送端主机501在生成新的数据消息504时,丢包标识512的初始值将被设置为非丢包状态。

需要说明的是,作为另一种实现示例,由于交换机502会先于发送端主机501和接收端主机503发现丢包事件,因此,对于丢包标识512的处理也可以只由交换机502完成即可,发送端主机501不对丢包标识512做任何处理,可以始终将发送的数据消息504中的丢包标识512设置为非丢包状态。

在交换机502上,如果检测到发生丢包事件,则记录当前的数据消息屏障506的最小值(如果检测到多次丢包,则会不断更新记录的最小值),在交换机502确定出的应答消息屏障511的最小值没有达到记录的数据消息屏障506的最小值之前,视为处于丢包状态,在丢包状态下,交换机502将其接收到的数据消息504中的丢包标识512设置为丢包状态。当交换机502确定出的应答消息屏障511的最小值达到记录的数据消息屏障506的最小值后,视为丢包状态消失,则不会再对数据消息504中的丢包标识512进行设置处理。

在接收端主机503上,在从入口链路接收数据消息504后,根据接收到的数据消息504中所包含的时间戳505对消息进行排序,排序后的数据消息504可以先存放于接收端主机503的缓存队列520中。

接收端主机503从接收到的数据消息504中获取数据消息屏障506和应答消息屏障511,并分别确定数据消息屏障506和应答消息屏障511的最小值。

接收端主机503对数据消息504中包含的丢包标识512进行判断,根据判断结果,来执行不同的消息投递处理。

如果检测到尚未投递的数据消息504中的丢包标识512为丢包状态,则记录当前的数据消息屏障506的最小值(如果检测到多次丢包,则会不断更新记录的最小值),在接收端主机503确定出的应答消息屏障511的最小值没有达到记录的数据消息屏障506的最小值之前,视为处于丢包状态,在处于丢包状态下,接收端主机503以应答消息屏障511的最小值518为基准对数据消息504进行投递,即对时间戳505小于该应答消息屏障511的最小值518的数据消息504进行投递。

当接收端主机503确定出的应答消息屏障511的最小值达到记录的数据消息屏障506的最小值后,视为丢包状态消失,则接收端主机503以数据消息屏障506的最小值519为基准,对数据消息504进行投递,即对时间戳505小于该数据消息屏障506的最小值519的数据消息504进行投递。

在框图500的示例中,数据消息504中设置数据消息屏障506和应答消息屏障511以及丢包标识512构成了高可靠性的全序控制信息,能够实现在发生丢包时,及时检测到丢包,并且使得各个接收端主机503能够将消息屏障从数据消息屏障506切换为应答消息屏障511,从而实现了可靠性较高的消息全序的处理机制,而在没有发生丢包时,接收端主机503仍然以数据消息屏障506作为进行消息投递的处理基准,从而保证了正常情况下的分布式系统的消息投递效率。

说明性环境E

基于框图500消息全序控制机制,在消息结构方面,还可以进行如下几种变形。

作为一种变形示例,如图6所示,其为描绘分布式系统的消息全序机制的示例环境中消息结构变形之一的框图600。与框图500的示例的消息结构的不同之处在于,在框图600中,存在两种消息,一种为数据消息604,另一种为信标消息609。数据消息604中包含时间戳605、数据消息屏障606、数据608以及丢包标识612。信标消息609中包含应答消息屏障611。

在针对丢包标识612、数据消息屏障606以及应答消息屏障611的处理机制上,与框图500的示例的情形是一样。只不过,在框图600所示的示例中,增加了承载应答消息屏障611的信标消息609,将全序控制信息的传递与数据消息604的传输进行了分离。与框图300中的信标消息309传输方式类似,信标消息609可以以一定的时间间隔被生成并发送。信标消息609相当于以一定的时间间隔***到数据消息604所形成的数据消息流中。

作为另外一种变形示例,如图7所示,其为描绘分布式系统的消息全序机制的示例环境中消息结构变形之二的框图700。与框图600不同之处在于,通过两个信标消息来分别承载数据消息屏障606和应答消息屏障611,为了进行区分,对各个消息进行了重新的编号,数据消息701中包含时间戳605、数据608以及丢包标识612,将承载数据消息屏障606的信标消息称作第一信标消息702,将承载应答消息屏障611称作第二信标消息703。第一信标消息702和第二信标消息703可以以一定的时间间隔被生成并发送。第一信标消息702和第二信标消息703相当于以一定的时间间隔***到数据消息604所形成的数据消息流中。

作为再一种变形示例,如图8所示,其为描绘分布式系统的消息全序机制的示例环境中消息结构变形之三的框图800。在框图800中,数据消息801中包含时间戳605、数据608以及丢包标识612,而信标消息802中包含数据消息屏障606和应答消息屏障611。在框图800的消息结构示例中,将全序控制信息放在了一个信标消息802中进行传输,与承载数据608的数据消息801进行了分离处理,从而使得对数据消息801的传输影响更小。

作为又一种变形示例,如图9所示,其为描绘分布式系统的消息全序机制的示例环境中消息结构变形之四的框图900。在框图900中,数据消息901中包含时间戳605、数据消息屏障606、数据608、应答消息屏障611以及丢包标识612,信标消息902中包含数据消息屏障606和应答消息屏障611以及丢包标识612。

框图900中的信标消息902将作为数据消息901在向交换机602和接收端主机603传递全序控制信息方面的补充,当发送端主机601在预设的时间间隔后,没有产生和发送数据消息901,则可以生成信标消息902并向链路发送,从而更新链路中传送的数据消息屏障606、应答消息屏障611以及丢包标识612,这样处理能够避免由于部分发送端主机601的数据消息901的发送量的减少而导致的接收端主机603的投递延迟,提高分布式系统对数据消息901的投递处理效率。

需要说明的是,由于丢包标识612的值为逻辑值,其不涉及到最小值的确定等处理,即使在预设的时间间隔后,部分接收端主机603没有发送携带有丢包标识612的消息,也不会对整个消息全序机制造成影响。因此,作为一种框图900的消息结构的变形,丢包标识612可以只包含在数据消息901中,信标消息902包含数据消息屏障606和应答消息屏障611。

此外,作为一种变形方式,对于框图600中包含应答消息屏障611的信标消息609、框图700中包含数据消息屏障606的第一信标消息702以及包含应答消息屏障611的第二信标消息703、框图800中包含数据消息屏障606和应答消息屏障611的信标消息802、框图900中包含数据消息屏障606和应答消息屏障611以及丢包标识612的信标消息902,各个框图中的交换机在确定出数据消息屏障606的最小值和/或应答消息屏障611的最小值后,可以只向出口链路发送包含数据消息屏障606的最小值和/或应答消息屏障611的最小值的信标消息,而不再发送数据消息屏障606和/或应答消息屏障611大于该该最小值的信标消息,这样的方式能够减少向下游交换机和/或接收端主机的信标消息的数量,从而能够进一步节省网络中的控制消息开销以及交换机和接收端主机的处理资源。

说明性环境F

在前述的说明性环境中,介绍了如何实现消息全序的处理机制,以及针对分布式系统的丢包情形,如何实现高可靠性的消息全序处理机制。下面介绍一下,针对链路延时而设计的提高分布式系统中数据消息投递效率的技术方案。

如图10所示,其为描绘分布式系统的消息全序机制的示例环境之六的框图1000。如图11所示,其为描绘分布式系统的消息全序机制的示例环境之七的框图1100。如图12所示,其为描绘分布式系统的消息全序机制的示例环境之八的框图1200。

在框图1000、1100、1200所示的示例中,是针对分布式系统中,发送端主机与接收端主机之间可能存在的链路延时而设计的技术方案,因此,框图中省略了交换机。框图中示出的各个链路均为发送端主机到接收端主机之间所形成链路,链路中经过的交换机视为该链路的一部分。框图中,仅以两个发送端主机S1和S2以及两个接收端主机R1和R2之间的消息传输为例进行说明,在实际的分布式系统中,发送端主机和接收端主机可以是任意多个。

在分布式系统中,各个发送端主机到各个接收端主机的链路延时情况可能是不一样的,从各个发送端主机发送的时间戳相同的数据消息,由于链路延时的不同,到达接收端主机的会存在较大的时间偏差。在本公开中,假定各个主机物理时钟之间是同步的或者误差在合理的范围内。

如框图1000中,发送端主机S1在时刻0向接收端主机R1和R2分别发送了消息M10(此时,消息M10的本地物理时间TC为0,时间戳TM为0),发送端主机S2也在时刻0向接收端主机R1和R2分别发送了消息M20(此时,消息M20的本地物理时间TC为0,时间戳TM为0)。图中用双圆圈中的数字表示消息对应的本地物理时间TC,根据消息被传输的状态,本地物理时间TC可以表示发送该消息的本地物理时间或者接收该消息的本地物理时间。双方块中的数字表示该消息的时间戳TM,框图1000中,时间戳TM的值等于发送该消息时的本地物理时间。

发送端主机S1与接收端主机R1之间的链路L11的链路延时为10,发送端主机S1与接收端主机R2之间的链路L12的链路延时为10,发送端主机S2与接收端主机R1之间的链路L21的链路延时为1,发送端主机S2与接收端主机R2之间的链路L22的链路延时为5。图中示出的均为单程链路延时,RTT(Round-Trip Time,往返延时)的值为单程链路延迟的两倍。

消息M10到达接收端主机R1后表示为消息M11,由于链路L11的链路延时的影响,消息M11对应的本地物理时间为10。消息M20到达接收端主机R1后表示为消息M21,由于链路L21的链路延时的影响,消息M21对应的本地物理时间为1。从本地物理时间的差异可以看出,消息M11和M21是同时从发送端主机S1和S2发送的,但是到达接收端主机R1时,消息M11相比消息M21延迟了9个时间单位,由于消息M11和消息M21的时间戳是相同,根据消息全序的要求,消息M11和消息M21需要同时被投递,因此,在接收端主机R1中,在接收到消息M21后需要等待9个时间单位才能对消息M21和消息M11进行投递,即投递延时DL1为9。

同理,消息M10到达接收端主机R2后表示为消息M12,由于链路L12的链路延时的影响,消息M12对应的本地物理时间为10。消息M20到达接收端主机R2后表示为消息M22,由于链路L22的链路延时的影响,消息M22对应的本地物理时间为5。从本地物理时间的差异可以看出,消息M12和M22是同时从发送端主机S1和S2发送的,但是到达接收端主机R2时,消息M12相比消息M22延迟了5个时间单位,由于消息M12和消息M22的时间戳是相同,根据消息全序的要求,消息M12和消息M22需要同时被投递,因此,在接收端主机R2中,在接收到消息M22后需要等待5个时间单位才能对消息M22和消息M12进行投递,即投递延时DL2为5。

针对上述的消息投递等待现象,本公开提出了一种对针对时间戳进行调整的机制,通过对发送端主机的时间戳进行调整,以使得不同的发送端主机发送的时间戳接近的消息,到达接收端的本地时间也是接近的,从而能够减轻接收端主机在进行消息排序后的消息投递等待。时间戳的调整通过在发送端主机和接收端主机之间发送承载有时间戳的时间调整消息的方式来实现,下面通过如下三个阶段来示例说明时间戳调整的技术方案以及调整结果。

阶段一:前向聚合(取时间戳最大值)

多个发送端主机分别向多个接收端主机发送第一时间调整消息,第一时间调整消息中包含第一时间戳,该第一时间戳为发送该第一时间调整消息时的本地物理时间。

接收端主机收到多个主机发送来的第一时间调整消息后,对第一时间消息中的时间戳进行调整,使得接收到的第一时间调整消息到达接收端主机的本地物理时间是相同的,即将接收第一时间调整消息的本地物理时间进行对齐。然后确定本地物理时间对齐后的第一时间戳中的最大值。

生成第二时间调整消息,将该第一时间戳中的最大值作为第二时间戳包含在第二时间调整消息中,并向多个发送端主机发送。

下面结合框图1000中示例环境,来说明一下上述处理过程。消息M10和M20(到达接收端主机后,表示为消息M11、M12、M21以及M22)视为第一时间调整消息。消息M10和M20中包含的时间戳视为第一时间戳。时间戳为0的消息M10和M20在时刻0从发送端主机S1和S2向接收端主机R1和R2发送。

接收端主机R1的处理

消息M11到达接收端主机R1的本地物理时间为10,消息M21到达对应的本地物理时间为1。接收端主机R1对消息M11和M21进行对齐,以消息M11到达的本地物理时间作为基准来调整消息M21,生成了消息M21’,消息M21’对应的本地物理时间为10,时间戳为9。消息M21’是一个虚拟的消息,假设在发送端主机S2上,如果在时刻9向接收端主机R1发送时间戳为9的消息M21’,则消息M21’将会和消息M11同时到达接收端主机R1。消息M21’实际上包含了链路L11和链路L21之间的链路延时之差的信息。当然,也可以以消息M21为基准来调整消息M11,原理是相同的。

确定消息M11和消息M21’之中时间戳的最大值。经过比较可知,时间戳的最大值为9。然后,接收端主机R1生成作为上述第二时间调整消息的消息Mmax1,将确定出的时间戳的最大值作为消息Mmax1的时间戳,向发送端主机S1和S2分别发送。由于确定时间戳的最大值的处理时间很短,可以忽略不计,因此,消息Mmax1发送的本地物理时间视为与接收到消息M11的本地物理时间是一致的,即发送消息Mmax1时的本地物理时间为10。

接收端主机R2的处理

消息M12到达接收端主机R2的本地物理时间为10,消息M22到达对应的本地物理时间为5。接收端主机R2对消息M12和M22进行对齐调整,以消息M12到达的本地物理时间作为基准来调整消息M22,生成了消息M22’,消息M22’对应的本地物理时间为10,时间戳为5。消息M22’是一个虚拟的消息,假设在发送端主机S2上,如果在时刻5向接收端主机R2发送时间戳为5的消息M22’,则消息M22’将会和消息M12同时到达接收端主机R2。消息M22’实际上包含了链路L21和链路L22之间的链路延时之差的信息。当然,也可以以消息M22作为基准来调整消息M12,原理是相同的。

确定消息M22’和消息M12之中时间戳的最大值。经过比较可知,时间戳的最大值为5。然后,接收端主机R2生成作为上述第二时间调整消息的消息Mmax2,将确定出的时间戳的最大值作为消息Mmax2的时间戳,向发送端主机S1和S2分别发送。由于确定时间戳的最大值的处理时间很短,可以忽略不计,因此,消息Mmax2发送的本地物理时间视为与接收到消息M12的本地物理时间是一致的,即发送消息Mmax2时的本地物理时间为10。

阶段二:后向聚合(取时间戳与本地物理时间之差的最小值)以及RTT补偿

在阶段一中,接收端主机向发送端主机分别发送了第二时间调整消息,发送端主机在接收到该第二时间调整消息后,对第二时间调整消息中的第二时间戳进行往返延时(RTT)补偿,生成第三时间戳。

接收端主机计算接收到第二时间调整消息的本地物理时间与该第二时间调整消息对应的第三时间戳之间的第一差值,并获取该第一差值的最小值,然后将该最小值作为后续发送消息的时间戳调整值。具体的调整方式为,在生成消息时,在本地物理时间上加上该时间戳调整值作为该消息的时间戳。

下面结合框图1100中示例环境,来说明一下上述处理过程。在阶段一中,接收端主机R1和R2生成了消息Mmax1和Mmax2,并分别向发送端主机S1和S2发送。为了便于说明,在框图1100中,将阶段一中生成的消息Mmax1和Mmax2重新进行了编号,变为消息M30和消息M40。消息M30和消息M40作为第二时间调整消息向发送端主机S1和S2分别发送,为了便于说明,当消息M30和消息M40到达发送端主机S1和S2后表示为消息M31、消息M41、消息M32以及消息M42。

发送端主机S1的处理

发送端主机S1接收到消息M31和消息M41的本地物理时间均为20。在各个消息的时间戳上补偿RTT值后,生成消息M31’(时间戳为29)和消息M41’(时间戳为25)。

在发送端主机S1上,计算消息M31’和消息M41’的时间戳与本地物理时间的差值,消息M31’的时间戳与本地物理时间的差值为9,消息M41’的时间戳与本地物理时间的差值为5,通过比较可知最小差值为5,取该最小差值为今后消息的时间戳的调整值。框图1100中,用一个虚拟的消息Mmin1表示基于该调整值生成的新的消息,该消息Mmin1所表达的含义为:今后发送消息时,可以在本地物理时间的基础上,加上上述计算得出的最小差值5,来生成时间戳。由于消息Mmin1表示新一轮的消息,因此,将本地物理时间用0来表示。

发送端主机S2的处理

发送端主机S2接收到消息M32和消息M42的本地物理时间分别11和15。在各个消息的时间戳上补偿RTT值后,生成消息M32’(时间戳为11)和消息M42’(时间戳为15)。

在发送端主机S2上,计算消息M32’和消息M42’的时间戳与本地物理时间的差值,消息M32’的时间戳与本地物理时间的差值为0,消息M42’的时间戳与本地物理时间的差值为0,最小差值为0,取该最小差值为今后消息的时间戳的调整值。框图1100中,用一个虚拟的消息Mmin2表示基于该调整值生成的新的消息,由于该最小差值为0,因此,在下一轮发送消息时,不需要调整时间戳,仍然以生成消息时的本地物理时间作为时间戳。

阶段三:时间戳调整后的延迟情况

经过阶段一和阶段二的处理,已经完成了一次时间戳的调整流程,阶段三的流程主要是为了说明进行时间戳调整后的投递延时的改善结果。

下面结合框图1200中示例环境,来说明时间戳调整后的延时情况。在新的一轮消息发送中,在发送端主机S1和S2上,新的消息的时间戳会根据在阶段二确定下来的时间戳调整值进行调整,其中,发送端S1的时间戳调整值为5,发送端主机S2的时间戳调整值为0。为了便于说明,在框图1200中,将发送的新一轮消息编号为消息M50和消息M60。其中,消息M50在本地物理时间为0的时刻由发送端主机S1发送,调整后的时间戳为5,消息M60在本地物理时间为0的时刻由发送端主机S2发送,时间戳为0。

接收端主机R1的延时情况

消息M50和消息M60到达接收端主机R1后,表示为消息M51和消息61。其中,消息M51的本地物理时间为10,时间戳为5,消息M61的本地物理时间为1,时间戳为0。根据消息全序的要求,时间戳相同的消息需要同时被投递。为了比较消息投递的延时情况,对消息M51和消息M61进行变换,使得其时间戳相同。例如,以消息M51为基准,对消息M61进行变换,生成消息M61’,变换后的时间戳为5,变换后到达接收端主机R1的本地物理时间为6。按照消息全序机制,消息M61’和消息M51被同时进行投递,由于消息M61’和消息M51到达接收端R1的本地物理时间之差为4,即投递延时DL3为4。相比框图1000中的投递延时DL1为9的情形,投递延时被缩短了5个时间单位。

接收端主机R2的延时情况

类似地,消息M50和消息M60到达接收端主机R2后,表示为消息M52和消息62。其中,消息M52的本地物理时间为10,时间戳为5,消息M62的本地物理时间为5,时间戳为0。以消息M52为基准,对消息M62进行变换,生成消息M62’,变换后的时间戳为5,变换后到达接收端主机R2的本地物理时间为10。按照消息全序机制,消息M62’和消息M52被同时进行投递,消息M62’和消息M52到达接收端R2的本地物理时间之差为0,即投递延时DL4为0。相比框图1000中的投递延时DL2为5的情形,投递延时被缩短了5个时间单位。

基于上述的时间戳调整机制,计算出了各个发送端主机需要进行调整的时间戳调整值,该时间戳调整值是根据整个分布式系统的链路延时情况确定的,使得在消息全序机制下,时间戳相同的消息到达接收端主机的时间尽可能的接近,从而减少了各个接收端主机的消息投递延时。

在上述的框图1000、1100、1200中,虽然以两个发送端主机和两个接收端主机示例性说明了时间戳调整机制,显然,该时间戳调整机制同样适用于其它数目的发送端主机以及接收端主机所构成的分布式系统,其调整原理是一样的。

另外,上述第一时间调整消息和第二时间调整消息中所承载的信息,也可以通过前述示例中的数据消息和/或信标消息来承载。可以通过在数据消息或者信标消息设置一些信息域,用于传递在阶段一和阶段二中确定的时间戳的最大值以及时间戳与本地物理时间之差的最小值。

此外,上述示例中,仅示出了进行一轮消息交互来进行时间戳调整的处理过程,实际上,由于链路延时可能是不稳定,并且从整个分布式系统来看,不同时间段在各个链路上消息传输的频度也是不同的,上述的时间戳调整处理可以进行多个轮次,可以定期执行,也可以伴随着数据消息的传输而动态地进行调整。

另外,框图中对时间相关的数值表示,仅仅是为了示例说明,因此,没有赋予单位,在实际的分布式系统中,上述的链路延时、本地物理时间、时间戳等数值可以采用小时、分、秒、微秒、毫秒等单位,也可以是基于这些时间单位的进行编码后的数值。

交换机具体实现示例

分布式系统可以作为一个数据中心(Data Center),其中包括多个主机,多个主机之间通过多个交换机连接,用以在主机之间传输消息。本公开中的交换机可以为可编程式的交换机,通过对交换机进行程序配置,并通过交换机中的处理器执行相应的程序配置,来实现对数据消息以及信标消息处理。当然,交换机中针对数据消息以及信标消息的处理逻辑也可以通过现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等部件来实现。

交换机具体实现示例之一

如图13所示,其为实现消息全序机制的交换机的实现示例之一的结构示意框图1300。框图1300中所示的交换机1301被配置为实现前述的框图100和框图200所示的分布式系统中的消息全序机制。框图1300中的消息结构可以与框图100和框图200中示出的消息结构相同,其中,数据消息包含了时间戳、数据消息屏障以及数据。为了简化说明,框图1300中的消息结构中未示出时间戳和数据。交换机1301包括:消息接收端口1302、处理器1303以及消息发送端口1304。

消息接收端口1302,用于从至少一个入口链路接收数据消息。如框图1300中所示,消息接收端口1302接收到n个数据消息13051~1305n,各个数据消息13051~1305n中分别包含数据消息屏障13061~1306n,其中,n为大于1的正整数。

处理器1303,用于确定接收到的数据消息13051~1305n所包含的数据消息屏障13061~1306n的最小值1307,并将数据消息13051~1305n中的数据消息屏障13061~1306n都修改为数据消息屏障的最小值1307。修改后的数据消息表示为数据消息13051’~1305n’。处理器1303还用于执行数据消息13051’~1305n’的路由控制处理,以将数据消息13051’~1305n’发送至下一跳的交换机或者主机。

消息发送端口1304,用于向至少一个出口链路发送数据消息13051’~1305n’。

交换机具体实现示例之二

作为另一种示例,如图14所示,其为实现消息全序机制的交换机的实现示例之二的结构示意框图1400。框图1400中所示的交换机1401被配置为实现前述的框图300所示的分布式系统中的消息全序机制。框图1400中的消息结构可以与框图300中示出的消息结构相同,其中,数据消息包含了时间戳和数据,而信标消息包含了数据消息屏障。为了简化说明,框图1400中的消息结构中未示出时间戳和数据。交换机1401包括:消息接收端口1402、第一处理器1403、第二处理器1404以及消息发送端口1405。

消息接收端口1402,用于从至少一个入口链路接收数据消息以及信标消息。如框图1400中所示,消息接收端口1402接收到n个数据消息14081~1408n以及m个信标消息14061~1406m。信标消息14061~1406m中分别包含数据消息屏障14071~1407m,其中,m和n均为大于1的正整数。信标消息14061~1406m相当于以一定的时间间隔***到数据消息14081~1408n所形成的数据消息流中,因此,m可以小于n,m的数量越大,数据消息屏障起到的消息全序控制的作用也会越精确,信标消息14061~1406m可以以固定的时间间隔***到数据消息14081~1408n所形成的数据消息流中。

消息接收端口1402会对数据消息和信标消息进行分流,将数据消息14081~1408n发送给第一处理器1403进行处理,将信标消息14061~1406m发送给第二处理器1404进行处理。

第一处理器1403可以是交换机的主处理器,其主要功能是对数据消息14081~1408n进行路由控制处理,并将处理后的数据消息14081~1408n发送给消息发送端口1405。

第二处理器1404,用于对信标消息14061~1406m进行路由控制处理,并确定信标消息14061~1406m所包含的数据消息屏障14071~1407m的最小值1409,并将信标消息14061~1406m中的数据消息屏障14071~1407m都修改为数据消息屏障的最小值1409。修改后的信标消息表示为信标消息14061’~1406m’,并将信标消息14061’~1406m’发送给消息发送端口1405。第二处理器1404可以作为辅助处理器,专门用来处理与消息全序控制有关的信标消息。

消息发送端口1405,用于向至少一个出口链路发送数据消息14081~1408n和信标消息14061’~1406m’。

在框图1400所示的交换机结构中,通过将消息屏障信息从数据消息中分离出来,通过信标消息来承载,并设置主处理器以外的第二处理器来进行数据消息屏障的相关处理,从而能够将数据消息的转发与消息全序控制信息的处理进行分离,不会对正常的数据消息的转发造成影响。

作为一种变形示例,框图300和框图1400中所示的消息结构(数据消息包含了时间戳和数据,而信标消息包含了数据消息屏障),也可以通过框图1300中的交换机结构来进行处理。即将框图1400中第一处理器1403和第二处理器1404的处理都由框图1300中的处理器1303来完成。

交换机具体实现示例之三

作为再一种示例,如图15所示,其为实现消息全序机制的交换机的实现示例之三的结构示意框图1500。框图1500中所示的交换机1501被配置为实现前述的框图400所示的分布式系统中的消息全序机制。框图1500中的消息结构可以与框图400中示出的消息结构相同,其中,数据消息包含时间戳、数据以及数据消息屏障,信标消息包含数据消息屏障。为了简化说明,框图1500中的消息结构中未示出时间戳和数据。交换机1501包括:消息接收端口1502、处理器1503以及消息发送端口1504。

消息接收端口1502,用于从至少一个入口链路接收数据消息以及信标消息。如框图1500中所示,消息接收端口1502接收到n个数据消息15081~1508n以及m个信标消息15061~1506m。数据消息15081~1508n中分别包含数据消息屏障15051~1505n,信标消息15061~1506m中分别包含数据消息屏障15071~1507m,其中,m和n均为大于1的正整数,其中m可以小于n。与框图1400中不同之处在于,在携带数据消息屏障方面,信标消息15061~1506m是作为数据消息15081~1508n的补充而被生成的。在发送端主机上,如果在预设的时间间隔后,没有生成数据消息,则就生成信标消息来传递当前的数据消息屏障。因此,信标消息15061~1506m也相当于***到了数据消息15081~1508n所形成的数据消息流中,只不过,信标消息15061~1506m的分布并不规律,取决于数据消息15081~1508n的连续情况。

消息接收端口1502会将数据消息15081~1508n和将信标消息15061~1506m发送给处理器1503进行处理。

处理器1503对数据消息15081~1508n和信标消息15061~1506m进行路由控制处理,并确定数据消息15081~1508n和信标消息15061~1506m所包含的数据消息屏障15051~1505n和数据消息屏障15071~1507m的最小值1509,并将数据消息15081~1508n和信标消息15061~1506m中的数据消息屏障都修改为该数据消息屏障的最小值1509。修改后的数据消息和信标消息表示为信标消息15061’~1506m’和数据消息15081’~1508n’。处理器1503将信标消息15061’~1506m’和数据消息15081’~1508n’发送给消息发送端口1504。

消息发送端口1504,用于向至少一个出口链路发送信标消息15061’~1506m’和数据消息15081’~1508n’。

交换机具体实现示例之四

作为又一种示例,如图16所示,其为实现消息全序机制的交换机的实现示例之四的结构示意框图1600。框图1600中所示的交换机1601被配置为实现前述的框图500所示的分布式系统中的消息全序机制。框图1600中的消息结构可以与框图500中示出的消息结构相同,其中,数据消息包含时间戳、数据、数据消息屏障、丢包标识以及应答消息屏障。为了简化说明,框图1600中的消息结构中未示出时间戳和数据。框图1600的消息结构中,增加了应答消息屏障和丢包标识,相应地,交换机的处理中,也增加了检测丢包以及对应答消息屏障和丢包标识方面的处理机制。其中,交换机1601包括:消息接收端口1602、处理器1603以及消息发送端口1604。

消息接收端口1602,用于从至少一个入口链路接收数据消息。如框图1600中所示,消息接收端口1602接收到n个数据消息16051~1605n。数据消息16051~1605n中分别包含数据消息屏障16061~1606n、应答消息屏障16081~1608n以及丢包标识16071~1607n。消息接收端口1602会将数据消息16051~1605n发送给处理器1603进行处理。

处理器1603对数据消息16051~1605n进行路由控制处理,并分别确定数据消息16051~1605n所包含的数据消息屏障16061~1606n的最小值1609和应答消息屏障16081~1608n的最小值1610,并将数据消息16051~1605n中的数据消息屏障和应答消息屏障都修改为各自对应的最小值。修改后的数据消息表示为数据消息16051’~1605n’。

处理器1603还会进行丢包检测。处理器1603可以通过设置在交换机上的丢包计数器(packet loss counter)来发现上一跳交换机到该交换机之间的入口链路是否出现了丢包。此外,如果处理器1603检测到数据消息16051~1605n中的任意一个丢包标识16071~1607n被设置为丢包状态,则也会判断为交换机1601所在的链路上出现了丢包事件,会视为处于丢包状态。

如果检测到出现丢包状态,则记录当前的数据消息屏障的最小值1609(如果检测到多次丢包,则会不断更新记录的最小值),在应答消息屏障的最小值1610没有达到记录的数据消息屏障的最小值1609之前,视为处于丢包状态,在丢包状态下,处理器1603将其接收到的数据消息16051~1605n中的丢包标识16071~1607n设置为丢包状态。当确定出的应答消息屏障的最小值1610达到记录的数据消息屏障的最小值1609后,视为丢包状态消失,则不会再对数据消息16051~1605n中的丢包标识16071~1607n进行设置处理,也就是说,在非丢包状态下,数据消息16051’~1605n’中的丢包标识16071~1607n与数据消息16051~1605n中的丢包标识16071’~1607n’是一样的。需要说明的是,在丢包状态没有消失之前,处理器1603会将其收到的数据消息中的丢包标识都设置为丢包状态。处理器1603将数据消息16051’~1605n’发送给消息发送端口1604。

消息发送端口1604,用于向至少一个出口链路发送数据消息16051’~1605n’。

框图1600中的消息结构可以有如下几种变形示例:

框图1600的消息结构变形之一

与框图600示例的消息结构对应,存在两种消息,一种为数据消息,另一种为信标消息。数据消息中包含时间戳、数据消息屏障、数据以及丢包标识。信标消息中包含应答消息屏障。在框图600的消息结构中,将应答消息屏障分离出来独立的信标消息来进行承载。

相应地,交换机1601的处理器1603将会收到上述两种消息,执行相应的路由控制处理,并分别对消息中的数据消息屏障、丢包标识以及应答消息屏障执行处理,这些处理与前述框图1600中详细说明的处理过程,在技术原理上是相同的。

框图1600的消息结构变形之二

与框图700示例的消息结构对应,通过两个信标消息来分别承载数据消息屏障和应答消息屏障。在框图700的消息结构中,存在三种消息:数据消息,包含时间戳、数据以及丢包标识;第一信标消息,包含数据消息屏障;第二信标消息,包含应答消息屏障。第一信标消息和第二信标消息以一定的时间间隔***到数据消息所形成的数据消息流中。

相应地,交换机1601的处理器1603将会收到上述三种消息,执行相应的路由控制处理,并分别对三种消息中的数据消息屏障、丢包标识以及应答消息屏障执行处理,这些处理与前述框图1600中详细说明的处理过程,在技术原理上是相同的。

框图1600的消息变形结构之三

与框图800示例的消息结构对应,通过一个信标消息来承载数据消息屏障和应答消息屏障。在框图800的消息结构中,存在两种消息:数据消息,其包含时间戳、数据以及丢包标识;信标消息,包含数据消息屏障和应答消息屏障。该信标消息以一定的时间间隔***到数据消息所形成的数据消息流中。

相应地,交换机1601的处理器1603将会收到上述的两种消息,执行相应的路由控制处理,并分别对两种消息中的数据消息屏障、丢包标识以及应答消息屏障执行处理,这些处理与前述框图1600中详细说明的处理过程,在技术原理上是相同的。

框图1600的消息变形结构之四

与框图900示例的消息结构对应,通过数据消息和信标消息来共同承载数据消息屏障和应答消息屏障以及丢包标识。在框图900的消息结构中,存在两种消息:数据消息,其包含时间戳、数据、数据消息屏障、应答消息屏障以及丢包标识;信标消息,包含数据消息屏障和应答消息屏障以及丢包标识。在传递全序控制信息方面,该信标消息将作为数据消息的补充,当发送端主机在预设的时间间隔后,如果没有生成和发送数据消息,则会生成信标消息,并向链路中发送。从交换机的角度来看,信标消息相当于***到了数据消息所形成的数据消息流中,只不过,信标消息分布并不规律,取决于数据消息的连续情况。

此外,由于丢包标识的值为逻辑值,其不涉及到最小值的确定等处理,即使在预设的时间间隔后,部分接收端主机没有发送携带有丢包标识的消息,也不会对整个消息全序机制造成影响。因此,作为一种消息结构的变形,丢包标识也可以只包含在数据消息中,而信标消息包含数据消息屏障和应答消息屏障。

相应地,交换机1601的处理器1603将会收到上述的两种消息,执行相应的路由控制处理,并分别对两种消息中的数据消息屏障、丢包标识以及应答消息屏障执行处理,这些处理与前述框图1600中详细说明的处理过程,在技术原理上是相同的。

交换机具体实现示例之五

作为又一种示例,如图17所示,其为实现消息全序机制的交换机的实现示例之五的结构示意框图1700。框图1700中所示的交换机1701被配置为实现前述的框图800所示的分布式系统中的消息全序机制。框图1700中的消息结构可以与框图800中示出的消息结构相同,存在两种消息:数据消息,其包含时间戳、数据以及丢包标识;信标消息,其包含数据消息屏障和应答消息屏障。为了简化说明,框图1700中的消息结构中未示出时间戳和数据。交换机1701包括:消息接收端口1702、第一处理器1703、第二处理器1704以及消息发送端口1705。

消息接收端口1702,用于从至少一个入口链路接收数据消息。如框图1700中所示,消息接收端口1702接收到n个数据消息17111~1711n以及m个信标消息17061~1706m。数据消息17111~1711n分别包含丢包标识17121~1712n,信标消息17061~1706m中分别包含数据消息屏障17071~1707m以及应答消息屏障17081~1708m,其中,m和n均为大于1的正整数。信标消息17061~1706m相当于以一定的时间间隔***到数据消息17081~1708n所形成的数据消息流中,因此,m可以小于n,m的数量越大,数据消息屏障起到的消息全序控制的作用也会越精确,信标消息17061~1706m可以以固定的时间间隔***到数据消息17111~1711n所形成的数据消息流中。

消息接收端口1702会对数据消息和信标消息进行分流,将数据消息17111~1711n发送给第一处理器1703进行处理,生成数据消息17111’~1711n’,将信标消息17061~1706m发送给第二处理器1704进行处理,生成信标消息17061’~1706m’。

第一处理器1703可以是交换机的主处理器,其主要功能是对数据消息17111~1711n进行路由控制处理以及进行丢包检测以及针对丢包标识17121~1712n的相关处理。如果检测出处于丢包状态,则记录当前的数据消息屏障的最小值1709,在应答消息屏障的最小值1710没有达到记录的数据消息屏障的最小值1709之前,视为处于丢包状态。在丢包状态下,第一处理器1703会将丢包标识17121~1712n都设置为丢包状态。当检测到丢包状态消息,则不会再对丢包标识17121~1712n进行设置。在非丢包状态下,数据消息17111~1711n中的丢包标识17121~1712n与数据消息17111’~1711n’中的丢包标识17121’~1712n’是一样的。需要说明的是,在丢包状态没有消失之前,到达处理器1703的数据消息中的丢包标识都会被设置为丢包状态。在处理完成后,第一处理器1703将处理后生成的数据消息17111’~1711n’发送给消息发送端口1705。第一处理器1703的丢包检测及处理的详细过程与框图1600中处理器1603所执行的处理过程,在技术原理上是相同的。

第二处理器1704可以作为辅助处理器,专门用来处理与消息全序控制有关的信标消息。第二处理器1704对信标消息17061~1706m进行路由控制处理,并确定信标消息17061~1706m包含的数据消息屏障17071~1707m的最小值1709和应答消息屏障17081~1708m的最小值1710,并将信标消息17061~1706m中的数据消息屏障和应答消息屏障修改为各自对应的最小值,修改后的信标消息标识为信标消息17061’~1706m’。第二处理器1704将信标消息17061’~1706m’发送给消息发送端口1705。

消息发送端口1705,用于向至少一个出口链路发送数据消息17111’~1711n’和信标消息17061’~1706m’。

框图1700的消息变形结构

与框图700示例的消息结构对应,通过两个信标消息来分别承载数据消息屏障和应答消息屏障。在框图700的消息结构中,存在三种消息:数据消息,包含时间戳、数据以及丢包标识;第一信标消息,包含数据消息屏障;第二信标消息,包含应答消息屏障。第一信标消息和第二信标消息以一定的时间间隔***到数据消息所形成的数据消息流中。

相应地,交换机1701的第一处理器1703会接收到上述数据消息,其处理过程与前述的第一处理器1703的处理过程一样。第二处理器1704将会收到上述第一信标消息和第二信标消息,执行相应的路由控制处理,并分别对两种信标消息中的数据消息屏障和应答消息屏障执行处理,这些处理与前述框图1700中详细说明的处理过程,在技术原理上是相同的。

交换机具体实现示例之六

作为又一种示例,如图18所示,其为实现消息全序机制的交换机的实现示例之六的结构示意框图1800。框图1800中的消息结构可以与框图800中示出的消息结构相同,其中存在两种消息:数据消息,其包含时间戳、数据以及丢包标识;信标消息,其包含数据消息屏障和应答消息屏障。为了简化说明,框图1800中仅示出数据消息和信标消息编号,并未示出消息的内部结构。

交换机1801包括:消息接收端口1802、处理器1803、以及消息发送端口1804。与上述的几个交换机的实现示例不同,交换机1801会将承载有消息全序控制信息的信标消息1807发送给代理主机1805来进行处理,并接收返回的信标消息1807’,然后向出口链路发送。代理主机1805可以是分布式系统中的任意主机。对于数据消息1806,仍然由交换机1801来处理。

具体的,交换机1801的消息接收端口1802在接收到数据消息1806和信标消息1807后,将数据消息1806发送给处理器1803,将信标消息1807发送给代理主机1805。

处理器1803对数据消息1806进行路由控制处理,并执行与框图1700中第一处理器1703所执行的丢包检测以及对丢包标识进行设置的相关处理,生成数据消息1806’,通过消息发送端口1804向出口链路发送。

代理主机1805收到信标消息1807后,执行框图1700中第二处理器1704所执行的针对数据消息屏障和应答消息屏障的确定及修改处理,并生成信标消息1807’,然后再发送给交换机1801的消息发送端口1804,消息发送端口1804再将信标消息1807’向出口链路发送。

框图1800的消息变形结构

框图1800中的消息结构可以与框图300和框图1400中示出的消息结构相同,其中,数据消息包含时间戳和数据,而信标消息包含数据消息屏障。

相应地,处理器1803执行框图1400中第一处理器1403所执行的处理,代理主机1805执行第二处理器1404所执行的处理。

需要说明的是,在本公开的技术思想下,上述消息结构中涉及到作为全序控制信息的丢包标识、数据消息屏障以及应答消息屏障,这些全序控制信息可以以多种的组合方式承载于数据消息和/或信标消息中。

另外,在交换机的结构上,可以将上述的各种消息结构的数据消息和信标消息放在设置有一个处理器的交换机上进行处理,也可以通过设置有一个以上的处理器的交换机进行处理,其中,交换机的主处理器用来处理数据消息,而辅助处理器用来处理信标消息,从而减轻主处理器的负担,减少对数据消息处理的影响。此外,上述的各种消息结构的信标消息也可以通过代理主机来进行处理,同样能够减轻主处理器的负担,减少对数据消息处理的影响。

说明性过程

如图19所示,其为实现消息全序机制的说明性处理过程之一的流程示意图1900,该处理过程可以应用于分布式系统的交换设备上,该交换设备可以是上述的交换机,也可以是具有消息转发或者路由功能的主机或者其他网络设备。该处理过程包括:

S1901:获取至少一个入口链路的数据消息屏障。如前面所介绍的,数据消息屏障可以通过数据消息承载,也可以通过信标消息承载,或者通过数据消息和信标消息共同承载。该入口链路可以是当前交换设备与交换机或者主机之间形成链路。

如果数据消息屏障包含在数据消息中,则处理过程S1901可以包括:从至少一个入口链路接收到的数据消息中,获取数据消息屏障。

如果数据消息屏障包含在***到数据消息流中的第一信标消息中,则处理过程S1901可以包括:从至少一个入口链路接收到的第一信标消息中,获取数据消息屏障。

如果数据消息屏障包含在数据消息和第一信标消息中,则处理过程S1901可以包括:从至少一个入口链路接收到的数据消息和第一信标消息中,获取数据消息屏障。

S1902:确定数据消息屏障的最小值。交换设备可以根据获取到的数据消息屏障来确定最小值并进行记录,随着新的数据消息屏障的获取,来不断更新该最小值。

S1903:向至少一个出口链路发送数据消息屏障的最小值。该出口链路可以是当前交换设备与交换机或者主机之间形成链路。

与处理过程S1901相对应,如果数据消息屏障包含在数据消息中,则处理过程S1903包括:将数据消息中的数据消息屏障修改为数据消息屏障的最小值,并向至少一个出口链路发送数据消息。

如果数据消息屏障包含在***到数据消息流中的第一信标消息中,则处理过程S1903包括:将第一信标消息中的数据消息屏障修改为数据消息屏障的最小值,并向至少一个出口链路发送第一信标消息。

如果数据消息屏障包含数据消息和第一信标消息中,则处理过程S1903包括:将数据消息和第一信标消息中的数据消息屏障修改为数据消息屏障的最小值,并向至少一个出口链路发送数据消息和第一信标消息。

基于图19介绍了在交换设备上对于实现消息全序机制的相关处理过程,下面介绍一下在接收端主机上相应的处理过程。

如图20所示,其为实现消息全序机制的说明性处理过程之二的流程示意图2000,该处理过程包括:

S2001:根据接收到的数据消息所包含的时间戳对数据消息进行排序。排序后的数据消息可以放置于主机的缓存队列中,等待投递。

S2002:获取至少一个入口链路的数据消息屏障,并确定数据消息屏障的最小值。对于接收端主机来说,入口链路可以为接收端主机与交换设备之间的链路。如前面所介绍的,根据承载数据消息屏障的消息的不同,获取至少一个入口链路的数据消息屏障可以包括:从至少一个入口链路的数据消息和/或第一信标消息中获取数据消息屏障。

S2003:对时间戳小于该数据消息屏障的最小值的数据消息进行按序投递。基于本公开的消息全序机制,数据消息屏障表示:对于当前的接收端主机来说,不会再接收到时间戳小于该数据消息屏障的最小值的数据消息了。因此,可以将时间戳小于该数据消息屏障的最小值的数据消息投递给应用程序进行处理。

通过图19和图20所示流程,实现了基本的消息全序机制。下面再介绍一下,针对分布式系统中出现的丢包情形,如何在保证高可靠性的前提下实现消息全序机制。

如图21所示,其为实现消息全序机制的说明性处理过程之三的流程示意图2100,该处理过程是建立在图19所示的处理流程的基础上的,图21所示的处理过程,可以与图19所示的处理过程并行执行。具体可以包括:

S2101:获取至少一个入口链路的应答消息屏障。与数据消息屏障类似,应答消息屏障可以通过数据消息承载,也可以通过信标消息承载,或者通过数据消息和信标消息共同承载。对于承载应答消息屏障的信标消息可以是图19中的第一信标消息,也可以是第一信标消息以外的第二信标消息。

相应的,根据承载应答消息屏障的消息的不同,S2101的具体处理过程:从至少一个入口链路的数据消息或者第一信标消息中获取应答消息屏障,或者从至少一个入口链路的数据消息和第一信标消息中获取应答消息屏障,或者从至少一个入口链路的数据消息和第二信标消息中获取应答消息屏障。

S2102:确定应答消息屏障的最小值。交换设备可以根据获取到的应答消息屏障来确定最小值并进行记录,随着新的应答消息屏障的获取,来不断更新该最小值。

S2103:向至少一个出口链路发送应答消息屏障的最小值。与处理过程S2101相对应,根据承载应答消息屏障的消息的不同,S2103的处理过程可以包括如下可能的具体处理过程:

将数据消息中的应答消息屏障修改为应答消息屏障的最小值,并向至少一个出口链路发送数据消息。

将第一信标消息中的应答消息屏障修改为应答消息屏障的最小值,并向至少一个出口链路发送第一信标消息。

将第二信标消息中的应答消息屏障修改为应答消息屏障的最小值,并向至少一个出口链路发送第二信标消息。

将数据消息和第一信标消息中的应答消息屏障修改为应答消息屏障的最小值,并向至少一个出口链路发送数据消息和第一信标消息。

将数据消息和第二信标消息中的应答消息屏障修改为应答消息屏障的最小值,并向至少一个出口链路发送数据消息和第二信标消息。

此外,在数据消息中还可以嵌入丢包状态,相应地,在交换设备上,可以执行丢包状态检测的处理,当检测到处于丢包状态时,将从至少一个入口链路接收到的数据消息中的丢包标识设置为丢包状态。具体有关丢包状态的检测以及针对丢包标识的详细处理机制,在前面已经进行了详细说明,在此不再赘述。

需要说明的是,上述图21的处理过程S2103和图19的处理过程S1903中,对于向出口链路发送数据消息和第一信标消息的处理可以是同一处理过程。

基于图21介绍了在交换设备上对于实现高可靠性的消息全序机制的相关处理过程,下面介绍一下在接收端主机上的相应的处理过程。

如图22所示,其为实现消息全序机制的说明性处理过程之四的流程示意图2200。该处理过程包括:

S2201:根据接收到的数据消息所包含的时间戳对数据消息进行排序。

S2202:获取至少一个入口链路的数据消息屏障和应答消息屏障,并确定数据消息屏障和应答消息屏障的最小值。其中,对于获取数据消息屏障和应答消息屏障的具体方式,可以根据图19和图21中承载数据消息屏障和应答消息屏障的消息的不同,而从数据消息、第一信标消息以及第二信标消息的某个或者某种组合中获取。

S2203:对数据消息中包含的丢包标识进行判断,根据判断结果执行相应的处理。具体地,如果丢包标识为丢包状态,则执行S2204,如果丢包标识为非丢包状态,则执行S2205。

S2204:对时间戳小于该应答消息屏障的最小值的数据消息进行按序投递。

S2205:对时间戳小于该数据消息屏障的最小值的数据消息进行按序投递。

在上述处理中,丢包标识可以视为应答消息屏障与数据消息屏障的切换开关,在处于丢包状态下,接收端主机以应答消息屏障作为消息投递的屏障,直到丢包状态消失后,再切换为以数据消息屏障作为消息投递的屏障。通过这样的处理方式实现了在分布式系统中可靠性较高的消息全序机制。

下面介绍一下,本公开提出的针对链路延时现象而进行的时间戳调整的处理过程。

如图23所示,其为实现消息全序机制的说明性处理过程之五的流程示意图2300。该处理过程可以应用于分布式系统的主机上,通过主机之间的消息交互来实现分布式系统中各个主机的时间戳的调整。该处理过程包括:

S2301:向多个主机发送第一时间调整消息,第一时间调整消息包含第一时间戳,该第一时间戳为发送该第一时间调整消息时的本地物理时间。

S2302:接收从多个主机返回的第二时间调整消息,第二时间调整消息中包含第二时间戳,第二时间戳为将接收的第一时间调整消息的本地物理时间对齐后对应的第一时间戳中的最大值。

S2303:对第二时间调整消息中的第二时间戳进行往返延时(RTT)补偿,生成第三时间戳。

S2304:计算接收到第二时间调整消息的本地物理时间与该第二时间调整消息对应的第三时间戳之间的第一差值。

S2305:获取第一差值的最小值,作为后续发送消息的时间戳调整值。

上述的S2301~S2305的处理过程涉及了在时间戳调整机制中,发送端主机的处理过程,实际上,该主机同样也会作为接收端主机而执行相应的处理过程。因此,如图24所示,其为实现消息全序机制的说明性处理过程之六的流程示意图2400。在图23的处理流程之外,还可以包括如下流程:

S2401:接收多个主机发送来的第一时间调整消息。

S2402:计算将接收的第一时间调整消息的本地物理时间进行对齐后对应的第一时间戳中的最大值。

S2403:将该最大值作为第二时间戳包含在第二时间调整消息中,向多个主机发送。

通过上述的时间戳调整处理,能够在整体上改善投递延迟的情况。上述第一时间调整消息和第二时间调整消息中所承载的信息,也可以通过前述示例中的数据消息和/或信标消息来承载,也就是说,可以采用前述的数据消息和/或信标消息作为第一时间调整消息和第二时间调整消息,从而在正常的消息传输的过程中来完成时间戳的调整,并且该时间戳的调整机制伴随着消息传输过程而进行多轮调整,这样,即使在链路延时存在波动的情况下,也能实现有效地时间戳的调整。

电子装置实现示例

本公开的电子装置可以是具有可移动性的电子设备,也可以是较少移动的或者非移动的计算设备。本公开的电子装置至少具有处理单元和存储器,存储器上存储有指令,处理单元从存储器上获取指令,并执行处理,以使电子装置执行动作。

在一些例子中,上述图1至图24涉及的一个或多个模块或者一个或多个步骤或者一个或多个处理过程,可以通过软件程序、硬件电路,也可以通过软件程序和硬件电路相结合的方式来实现。例如,上述各个组件或者模块以及一个或多个步骤都可在芯片上系统(SoC)中实现。SoC可包括:集成电路芯片,该集成电路芯片包括以下一个或多个:处理单元(如中央处理单元(CPU)、微控制器、微处理单元、数字信号处理单元(DSP)等)、存储器、一个或多个通信接口、和/或用于执行其功能的进一步的电路和可任选的嵌入的固件。

如图25所示,其为示例性的具有可移动性的电子设备2500的结构框图。该电子设备2500可以是小型因素便携式(或移动)电子设备。这里所说的小型因素便携式(或移动)电子设备可以是:例如,蜂窝电话、个人数据助理(PDA)、笔记本电脑、平板电脑、个人媒体播放器装置、无线网络观看装置、个人头戴装置、专用装置或包括以上功能中的任何一个的混合装置。电子设备2500至少包括:存储器2501和处理器2502。

存储器2501,用于存储程序。除上述程序之外,存储器2501还可被配置为存储其它各种数据以支持在电子设备2500上的操作。这些数据的示例包括用于在电子设备2500上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

存储器2501可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

存储器2501耦合至处理器2502并且包含存储于其上的指令,所说的指令在由处理器2502执行时使电子设备执行动作,作为一种电子设备的实施例,该动作可以包括:图19至图24对应的示例所执行的相关处理流程,图13至图18所示的交换机示例所执行的处理逻辑,以及图1至图12所示的示例中分布式系统的各个主机或者交换机所执行的处理逻辑。该电子设备2500可以作为分布式系统中的主机和/或交换机执行相应的功能逻辑。

对于上述的处理操作,在前面方法和装置的实施例中已经进行了详细说明,对于上述的处理操作的详细内容同样也适用于电子设备2500中,即可以将前面实施例中提到的具体处理操作,以程序的方式写入在存储器2501,并通过处理器2502来进行执行。

进一步,如图25所示,电子设备2500还可以包括:通信组件2503、电源组件2504、音频组件2505、显示器2506、芯片组2507等其它组件。图25中仅示意性给出部分组件,并不意味着电子设备2500只包括图25所示组件。

通信组件2503被配置为便于电子设备2500和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G以及5G或它们的组合。在一个示例性实施例中,通信组件2503经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件2503还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

电源组件2504,为电子设备的各种组件提供电力。电源组件2504可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件2505被配置为输出和/或输入音频信号。例如,音频组件2505包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器2501或经由通信组件2503发送。在一些实施例中,音频组件2505还包括一个扬声器,用于输出音频信号。

显示器2506包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。

上述的存储器2501、处理器2502、通信组件2503、电源组件2504、音频组件2505以及显示器2506可以与芯片组2507连接。芯片组2507可以提供处理器2502与电子设备2500中的其余组件之间的接口。此外,芯片组2507还可以提供电子设备2500中的各个组件对存储器2501的访问接口以及各个组件间相互访问的通讯接口。

在一些例子中,上述图1至图24涉及的一个或多个模块或者一个或多个步骤或者一个或多个处理过程,可以通过具有操作系统和硬件配置的计算设备来实现。

图26其为示例性的计算设备2600的结构框图。例如,本公开中的交换机和主机(发送端主机和接收端主机)可在与静态计算机实施例中的计算设备2600相似的一个或多个计算设备中实现,包括计算设备2600的一个或多个特征和/或替代特征。此处所提供的对计算机2600的描述只是为了说明,并不是限制性的。实施例也可以在相关领域的技术人员所知的其它类型的计算机系统中实现。

如图26所示,计算设备2600包括一个或多个处理器2602、系统存储器2604,以及将包括系统存储器2604的各种系统组件耦合到处理器2602的总线2606。总线2606表示若干类型的总线结构中的任何一种总线结构的一个或多个,包括存储器总线或存储器控制器、***总线、加速图形端口,以及处理器或使用各种总线体系结构中的任何一种的局部总线。系统存储器2604包括只读存储器(ROM)2608和随机存取存储器(RAM)2610。基本输入/输出系统2612(BIOS)储存在ROM 2608中。

计算机系统2600还具有一个或多个以下驱动器:用于读写硬盘的硬盘驱动器2614、用于读或写可移动磁盘2618的磁盘驱动器2616、以及用于读或写诸如CD ROM、DVDROM或其他光介质之类的可移动光盘2622的光盘驱动器2620。硬盘驱动器2614、磁盘驱动器2616,以及光驱动器2620分别通过硬盘驱动器接口2624、磁盘驱动器接口2626,以及光学驱动器接口2628连接到总线2606。驱动器以及它们相关联的计算机可读介质为计算机提供了对计算机可读指令、数据结构、程序模块,及其他数据的非易失存储器。虽然描述了硬盘、可移动磁盘和可移动光盘,但是,也可以使用诸如闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等等之类的其他类型的计算机可读存储介质来储存数据。

数个程序模块可被储存在硬盘、磁盘、光盘、ROM或RAM上。这些程序包括操作系统2630、一个或多个应用程序2632、其他程序2634以及程序数据2636。这些程序可包括例如用于实现图19至图24对应的示例所执行的相关处理流程,图13至图18所示的交换机示例所执行的处理逻辑,以及图1至图12所示的示例中分布式系统的各个主机或者交换机所执行的处理逻辑。

用户可以通过诸如键盘2638和指点设备2640之类的输入设备向计算设备2600中输入命令和信息。其它输入设备(未示出)可包括话筒、控制杆、游戏手柄、卫星天线、扫描仪、触摸屏和/或触摸平板、用于接收语音输入的语音识别系统、用于接收手势输入的手势识别系统、诸如此类。这些及其他输入设备可通过耦合到总线2606的串行端口接口2642连接到处理器2602,但也可以通过其他接口(诸如并行端口、游戏端口、通用串行总线(USB)端口)来进行连接。

显示屏2644也通过诸如视频适配器2646之类的接口连接到总线2606。显示屏2644可在计算设备2600外部或纳入其中。显示屏2644可显示信息,以及作为用于接收用户命令和/或其它信息(例如,通过触摸、手指姿势、虚拟键盘等等)的用户界面。除了显示屏2644之外,计算设备2600还可包括其他***输出设备(未示出),如扬声器和打印机。

计算机2600通过适配器或网络接口2650、调制解调器2652、或用于通过网络建立通信的其他手段连接到网络2648(例如,因特网)。可以是内置的或外置的调制解调器2652可以经由串行端口接口2642连接到总线2606,如图26所示,或者可以使用包括并行接口的另一接口类型连接到总线2606。

如此处所用的,术语“计算机程序介质”、“计算机可读介质”以及“计算机可读存储介质”被用于泛指介质,诸如与硬盘驱动器2614相关联的硬盘、可移动磁盘2618、可移动光盘2622、系统存储器2604、闪存卡、数字视频盘、随机读取存储器(RAM)、只读存储器(ROM)以及其它类型的物理/有形存储介质等。这些计算机可读存储介质与通信介质(不包括通信介质)相区别且不重叠。通信介质通常在诸如载波等已调制数据信号中承载计算机可读指令、数据结构、程序模块或者其它数据。术语“已调制数据信号”是指使得以在信号中编码信息的方式来设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如声学、RF、红外线的无线介质和其它无线介质以及有线介质。各个实施例也针对这些通信介质。

如上文所指示的,计算机程序和模块(包括应用程序2632及其他程序2634)可被储存在硬盘、磁盘、光盘、ROM或RAM上。这样的计算机程序也可以通过网络接口2650、串行端口接口2642或任何其他接口类型来接收。这些计算机程序在由应用程序执行或加载时使得计算机2600能够实现此处所讨论的实施例的特征。因此,这些计算机程序表示计算机系统2600的控制器。

这样,各个实施例还涉及包括储存在任何计算机可用存储介质上的计算机指令/代码的计算机程序产品。这样的代码/指令当在一个或多个数据处理设备中执行时,使数据处理设备如此处所描述的那样操作。可包括计算机可读存储介质的计算机可读存储设备的示例包括诸如RAM、硬盘驱动器、软盘驱动器、CD ROM驱动器、DVD DOM驱动器、压缩盘驱动器、磁带驱动器、磁性存储设备驱动器、光学存储设备驱动器、MEM设备、基于纳米技术的存储设备等的存储设备以及其它类型的物理/有形计算机可读存储设备。

示例条款

A1:一种方法,包括:

获取至少一个入口链路的数据消息屏障;

确定所述数据消息屏障的最小值;

向至少一个出口链路发送所述数据消息屏障的最小值。

A 2:根据段落A 1所述的方法,其中,所述数据消息屏障包含在数据消息中,所述获取至少一个入口链路的数据消息屏障包括:

从至少一个入口链路接收到的数据消息中,获取所述数据消息屏障。

A 3:根据段落A 1所述的方法,其中,所述数据消息屏障包含在***到数据消息流中的第一信标消息中,所述获取至少一个入口链路的数据消息屏障包括:

从至少一个入口链路接收到的所述第一信标消息中,获取所述数据消息屏障。

A 4:根据段落A 2所述的方法,其中,所述向至少一个出口链路发送所述数据消息屏障的最小值包括:

将所述数据消息中的数据消息屏障设置为所述数据消息屏障的最小值,并向所述至少一个出口链路发送所述数据消息。

A 5:根据段落A 3所述的方法,其中,所述向至少一个出口链路发送所述数据消息屏障的最小值包括:

向所述至少一个出口链路发送包含所述数据消息屏障的最小值的第一信标消息。

A 6:根据段落A 1所述的方法,其中,还包括:

获取至少一个入口链路的应答消息屏障;

确定所述应答消息屏障的最小值;

向至少一个出口链路发送所述应答消息屏障的最小值。

A7:根据段落A 6所述的方法,其中,所述获取至少一个入口链路的应答消息屏障包括:

从至少一个入口链路接收到的数据消息中,获取所述应答消息屏障。

A8:根据段落A6所述的方法,其中,所述应答消息屏障包含在***到数据消息流中的第二信标消息中,所述获取至少一个入口链路的应答消息屏障包括:

从至少一个入口链路接收到的所述第二信标消息中,获取所述应答消息屏障。

A9:根据权利要去A7所述的方法,其中,所述向至少一个出口链路发送所述应答消息屏障的最小值包括:

将所述数据消息中的应答消息屏障设置为所述应答消息屏障的最小值,并向所述至少一个出口链路发送所述数据消息。

A10:根据权利要去A8所述的方法,其中,所述向至少一个出口链路发送所述应答消息屏障的最小值包括:

向所述至少一个出口链路发送包含所述应答消息屏障的最小值的第一信标消息。

A11:根据段落A6所述的方法,其中,数据消息中包含丢包标识,所述方法还包括:

判断丢包状态,如果处于丢包状态,则将从至少一个入口链路接收到的数据消息中的丢包标识设置为丢包状态。

A12:根据段落A11所述的方法,其中,所述进行丢包状态监测包括:

响应于检测到丢包事件时,所述应答消息屏障的最小值小于发生丢包事件时的数据消息屏障的最小值,则判定为处于丢包状态。

A13:一种交换机,其中,包括:

消息接收端口,用于从至少一个入口链路接收数据消息;

处理器,用于对所述数据消息进行路由控制处理,并确定接收到的所述数据消息所包含的数据消息屏障的最小值,并将所述数据消息中的数据消息屏障设置为所述数据消息屏障的最小值;

消息发送端口,用于向至少一个出口链路发送数据消息。

A14:根据段落A 13所述的交换机,其中,所述处理器还用于:

确定接收到的数据消息所包含的应答消息屏障的最小值,并将所述数据消息中的应答消息屏障设置为所述应答消息屏障的最小值。

A 15:根据段落A13所述的交换机,其中,所述处理器还用于:

判断丢包状态,如果处于丢包状态,则将所述数据消息中的丢包标识设置为丢包状态。

A16:根据段落A15所述的交换机,其中,所述进行丢包状态检测包括:

响应于检测到丢包事件时,所述应答消息屏障的最小值小于发生丢包事件时的数据消息屏障的最小值,则判定为处于丢包状态。

A 17:一种电子装置,包括:

处理单元;以及

存储器,耦合至所述处理单元并且包含存储于其上的指令,所述指令在由所述处理单元执行时使所述电子装置执行动作,所述动作包括:

获取至少一个入口链路的数据消息屏障;

确定所述数据消息屏障的最小值;

向所述至少一个出口链路发送所述数据消息屏障的最小值。

A 18:根据段落A 17所述的电子装置,其中,所述数据消息屏障包含在数据消息中,所述获取至少一个入口链路的数据消息屏障包括:

从至少一个入口链路接收到的数据消息中,获取所述数据消息屏障。

A19:根据段落A17所述的电子装置,其中,所述数据消息屏障包含在***到数据消息流中的第一信标消息中,所述获取至少一个入口链路的数据消息屏障包括:

从至少一个入口链路接收到的所述第一信标消息中,获取所述数据消息屏障。

A 20:根据段落A 18所述的电子装置,其中,所述向至少一个出口链路发送所述数据消息屏障的最小值包括:

将所述数据消息中的数据消息屏障设置为所述数据消息屏障的最小值,并向所述至少一个出口链路发送所述数据消息。

A 21:根据段落A 19所述的电子装置,其中,所述向至少一个出口链路发送所述数据消息屏障的最小值包括:

向所述至少一个出口链路发送包含所述数据消息屏障的最小值的第一信标消息。

A 22:根据段落A 17所述的电子装置,其中,所述动作还包括:

获取至少一个入口链路的应答消息屏障;

确定所述应答消息屏障的最小值;

向至少一个出口链路发送所述应答消息屏障的最小值。

A 23:根据段落A 22所述的电子装置,其中,所述数据消息中包含丢包标识,所述动作还包括:

判断丢包状态,如果处于丢包状态,则将从至少一个入口链路接收到的数据消息中的丢包标识设置为丢包状态。

A 24:根据段落A 23所述的电子装置,其中,所述进行丢包状态监测包括:

响应于检测到丢包事件时,所述应答消息屏障的最小值小于发生丢包事件时的数据消息屏障的最小值,则判定为处于丢包状态。

B1:一种交换机,其中,包括:

消息接收端口,用于从至少一个入口链路接收数据消息和信标消息,并将所述数据消息发送给第一处理器,将所述信标消息发送给第二处理器;

所述第一处理器,用于对所述数据消息执行路由控制处理;

所述第二处理器,用于确定接收到的信标消息所包含的数据消息屏障的最小值,并将所述信标消息中的数据消息屏障设置为所述数据消息屏障的最小值;

消息发送端口,用于向至少一个出口链路发送数据消息和所述信标消息。

B 2:根据段落B 1所述的交换机,其中,所述第二处理器还用于:

确定接收到的信标消息所包含的应答消息屏障的最小值,并将所述信标消息中的应答消息屏障设置为所述应答消息屏障的最小值。

B 3:根据段落B 2所述的交换机,其中,所述数据消息中包含丢包标识,所述第一处理器还用于:

判断丢包状态,如果处于丢包状态,则将从至少一个入口链路接收到的数据消息中的丢包标识设置为丢包状态。

B 4:根据段落B 3所述的交换机,其中,所述进行丢包状态监测包括:

响应于检测到丢包事件时,所述应答消息屏障的最小值小于发生丢包事件时的数据消息屏障的最小值,则判定为处于丢包状态。

C1:一种交换机,其中,包括:

消息接收端口,用于从至少一个入口链路接收数据消息和信标消息,将所述数据消息发送给第一处理器,将所述信标消息发送代理主机,所述信标消息中包含数据消息屏障,

所述处理器,用于对所述数据消息执行路由控制处理;

消息发送端口,用于接收所述代理主机返回的所述信标消息,所述返回的信标消息中的数据消息屏障被设置为数据消息屏障的最小值,向至少一个出口链路发送所述数据消息和所述信标消息。

C 2:根据段落C 1所述的交换机,其中,所述信标消息中还包含应答消息屏障,所述返回的信标消息中应答消息屏障被设置为应答消息屏障的最小值。

C3:根据段落C2所述的交换机,其中,所述数据消息中包含丢包标识,所述处理器还用于:

判断丢包状态,如果处于丢包状态,则将从至少一个入口链路接收到的数据消息中的丢包标识设置为丢包状态。

C 4:根据段落C 3所述的交换机,其中,所述进行丢包状态监测包括:

响应于检测到丢包事件时,所述应答消息屏障的最小值小于发生丢包事件时的数据消息屏障的最小值,则判定为处于丢包状态。

D1:一种方法,包括:

根据接收到的数据消息所包含的时间戳对所述数据消息进行排序;

获取至少一个入口链路的数据消息屏障;

确定所述数据消息屏障的最小值;

对时间戳小于该所述数据消息屏障的最小值的数据消息进行按序投递。

D 2:根据段落D 1所述的方法,其中,所述数据消息屏障包含在数据消息中,所述获取至少一个入口链路的数据消息屏障包括:

从至少一个入口链路接收到的数据消息中,获取所述数据消息屏障。

D 3:根据段落D 1所述的方法,其中,所述数据消息屏障包含在***到数据消息流中的第一信标消息中,所述获取至少一个入口链路的数据消息屏障包括:

从至少一个入口链路接收到的所述第一信标消息中,获取所述数据消息屏障。

D 4:一种电子装置,包括:

处理单元;以及

存储器,耦合至所述处理单元并且包含存储于其上的指令,所述指令在由所述处理单元执行时使所述电子装置执行动作,所述动作包括:

根据接收到的数据消息所包含的时间戳对所述数据消息进行排序;

获取至少一个入口链路的数据消息屏障;

确定所述数据消息屏障的最小值;

对时间戳小于该所述数据消息屏障的最小值的数据消息进行按序投递。

D 5:根据段落D 4所述的电子装置,其中,所述数据消息屏障包含在数据消息中,所述获取至少一个入口链路的数据消息屏障包括:

从至少一个入口链路接收到的数据消息中,获取所述数据消息屏障。

D 6:根据段落D 4所述的电子装置,其中,所述数据消息屏障包含在***到数据消息流中的第一信标消息中,所述获取至少一个入口链路的数据消息屏障包括:

从至少一个入口链路接收到的所述第一信标消息中,获取所述数据消息屏障。

E1:一种方法,包括:

根据接收到的数据消息所包含的时间戳对所述数据消息进行排序;

获取至少一个入口链路的数据消息屏障和应答消息屏障;

确定所述数据消息屏障和所述应答消息屏障的最小值;

如果所述数据消息中包含的丢包标识为丢包状态,则对时间戳小于该所述应答消息屏障的最小值的数据消息进行按序投递;如果所述丢包标识为非丢包状态,则对时间戳小于该所述数据消息屏障的最小值的数据消息进行按序投递。

E 2:根据段落E 1所述的方法,其中,获取至少一个入口链路的数据消息屏障和应答消息屏障包括:

从至少一个入口链路接收到的数据消息中,获取所述数据消息屏障和应答消息屏障;

E 3:根据段落E 1所述的方法,其中,所述数据消息屏障包含在***到数据消息流中的第一信标消息中,所述应答消息屏障包含在***到数据消息流中的第二信标消息中,获取至少一个入口链路的数据消息屏障和应答消息屏障包括:

从至少一个入口链路接收到的所述第一信标消息中,获取所述数据消息屏障,以及从至少一个入口链路接收到的所述第二信标消息中,获取所述应答消息屏障。

E 4:一种电子装置,包括:

处理单元;以及

存储器,耦合至所述处理单元并且包含存储于其上的指令,所述指令在由所述处理单元执行时使所述电子装置执行动作,所述动作包括:

根据接收到的数据消息所包含的时间戳对所述数据消息进行排序;

获取至少一个入口链路的数据消息屏障和应答消息屏障;

确定所述数据消息屏障和所述应答消息屏障的最小值;

如果所述数据消息中包含的丢包标识为丢包状态,则对时间戳小于该所述应答消息屏障的最小值的数据消息进行按序投递;如果所述丢包标识为非丢包状态,则对时间戳小于该所述数据消息屏障的最小值的数据消息进行按序投递。

E 5:根据段落E 4所述的电子装置,其中,获取至少一个入口链路的数据消息屏障和应答消息屏障包括:

从至少一个入口链路接收到的数据消息中,获取所述数据消息屏障和应答消息屏障;

E 6:根据段落E 4所述的电子装置,其中,所述数据消息屏障包含在***到数据消息流中的第一信标消息中,所述应答消息屏障包含在***到数据消息流中的第二信标消息中,获取至少一个入口链路的数据消息屏障和应答消息屏障包括:

从至少一个入口链路接收到的所述第一信标消息中,获取所述数据消息屏障,以及从至少一个入口链路接收到的所述第二信标消息中,获取所述应答消息屏障。

F1:一种方法,包括:

向多个主机发送第一时间调整消息,所述第一时间调整消息包含第一时间戳,该第一时间戳指示发送该第一时间调整消息时的本地物理时间;

接收所述多个主机发送的第二时间调整消息,所述第二时间调整消息中包含第二时间戳,所述第二时间戳为将接收到所述第一时间调整消息的本地物理时间对齐后对应的第一时间戳中的最大值;

对所述第二时间戳进行往返延时补偿;

并确定接收到所述第二时间调整消息的本地物理时间与经补偿的第二时间戳之间的第一差值中的最小值,作为发送消息的时间戳调整值。

F2:根据段落F 1所述的方法,其中,还包括:

接收所述多个主机发送的第一时间调整消息;

确定将接收到所述第一时间调整消息的本地物理时间进行对齐后对应的第一时间戳中的最大值;

将该最大值作为第二时间戳包含在第二时间调整消息中,向所述多个主机发送。

F 3:一种电子装置,包括:

处理单元;以及

存储器,耦合至所述处理单元并且包含存储于其上的指令,所述指令在由所述处理单元执行时使所述电子装置执行动作,所述动作包括:

向多个主机发送第一时间调整消息,所述第一时间调整消息包含第一时间戳,该第一时间戳指示发送该第一时间调整消息的本地物理时间;

接收所述多个主机发送的第二时间调整消息,所述第二时间调整消息中包含第二时间戳,所述第二时间戳为将接收到所述第一时间调整消息的本地物理时间对齐后对应的第一时间戳中的最大值;

对所述第二时间戳进行往返延时(RTT)补偿;

并确定接收到所述第二时间调整消息的本地物理时间与经补偿的第二时间戳之间的第一差值中的最小值,作为发送消息的时间戳调整值。

F 4:根据段落F 3所述的电子装置,其中,所述动作还包括:

接收所述多个主机发送的第一时间调整消息;

确定将接收到所述第一时间调整消息的本地物理时间进行对齐后对应的第一时间戳中的最大值;

将该最大值作为第二时间戳包含在第二时间调整消息中,向所述多个主机发送。

结语

系统在各个方面的硬件与软件的实现上并没有太大的区别;使用硬件还是软件通常是权衡了成本与效率的设计上的选择结果,但在某些情况下,选择硬件还是软件可能是比较显而易见的决定。存在可以实现在此描述的处理和/或系统和/或其它技术(例如,硬件、软件,以及/或固件)的各种承载工具,并且优选的是,可以根据使用该处理和/或系统和/或其它技术的情况来改变承载工具。例如,如果实现方确定速度和准确度最重要,则该实现方可以选择主要由硬件和/或固件承载工具来实现;如果灵活性最重要,则该实现方可以选择主要软件来实现;或者,此外,该实现方可以选择硬件、软件,以及/或固件的一些组合来实现。

前述详细描述已经通过使用框图、流程图,以及/或示例阐述了该装置和/或处理的各种实施方式。这种框图、流程图,以及/或示例包含一个或更多个功能和/或操作,并且本领域技术人员应当明白,这种框图、流程图,或示例内的每一个功能和/或操作可以单独地和/或共同地,通过各种硬件、软件、固件,或者实际上其任何组合来实现。在一个实施方式中,在此描述的主旨的几个部分可以经由专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP),或其它集成格式来实现。然而,本领域技术人员应当认识到,在此公开的实施方式的一些方面整个地或者部分地可以等同地在集成电路中实现,或者实现为运行在一个或更多个计算机上的一个或更多个计算机程序(例如,实现为运行在一个或更多个计算机系统上的一个或更多个程序),实现为运行在一个或更多个处理器上的一个或更多个程序(例如,实现为运行在一个或更多个微处理器上的一个或更多个程序),实现为固件,或者实际上实现为其任何组合,并且根据本公开,设计电路和/或编写用于软件和/或固件的代码完全处于本领域技术人员的技术范围内。另外,本领域技术人员应当清楚的是,在此描述的主题的机制能够以多种形式作为程序产品分发,并且在此描述的主题的例示性实施方式适用,而与被用于实际执行该分配的特定类型的信号承载介质无关。信号承载介质的示例包括但不限于:可记录型介质,如软盘、硬盘驱动器(HDD)、质密盘(CD)、数字通用盘(DVD)、数字磁带、计算机存储器等;和传输型介质,如数字和/或模拟通信媒介(例如,光纤线缆、波导管、有线通信链路、无线通信链路等)。

本领域技术人员应当认识到,按在此阐述的方式来描述装置和/或处理,并且此后,使用技术实践将这样描述的装置和/或处理集成到数据处理系统中是本领域内常见的。即,在此描述的装置和/或处理的至少一部分可以经由合理次数的实验而集成到数据处理系统中。本领域技术人员应当认识到的是,通常的数据处理系统通常包括以下中的一个或更多个:系统单元外壳、视频显示装置、诸如易失性和非易失性存储器的存储器、诸如微处理器和数字信号处理器的处理器、诸如操作系统、驱动器、图形用户接口,以及应用程序的计算实体、诸如触摸板或触摸屏的一个或更多个交互式装置,以及/或包括反馈回路和控制电动机的控制系统(例如,用于感测位置和/或速度的反馈;用于移动和/或调节组件和/或数量的控制马达)。通常的数据处理系统可以利用任何合适商业可获组件来实现,如通常在数据计算/通信和/或网络通信/计算系统中找到的那些。

在此描述的主题有时例示了包含在不同的其它组件内或与其相连接的不同组件。本领域技术人员能够理解的是,这样描绘的架构仅仅是示例性的,并且实际上,可以实现获得相同功能的许多其它架构。在概念意义上,用于获得相同功能的组件的任何排布结构都有效地“关联”,以获得所需要的功能。因此,在此为获得特定功能而组合的任两个组件都可以被看作彼此“相关联”,以使获得所需要的功能,而与架构或中间组件无关。同样地,这样关联的任两个组件还可以被视作彼此“可操作地连接”,或“可操作地耦接”,以获得所需要的功能,并且能够这样关联的任两个组件也可以被视作可彼此“操作地耦接”,以获得所需要的功能。可操作地耦接的具体示例包括但不限于,物理上可配合和/或物理上交互的组件和/或可无线地交互和/或无线地交互的组件和/或逻辑上交互和/或逻辑上可交互组件。

针对在此实质上使用的任何术语,本领域技术人员可以针对背景和/或应用根据情况将其理解为单数和/或复数。为清楚起见,在此阐述了各种单数/复数的改变。

本领域技术人员应当明白,一般来说,在此使用的,而且尤其是在所附权利要求书中(例如,所附权利要求书的主体)使用的术语通常旨在作为“开放式”表述(例如,表述“包括(including)”应当解释为“包括但不限于”,表述“具有(having)”应当解释为“至少具有”等)。本领域技术人员还应当明白,如果想要特定数量的权利要求列举,则这种意图将明确地在该权利要求中陈述,并且在没有这些列举的情况下,不存在这种意图。例如,为帮助理解,下面所附权利要求书可以包含使用介绍性短语“至少一个”和“一个或更多个”来介绍权利要求列举。然而,使用这种短语不应被认作,权利要求列举将包含这种介绍权利要求列举的任何特定权利要求限制于仅包含一个这种列举的发明,即使同一权利要求包括介绍性短语“一个或更多个”或“至少一个”;其对于使用为介绍权利要求列举而使用的限定来说同样成立。另外,即使明确地陈述特定数量的权利要求列举,本领域技术人员也应当认识到,这种列举通常应当被解释成,或者至少表示所陈述的数量(例如,“列举两个”的这样的具体列举在没有其它修饰语的情况下通常意指至少两个,或者两个或更多个)。而且,在使用类似于“A、B,以及C等中的至少一个”的表述的那些实例中,一般来说,这种句法结构希望本领域技术人员在意义上应当理解这种表述(例如,“具有A、B,以及C中的至少一个的系统”应当包括但不限于具有单独A、单独B、单独C、A和B一起、A和C一起、B和C一起,以及/或A、B以及C一起等的系统)。在使用类似于“A、B,或C等中的至少一个”的惯例的那些实例中,一般来说,这种句法结构希望本领域技术人员在意义上应当理解这种惯例(例如,“具有A、B,或C中的至少一个的系统”应当包括但不限于具有单独A、单独B、单独C、A和B一起、A和C一起、B和C一起,以及/或A、B以及C一起等的系统)。本领域技术人员还应当明白的是,实际上,呈现两个或更多个另选术语的任何转折词和/短语(无论处于描述、权利要求书中,还是在附图中)应当被理解成,设想包括这些术语、这些术语中的任一个,或者两个术语的可能性。例如,短语“A或B”应当被理解成,包括“A”或“B”或“A和B”的可能性。

本说明书中针对“实现方式”、“一个实现方式”、“一些实现方式”,或“其它实现方式”的引用可以意指,结合一个或更多个实现方式描述的特定特征、结构,或特性可以被包括在至少一些实现方式中,但不必被包括在所有实现方式中。前述描述中不同出现的“实现方式”、“一个实现方式”,或“一些实现方式”不必全部针对同一实现方式而引用。

虽然利用不同方法和系统描述和示出了特定示例性技术,但本领域技术人员应当明白,在不脱离要求保护的主题的情况下,可以进行各种其它修改,并且可以代替等同物。另外,在不脱离在此描述的中心概念的情况下,可以进行许多修改以使适应针对要求保护的主题的教导的特定情况。因此,要求保护的主题不限于所公开的特定示例,而是这种要求保护的主题还可以包括落入所附权利要求书及其等同物的范围内的所有实现。

尽管已经用结构特征和/或方法动作专用的语言描述了本主题,但要理解,所附权利要求书中定义的主题不必限于所描述的具体特征或动作。而是,这些具体特征和动作是作为实现该权利要求的解说性形式而公开的。

除非另外具体声明,否则在上下文中可以理解并一般地使用条件语言(诸如“能”、“能够”、“可能”或“可以”)表示特定示例包括而其他示例不包括特定特征、元素和/或步骤。因此,这样的条件语言一般并非旨在暗示对于一个或多个示例以任何方式要求特征、元素和/或步骤,或者一个或多个示例必然包括用于决定的逻辑、具有或不具有用户输入或提示、在任何特定实施例中是否要包括或要执行这些特征、元素和/或步骤。

除非另外具体声明,应理解连词(诸如短语“X、Y或Z中至少一个”)表示所列出的条目、词语等可以是X、Y或Z中的任一者、或其组合。

本公开所述和/或附图中描述的流程图中任何例行描述、元素或框应理解成潜在地表示包括用于实现该例程中具体逻辑功能或元素的一个或多个可执行指令的代码的模块、片段或部分。替换示例被包括在本公开描述的示例的范围内,其中各元素或功能可被删除,或与所示出或讨论的顺序不一致地执行,包括基本上同步地执行或按相反顺序执行,这取决于所涉及的功能,如本领域技术人也将理解的。

应当强调,可对上述示例作出许多变型和修改,其中的元素如同其他可接受的示例那样应被理解。所有这样的修改和变型在此旨在包括在本公开的范围内并且由以下权利要求书保护。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

59页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:导频传输方法、信道估计方法、设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!