一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种消息入队方法及装置与流程

2021-11-10 03:48:00 来源:中国专利 TAG:


1.本技术涉及数据通信领域,具体而言,涉及一种消息入队方法及装置。


背景技术:

2.分布式系统内部的数据同步、转发表项分发、板卡控制管理等功能依赖于板卡间通信。在现有技术中,可以将板卡间通信技术与进程间通信(inter

process communication,ipc)技术相结合,将ipc应用在分布式系统中不同板卡进程间的消息传递。其中,对应每一张业务板卡,主控板卡均会与其建立一个ipc连接以及对应的一个消息队列,基于上述消息队列实现数据同步。但是采用上述方案进行数据同步时,由于主控板卡需要为每一个ipc连接缓存独立的一条消息,因此导致内存开销较大。


技术实现要素:

3.本技术实施例的目的在于提供一种消息入队方法及装置,用以解决实现数据同步时内存开销较大的技术问题。
4.第一方面,本技术实施例提供一种消息入队方法,应用于主控板卡,包括:获取待同步数据,并根据所述待同步数据生成待同步消息;将所述待同步消息缓存至消息队列中,以通过所述消息队列将所述待同步消息发送给多个业务板卡;其中,所述主控板卡与所述多个业务板卡之间的多个连接共用所述消息队列。在上述方案中,在主控板卡上实现一个消息队列,每一个主控板卡与业务板卡之间的连接均公用该消息队列,从而在进行数据同步的过程中,可以基于待同步数据仅生成一条待同步消息,并将这一条待同步消息缓存至消息队列中。由于消息队列中针对一条待同步数据仅需要缓存一条待同步消息,因此,降低了实现数据同步的开销。
5.在可选的实施方式中,所述获取待同步数据,并根据所述待同步数据生成待同步消息,包括:遍历所述多个连接,获取针对每个连接的获取预设数量的路由表项数据转发表项数据,并根据所述预设数量的路由表项数据转发表项数据生成预设数量的批量同步消息;所述将所述待同步消息缓存至消息队列中,包括:针对每个连接,将所述预设数量的批量同步消息缓存至所述消息队列中,并记录该连接中的断点位置;重复遍历所述多个连接,从每个连接的断点位置处开始将所述预设数量的批量同步消息缓存至所述消息队列中,直至缓存完成每个连接的批量同步消息。在上述方案中,在需要对主控板卡与多个业务板卡之间的连接进行消息的批量同步时,可以采用多连接小批量交叉入队的方式,即每轮依次缓存每个连接中的预设数量的数据,执行多轮缓存任务,直至缓存完成需要缓存的所有数据。由于采用上述方案,消息队列中的各个连接的批量消息是交错缓存的,因此在消息出队的过程中,不会出现由于某一连接的消息过于集中,导致连接分发速率达到上限,从而使得其他连接的消息没有发送的情况,提高了数据同步的效率。
6.在可选的实施方式中,在所述将所述预设数量的批量同步消息缓存至所述消息队列中,并记录该连接中的断点位置之后,所述方法还包括:在一个缓存周期内,判断所述消
息队列中的批量同步消息的数量是否大于最大缓存数量;若所述消息队列中的批量同步消息的数量大于所述最大缓存数量,则暂停缓存,直至下一个缓存周期。在上述方案中,在批量同步的过程中,可以采用多周期同步的方式,并判断每个周期内消息队列中的消息的数量是否超过了最大缓存数量,从而避免短时间内入队大量消息至队列,占用较多的内存。
7.在可选的实施方式中,所述获取待同步数据,并根据所述待同步数据生成待同步消息,包括:获取任意一条实时路由表项变化数据,并根据所述实时路由表项变化数据生成对应的一条实时增量消息。在上述方案中,针对一条实时路由表项变化数据,仅需生成一条实时增量信息并将该实时增量信息缓存至多个连接共享的消息队列中,从而可以降低实现数据同步的开销。
8.在可选的实施方式中,在所述将所述待同步消息缓存至消息队列中,以通过所述消息队列将所述待同步消息发送给多个业务板卡之后,所述方法还包括:根据自身与任意一个业务板卡之间的连接状态,确定所述连接的出队速率;根据所述出队速率将所述待同步消息发送给所述业务板卡。在上述方案中,可以根据主控板卡与业务板卡之间的连接状态确定该连接对应的出队速率,从而保证消息的发送过程在时间轴上更加均匀,降低数据同步过程中拥塞的几率。
9.在可选的实施方式中,所述根据所述出队速率将所述待同步消息发送给所述业务板卡,包括:针对部分数据相同的所述待同步消息,根据相同的部分数据生成共享消息;其中,所述共享消息包括所述相同的部分数据以及第一索引消息;将所述共享消息发送给所述业务板卡;根据所述出队速率将路由索引数据依次发送给所述业务板卡;其中,所述路由索引数据包括不同的部分数据以及与所述第一索引消息对应的第二索引消息。在上述方案中,可以采用共享消息替代多条待同步消息中重复的数据,并基于索引消息压缩数据量,从而可以降低通信过程中的通信数据量。
10.在可选的实施方式中,在所述获取待同步数据,并根据所述待同步数据生成待同步消息之前,所述方法还包括:在完成初始化后,与所述业务板卡建立连接;创建所述消息队列。在上述方案中,主控板卡在与任意一个业务板卡建立连接之后,可以在主控板卡上实现一个消息队列,每一个主控板卡与业务板卡之间的连接均公用该消息队列,从而在进行数据同步的过程中,可以基于待同步数据仅生成一条待同步消息,并将这一条待同步消息缓存至消息队列中。由于消息队列中针对一条待同步数据仅需要缓存一条待同步消息,因此,降低了实现数据同步的开销。
11.在可选的实施方式中,在所述获取待同步数据,并根据所述待同步数据生成待同步消息,所述方法还包括:在完成初始化后,创建所述消息队列;与所述业务板卡建立连接。在上述方案中,主控板卡在完成初始化之后,可以在主控板卡上实现一个消息队列,每一个主控板卡与业务板卡之间的连接均公用该消息队列,从而在进行数据同步的过程中,可以基于待同步数据仅生成一条待同步消息,并将这一条待同步消息缓存至消息队列中。由于消息队列中针对一条待同步数据仅需要缓存一条待同步消息,因此,降低了实现数据同步的开销。
12.第二方面,本技术实施例提供一种消息入队装置,应用于主控板卡,包括:获取模块,用于获取待同步数据,并根据所述待同步数据生成待同步消息;缓存模块,用于将所述待同步消息缓存至消息队列中,以通过所述消息队列将所述待同步消息发送给多个业务板
卡;其中,所述主控板卡与所述多个业务板卡之间的多个连接共用所述消息队列。在上述方案中,在主控板卡上实现一个消息队列,每一个主控板卡与业务板卡之间的连接均公用该消息队列,从而在进行数据同步的过程中,可以基于待同步数据仅生成一条待同步消息,并将这一条待同步消息缓存至消息队列中。由于消息队列中针对一条待同步数据仅需要缓存一条待同步消息,因此,降低了实现数据同步的开销。
13.在可选的实施方式中,所述获取模块具体用于:遍历所述多个连接,获取针对每个连接的获取预设数量的路由表项数据转发表项数据,并根据所述预设数量的路由表项数据转发表项数据生成预设数量的批量同步消息;所述将所述待同步消息缓存至消息队列中,包括:针对每个连接,将所述预设数量的批量同步消息缓存至所述消息队列中,并记录该连接中的断点位置;重复遍历所述多个连接,从每个连接的断点位置处开始将所述预设数量的批量同步消息缓存至所述消息队列中,直至缓存完成每个连接的批量同步消息。在上述方案中,在需要对主控板卡与多个业务板卡之间的连接进行消息的批量同步时,可以采用多连接小批量交叉入队的方式,即每轮依次缓存每个连接中的预设数量的数据,执行多轮缓存任务,直至缓存完成需要缓存的所有数据。由于采用上述方案,消息队列中的各个连接的批量消息是交错缓存的,因此在消息出队的过程中,不会出现由于某一连接的消息过于集中,导致连接分发速率达到上限,从而使得其他连接的消息没有发送的情况,提高了数据同步的效率。
14.在可选的实施方式中,所述获取模块还用于:在一个缓存周期内,判断所述消息队列中的批量同步消息的数量是否大于最大缓存数量;若所述消息队列中的批量同步消息的数量大于所述最大缓存数量,则暂停缓存,直至下一个缓存周期。在上述方案中,在批量同步的过程中,可以采用多周期同步的方式,并判断每个周期内消息队列中的消息的数量是否超过了最大缓存数量,从而避免短时间内入队大量消息至队列,占用较多的内存。
15.在可选的实施方式中,所述获取模块具体用于:获取任意一条实时路由表项变化数据,并根据所述实时路由表项变化数据生成对应的一条实时增量消息。在上述方案中,针对一条实时路由表项变化数据,仅需生成一条实时增量信息并将该实时增量信息缓存至多个连接共享的消息队列中,从而可以降低实现数据同步的开销。
16.在可选的实施方式中,所述消息入队装置还包括:确定模块,用于根据自身与任意一个业务板卡之间的连接状态,确定所述连接的出队速率;发送模块,用于根据所述出队速率将所述待同步消息发送给所述业务板卡。在上述方案中,可以根据主控板卡与业务板卡之间的连接状态确定该连接对应的出队速率,从而保证消息的发送过程在时间轴上更加均匀,降低数据同步过程中拥塞的几率。
17.在可选的实施方式中,所述发送模块具体用于:针对部分数据相同的所述待同步消息,根据相同的部分数据生成共享消息;其中,所述共享消息包括所述相同的部分数据以及第一索引消息;将所述共享消息发送给所述业务板卡;根据所述出队速率将路由索引数据依次发送给所述业务板卡;其中,所述路由索引数据包括不同的部分数据以及与所述第一索引消息对应的第二索引消息。在上述方案中,可以采用共享消息替代多条待同步消息中重复的数据,并基于索引消息压缩数据量,从而可以降低通信过程中的通信数据量。
18.在可选的实施方式中,所述消息入队装置还包括:第一建立模块,用于在完成初始化后,与所述业务板卡建立连接;第一创建模块,用于创建所述消息队列。在上述方案中,主
控板卡在与任意一个业务板卡建立连接之后,可以在主控板卡上实现一个消息队列,每一个主控板卡与业务板卡之间的连接均公用该消息队列,从而在进行数据同步的过程中,可以基于待同步数据仅生成一条待同步消息,并将这一条待同步消息缓存至消息队列中。由于消息队列中针对一条待同步数据仅需要缓存一条待同步消息,因此,降低了实现数据同步的开销。
19.在可选的实施方式中,所述消息入队装置还包括:第二创建模块,用于在完成初始化后,创建所述消息队列;第二建立模块,用于与所述业务板卡建立连接。在上述方案中,主控板卡在完成初始化之后,可以在主控板卡上实现一个消息队列,每一个主控板卡与业务板卡之间的连接均公用该消息队列,从而在进行数据同步的过程中,可以基于待同步数据仅生成一条待同步消息,并将这一条待同步消息缓存至消息队列中。由于消息队列中针对一条待同步数据仅需要缓存一条待同步消息,因此,降低了实现数据同步的开销。
20.第三方面,本技术实施例提供一种电子设备,包括:处理器、存储器和总线;所述处理器和所述存储器通过所述总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如前述实施方式任一项所述的消息入队方法。
21.第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令被计算机运行时,使所述计算机执行如前述实施方式任一项所述的消息入队方法。
附图说明
22.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
23.图1为本技术实施例提供的一种消息入队方法的流程图;
24.图2为本技术实施例提供的一种消息入队方法的具体实施方式的流程图;
25.图3为本技术实施例提供的另一种消息入队方法的具体实施方式的流程图;
26.图4为本技术实施例提供的一种ipc连接状态机的示意图;
27.图5为本技术实施例提供的一种消息入队装置的结构框图;
28.图6为本技术实施例提供的一种电子设备的结构框图。
具体实施方式
29.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
30.本技术实施例提供一种分布式设备,该分布式设备包括主处理单元(main processing unit,mpu,即主控板卡)以及线路处理单元(line processing unit,lpu,即业务板卡),其中,主控板卡和业务板卡通过背板连接。
31.具体的,分布式设备是一种分布式系统架构下的网络设备(例如:路由器、交换机、防火墙等),而主控板卡主要用于实现设备集中控制、路由计算等功能,业务板卡主要用于实现转发表项维护、报文转发等功能。
32.其中,分布式设备中可以包括一个或者多个主控板卡。当分布式设备中包括多个主控板卡时,多个主控板卡之间可以存在主备关系。举例来说,当分布式设备中包括两个主控板卡时,其中一个主控板卡可以为主用主控板卡,另一个主控板卡可以为备用主控板卡;当主用主控板卡出现故障时,可以切换备用主控板卡接替主用主控板卡。
33.类似的,分布式设备中可以包括一个或者多个业务板卡,该一个或者多个业务板卡分别与主控板卡连接。举例来说,高规格的单框分布式设备可以包括两个主控板卡以及十六个业务板卡;对于堆叠形态的分布式系统,两台分布式设备堆叠后则可以包括四个主控板卡以及三十二个业务板卡。
34.作为一种实施方式,可以采用远程过程调用(remote procedure call,rpc)实现主控板卡向业务板卡分发转发表项这一功能。主控板卡在分发转发表项时,可以通过rpc向业务板卡发起写入转发表的操作请求,并等待业务板卡的回应;业务板卡在将消息存入事件缓存队列后,或在转发表项写入完成后,向主控板卡发送回应报文;主控板拉收到回应报文后才继续执行其他处理。但是,由于该方式的交互过程为阻塞式,导致中央处理器(central processing unit,cpu)资源以及板卡间通信带宽利用率较低、表项分发速率低。
35.作为另一种实施方式,还可以采用ipc连接实现主控板卡向业务板卡分发转发表项这一功能。主控板卡与每一个业务板卡之间建立一个ipc连接,且针对每一个ipc连接分别创建一个消息队列。主控板卡在分发转发表项时,将要分发的转发表项转换成ipc消息,入队缓存到目标ipc连接所对应的消息队列中,然后执行消息出队并发送给业务板卡。当一条转发表项变化时,主控板卡需要为每一个ipc连接都缓存独立的一份消息。但是,采用该方案的内存开销较大。
36.因此,基于上述问题,本技术实施例提供的分布式设备中的主控板卡,可以针对与所有业务板卡之间的连接实现一个消息队列,即主控板卡与多个业务板卡之间的多个连接共用一个消息队列,用于缓存待分发给业务板卡的消息,便于异步处理。也就是说,每一个业务板卡发送的数据均缓存在同一个消息队列中,且主控板卡向每一个业务板卡发送的数据也均来自同一个消息队列。因此,消息队列中针对一条数据仅需要缓存一条消息,可以降低实现数据同步的开销。
37.基于上述分布式设备,本技术实施例提供一种消息入队方法,该消息入队方法应用于主控板卡。下面将对本技术实施例提供的消息入队方法进行详细的介绍。
38.请参照图1,图1为本技术实施例提供的一种消息入队方法的流程图,该消息入队方法可以包括如下内容:
39.步骤s101:获取待同步数据,并根据待同步数据生成待同步消息。
40.步骤s102:将待同步消息缓存至消息队列中,以通过消息队列将待同步消息发送给多个业务板卡。
41.具体的,在需要主控板卡将数据同步至业务板卡时,主控板卡可以获取待同步数据,并基于上述待同步数据生成对应的待同步消息。然后该待同步消息缓存至消息队列中。其中,由于主控板卡中仅存在一个消息队列,因此。主控板卡针对一条待同步数据,可以仅生成一条待同步消息,然后将该条待同步消息缓存至共享的消息队列中以实现消息的入队;对应的,当主控板卡需要将该条待同步消息发送给多个业务板卡中时,可以从共享的消息中提取该待同步消息,然后将该待同步消息发送给对应的业务板卡以实现消息的出队。
42.其中,根据数据分发时机的不同,本技术实施例提供的消息入队方法中的待同步消息也存在不同。作为一种实施方式,待同步消息可以包括批量同步消息以及实时增量消息。
43.批量同步消息,用于主控板卡向业务板卡进行一次集中的、完整的表项同步,例如:有新的业务板卡插入的情况或者主用主控板卡与备用主控板卡发生主备倒换的情况;而实时增量消息,用于在存在路由表项变化时,将变化的路由表项增量实时通知给业务板卡。
44.下面依次基于上述两种待同步消息介绍本技术实施例提供的消息入队方法的具体实施方式。
45.针对批量同步消息,请参照图2,图2为本技术实施例提供的一种消息入队方法的具体实施方式的流程图,该消息入队方法具体可以包括如下内容:
46.步骤s201:遍历多个连接,针对每个连接获取预设数量的转发表项数据,并根据预设数量的转发表项数据生成预设数量的批量同步消息。
47.步骤s202:针对每个连接,将预设数量的批量同步消息缓存至消息队列中,并记录该连接中的断点位置。
48.步骤s203:重复遍历多个连接,从每个连接的断点位置处开始将预设数量的批量同步消息缓存至消息队列中,直至缓存完成每个连接的批量同步消息。
49.具体的,作为一种实施方式,针对一系列批量同步消息,主控板卡可以连续执行多轮批量信息入队处理,每轮处理遍历多个连接并对每个连接入队预设数量的批量同步消息。
50.也就是说,在第一轮处理中,主控板卡遍历每一个与业务板卡之间的连接,然后得到预设数量的批量同步消息,从第一个业务板卡开始,依次将上述预设数量的批量同步信息缓存在消息队列中,并且记录每个连接在此时的断点位置;在第二轮处理中,主控板了同样遍历每一个与业务板卡之间的连接,从上一轮记录的断点位置开始,同样得到预设数量的批量同步消息,从第一个业务板卡开始,依次将上述预设数量的批量同步信息缓存在消息队列中,并且记录每个连接在此时的断点位置;以此类推,直至主控板卡完成所有批量同步信息的缓存。
51.其中,当有新的业务板卡插入或者主用主控板卡与备用主控板卡发生主备倒换时,主控板卡需要向业务板卡进行一次集中的、完整的表项同步,此时,主控板卡可以首先从每个业务板卡中获取与该业务板卡相关的转发表项数据,然后基于上述转发表项数据生成对应的批量同步消息。由于在入队的过程中,针对每个连接每轮仅入队预设数量的批量同步消息,因此主控板卡也可以每次获取预设数量的转发表项数据。
52.作为另一种实施方式,本技术实施例提供的主控板卡中可以运行一个周期性的批量定时器,该批量定时器可以对批量同步的过程进行时间分割,即将批量同步的过程分为多个时间段,每个时间段形成一个缓存周期。具体的,在上述步骤s201之后,本技术实施例提供的消息入队方法还可以包括如下内容:
53.在一个缓存周期内,判断消息队列中的批量同步消息的数量是否大于最大缓存数量。
54.若消息队列中的批量同步消息的数量大于最大缓存数量,则暂停缓存,直至下一
个缓存周期。
55.其中,在一个缓存周期之内,主控板卡可以对消息队列中批量同步消息的数量进行监控,当其数量超过事先预设的最大缓存数量时,可以暂停该周期中的批量同步过程,并在下一个缓存周期再继续执行批量同步的过程。
56.因此,在批量同步的过程中,可以采用多周期同步的方式,并判断每个周期内消息队列中的消息的数量是否超过了最大缓存数量,从而避免短时间内入队大量消息至队列,占用较多的内存。
57.需要说明的是,本技术实施例对预设数量以及最大缓存数量的大小不作具体的限定,本领域技术人员可以结合批量定时器的周期、批量同步消息的数量等因素,对预设数量以及最大缓存数量的大小进行合适的调整。
58.举例来说,假设批量定时器的周期为1秒,总共3个连接处于批量同步状态,每次批量定时器中连续执行200轮批量处理,每轮处理对3个连接按照各自进度分别入队100个消息。因此,在一次批量同步过程中,每个连接可入队2万个批量同步消息。因此,在该示例中,预设数量大于一,可以避免频繁切换当前处理的连接,频繁地根据断点查找表项,从而可以提高性能。
59.因此,在需要对主控板卡与多个业务板卡之间的连接进行消息的批量同步时,可以采用多连接小批量交叉入队的方式,即每轮依次缓存每个连接中的预设数量的数据,执行多轮缓存任务,直至缓存完成需要缓存的所有数据。由于采用上述方案,消息队列中的各个连接的批量消息是交错缓存的,因此在消息出队的过程中,不会出现由于某一连接的消息过于集中,导致连接分发速率达到上限,从而使得其他连接的消息没有发送的情况,提高了数据同步的效率。
60.针对实时增量消息,请参照图3,图3为本技术实施例提供的另一种消息入队方法的具体实施方式的流程图,该消息入队方法具体可以包括如下内容:
61.步骤s301:获取任意一条实时路由表项变化数据,并根据实时路由表项变化数据生成对应的一条实时增量消息。
62.步骤s302:将实时增量消息缓存至消息队列中。
63.具体的,当一条路由表项发生实时变化时(例如:路由添加、路由删除、路由更新等),可以仅在消息队列中缓存一条实时增量消息,主控板卡可以基于这一条实时增量消息,向对应的业务办法转发表项变化。
64.作为一种实施方式,实时增量消息可以缓存在之前入队的批量同步消息之后,从而实现各类消息的保序,保证接收端处理消息的正确性。
65.因此,针对一条实时路由表项变化数据,仅需生成一条实时增量信息并将该实时增量信息缓存至多个连接共享的消息队列中,从而可以降低实现数据同步的开销。
66.在上述方案中,在主控板卡上实现一个消息队列,每一个主控板卡与业务板卡之间的连接均公用该消息队列,从而在进行数据同步的过程中,可以基于待同步数据仅生成一条待同步消息,并将这一条待同步消息缓存至消息队列中。由于消息队列中针对一条待同步数据仅需要缓存一条待同步消息,因此,降低了实现数据同步的开销。
67.进一步的,与上述实施例提供的消息入队方法对应的,本技术实施例还提供一种消息出队方法,该消息出队方法可以包括如下内容:
68.根据自身与任意一个业务板卡之间的连接状态,确定连接的出队速率。
69.根据出队速率将待同步消息发送给业务板卡。
70.具体的,在消息出队的过程中,可以实现发包速率控制。根据主控板卡与业务板卡之间的连接状态(例如:通道帧率上限、连接缓冲长度等),可以确定主控板卡与该业务板卡之间的出队速率,并可以基于该出队速率从消息队列中出队消息。可以理解的是,当任一主控板卡与业务板卡之间的连接的发包帧率达到预设限定值时,可以暂停出队过程。
71.此外,作为一种实施方式,主控板卡中还可以设置有周期定时器,采用周期定时器,可以从消息队列中出队得到消息,并将多个消息打包到同一报文帧中并发送出去。
72.举例来说,假设通道帧率上限为每秒5000个报文,将周期定时器的周期设定为100毫秒,每周期每会话发送500报文。其中,与将周期设置为1秒,每周期每会话发送5000报文相比,采用上述示例中的出队速率可以实现少量多次发送,从而使得拥塞的几率更小。
73.在上述方案中,可以根据主控板卡与业务板卡之间的连接状态确定该连接对应的出队速率,从而保证消息的发送过程在时间轴上更加均匀,降低数据同步过程中拥塞的几率。
74.进一步的,在出队的过程中,还可以基于索引消息替代重复数据。也就是说,上述根据出队速率将待同步消息发送给业务板卡的步骤具体可以包括如下内容:
75.针对部分数据相同的待同步消息,根据相同的部分数据生成共享消息。
76.将共享消息发送给业务板卡。
77.根据出队速率将路由索引数据依次发送给业务板卡。
78.具体的,以转发表项数据为例,每个转发表项数据通常包括路由前缀、下一跳、递归下一跳这三层结构,且会出现多个转发表项数据具有相同的下一跳及递归下一跳的情况。在这种情况下,可以基于多个转发表项数据中相同的部分(即下一跳、递归下一跳)生成共享消息,先将生成的共享消息与第一索引消息发送给业务板卡。然后,再依次将多个转发表项数据中不相同的部分(即路由前缀)以及第二索引消息发送给业务板卡。业务板卡基于第一索引消息以及第二索引消息的映射关系,可以还原转发表项数据。
79.在上述方案中,可以采用共享消息替代多条待同步消息中重复的数据,并基于索引消息压缩数据量,从而可以降低通信过程中的通信数据量。
80.进一步的,在执行本技术实施例提供的消息入队方法以及消息出队方法之前,首先需要完成主控板卡的初始化、消息队列的创建以及与业务板卡之间连接的建立。
81.作为一种实施方式,在主控板卡完成初始化后,可以先与某一个业务板卡建立连接,然后在创建消息队列,然后再与其他业务板卡建立连接。
82.因此,主控板卡在与任意一个业务板卡建立连接之后,可以在主控板卡上实现一个消息队列,每一个主控板卡与业务板卡之间的连接均公用该消息队列,从而在进行数据同步的过程中,可以基于待同步数据仅生成一条待同步消息,并将这一条待同步消息缓存至消息队列中。由于消息队列中针对一条待同步数据仅需要缓存一条待同步消息,因此,降低了实现数据同步的开销。
83.作为一种实施方式,在主控板卡完成初始化后,可以先创建消息队列,然后在与业务板卡建立连接。
84.因此,主控板卡在完成初始化之后,可以在主控板卡上实现一个消息队列,每一个
主控板卡与业务板卡之间的连接均公用该消息队列,从而在进行数据同步的过程中,可以基于待同步数据仅生成一条待同步消息,并将这一条待同步消息缓存至消息队列中。由于消息队列中针对一条待同步数据仅需要缓存一条待同步消息,因此,降低了实现数据同步的开销。
85.可以理解的是,上述主控板卡完成初始化、消息队列的创建以及与业务板卡之间连接的建立的过程,既可以在主用主控板卡首次使用时执行,也可以在主备主控板卡切换时,在备用主控板卡上执行,本技术实施例对此不作具体的限定。
86.进一步的,本技术实施例还可以对主控板卡与业务板卡之间的连接状态进行控制和管理。以采用有限状态机对ipc连接进行管理为例,请参照图4,图4为本技术实施例提供的一种ipc连接状态机的示意图,可以看出,ipc连接状态可以包括:无效、待批量、批量中、待平滑、就绪等状态。例如:就绪表示ipc连接建立成功后的稳定状态。
87.请参照图5,图5为本技术实施例提供的一种消息入队装置的结构框图,该消息入队装置500可以应用于主控板卡,包括:获取模块501,用于获取待同步数据,并根据所述待同步数据生成待同步消息;缓存模块502,用于将所述待同步消息缓存至消息队列中,以通过所述消息队列将所述待同步消息发送给多个业务板卡;其中,所述主控板卡与所述多个业务板卡之间的多个连接共用所述消息队列。
88.在本技术实施例中,在主控板卡上实现一个消息队列,每一个主控板卡与业务板卡之间的连接均公用该消息队列,从而在进行数据同步的过程中,可以基于待同步数据仅生成一条待同步消息,并将这一条待同步消息缓存至消息队列中。由于消息队列中针对一条待同步数据仅需要缓存一条待同步消息,因此,降低了实现数据同步的开销。
89.进一步的,所述获取模块501具体用于:遍历所述多个连接,获取针对每个连接的获取预设数量的路由表项数据转发表项数据,并根据所述预设数量的路由表项数据转发表项数据生成预设数量的批量同步消息;所述将所述待同步消息缓存至消息队列中,包括:针对每个连接,将所述预设数量的批量同步消息缓存至所述消息队列中,并记录该连接中的断点位置;重复遍历所述多个连接,从每个连接的断点位置处开始将所述预设数量的批量同步消息缓存至所述消息队列中,直至缓存完成每个连接的批量同步消息。
90.在本技术实施例中,在需要对主控板卡与多个业务板卡之间的连接进行消息的批量同步时,可以采用多连接小批量交叉入队的方式,即每轮依次缓存每个连接中的预设数量的数据,执行多轮缓存任务,直至缓存完成需要缓存的所有数据。由于采用上述方案,消息队列中的各个连接的批量消息是交错缓存的,因此在消息出队的过程中,不会出现由于某一连接的消息过于集中,导致连接分发速率达到上限,从而使得其他连接的消息没有发送的情况,提高了数据同步的效率。
91.进一步的,所述获取模块501还用于:在一个缓存周期内,判断所述消息队列中的批量同步消息的数量是否大于最大缓存数量;若所述消息队列中的批量同步消息的数量大于所述最大缓存数量,则暂停缓存,直至下一个缓存周期。
92.在本技术实施例中,在批量同步的过程中,可以采用多周期同步的方式,并判断每个周期内消息队列中的消息的数量是否超过了最大缓存数量,从而避免短时间内入队大量消息至队列,占用较多的内存。
93.进一步的,所述获取模块501具体用于:获取任意一条实时路由表项变化数据,并
根据所述实时路由表项变化数据生成对应的一条实时增量消息。
94.在本技术实施例中,针对一条实时路由表项变化数据,仅需生成一条实时增量信息并将该实时增量信息缓存至多个连接共享的消息队列中,从而可以降低实现数据同步的开销。
95.进一步的,所述消息入队装置500还包括:确定模块,用于根据自身与任意一个业务板卡之间的连接状态,确定所述连接的出队速率;发送模块,用于根据所述出队速率将所述待同步消息发送给所述业务板卡。
96.在本技术实施例中,可以根据主控板卡与业务板卡之间的连接状态确定该连接对应的出队速率,从而保证消息的发送过程在时间轴上更加均匀,降低数据同步过程中拥塞的几率。
97.进一步的,所述发送模块具体用于:针对部分数据相同的所述待同步消息,根据相同的部分数据生成共享消息;其中,所述共享消息包括所述相同的部分数据以及第一索引消息;将所述共享消息发送给所述业务板卡;根据所述出队速率将路由索引数据依次发送给所述业务板卡;其中,所述路由索引数据包括不同的部分数据以及与所述第一索引消息对应的第二索引消息。
98.在本技术实施例中,可以采用共享消息替代多条待同步消息中重复的数据,并基于索引消息压缩数据量,从而可以降低通信过程中的通信数据量。
99.进一步的,所述消息入队装置500还包括:第一建立模块,用于在完成初始化后,与所述业务板卡建立连接;第一创建模块,用于创建所述消息队列。
100.在本技术实施例中,主控板卡在与任意一个业务板卡建立连接之后,可以在主控板卡上实现一个消息队列,每一个主控板卡与业务板卡之间的连接均公用该消息队列,从而在进行数据同步的过程中,可以基于待同步数据仅生成一条待同步消息,并将这一条待同步消息缓存至消息队列中。由于消息队列中针对一条待同步数据仅需要缓存一条待同步消息,因此,降低了实现数据同步的开销。
101.进一步的,所述消息入队装置500还包括:第二创建模块,用于在完成初始化后,创建所述消息队列;第二建立模块,用于与所述业务板卡建立连接。
102.在本技术实施例中,主控板卡在完成初始化之后,可以在主控板卡上实现一个消息队列,每一个主控板卡与业务板卡之间的连接均公用该消息队列,从而在进行数据同步的过程中,可以基于待同步数据仅生成一条待同步消息,并将这一条待同步消息缓存至消息队列中。由于消息队列中针对一条待同步数据仅需要缓存一条待同步消息,因此,降低了实现数据同步的开销。
103.请参照图6,图6为本技术实施例提供的一种电子设备的结构框图,该电子设备600包括:至少一个处理器601,至少一个通信接口602,至少一个存储器603和至少一个通信总线604。其中,通信总线604用于实现这些组件直接的连接通信,通信接口602用于与其他节点设备进行信令或数据的通信,存储器603存储有处理器601可执行的机器可读指令。当电子设备600运行时,处理器601与存储器603之间通过通信总线604通信,机器可读指令被处理器601调用时执行上述消息入队方法。
104.例如,本技术实施例的处理器601通过通信总线604从存储器603读取计算机程序并执行该计算机程序可以实现如下方法:步骤s101:获取待同步数据,并根据待同步数据生
成待同步消息。步骤s102:将待同步消息缓存至消息队列中,以通过消息队列将待同步消息发送给多个业务板卡。
105.处理器601可以是一种集成电路芯片,具有信号处理能力。上述处理器601可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其可以实现或者执行本技术实施例中公开的各种方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
106.存储器603可以包括但不限于随机存取存储器(random access memory,ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read

only memory,prom),可擦除只读存储器(erasable programmable read

only memory,eprom),电可擦除只读存储器(electric erasable programmable read

only memory,eeprom)等。
107.可以理解,图6所示的结构仅为示意,电子设备600还可包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。图6中所示的各组件可以采用硬件、软件或其组合实现。于本技术实施例中,电子设备600可以是,但不限于台式机、笔记本电脑、智能手机、智能穿戴设备、车载设备等实体设备,还可以是虚拟机等虚拟设备。另外,电子设备600也不一定是单台设备,还可以是多台设备的组合,例如服务器集群,等等。于本技术实施例中,消息入队方法中的主控板卡以及业务板卡均可以采用图6示出的电子设备600实现。
108.本技术实施例还提供一种计算机程序产品,包括存储在计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被计算机执行时,计算机能够执行上述实施例中消息入队的步骤,例如包括:获取待同步数据,并根据所述待同步数据生成待同步消息;将所述待同步消息缓存至消息队列中,以通过所述消息队列将所述待同步消息发送给多个业务板卡;其中,所述主控板卡与所述多个业务板卡之间的多个连接共用所述消息队列。
109.在本技术所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
110.另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
111.再者,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
112.需要说明的是,功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质
上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read

only memory,rom)随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
113.在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
114.以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献