APP下载

基于关键任务热备份的车联网系统容错性能优化

2021-07-19邬少飞

电脑与电信 2021年5期
关键词:连通性备份顶点

袁 彪 邬少飞

(武汉工程大学计算机科学与工程学院,湖北 武汉 430000)

1 引言

1.1 研究背景

随着科技的进步,大数据的概念已然进入我们的生活领域。大数据的不断增长使得对数据的运输、存储成为技术发展的重要方向。其中,最重要的挑战便是将大量的数据进行集合分析。而对数据分析得到正确结果的前提是利用各式各样高复杂性的算法来保证数据的高可靠性。面向大数据的计算类型主要有两种,其一是面向批处理进行运算,其二是实时运算[2]。当下市面上出现了较多的实时流处理系统,例如实时搜索、社交互联、实时监控等等。特别地,在交通领域的车联网建设中,由于车辆的特殊安全需求,既要求得到可靠的计算结果,又要求一定的实时性[3]。要保证车载系统的互联互通和车载传感数据的实时采集以及处理的成功施行就要保证数据采集、输出和处理的协调一致。

1.2 目的和意义

在车联网中,车辆数据传输的高一致性远远比高可用性要重要。因为对于目前车联网的发展来讲,车辆内部系统所进行的数据传输更多的是为了辅助驾驶员驾驶车辆。哪怕数据传输有所延迟,所造成的后果可能仅仅只是辅助数据更新不及时,无法给予驾驶员更好的辅助体验;而如果传输的数据丢失了一致性,很可能会造成较为严重的后果。例如当前许多带有辅助驾驶功能的车辆都有前车防撞系统,在车辆行驶过程中传感器会自动检测与前车的距离,在这个过程中可能会存在与云端AI 的交互,如仅仅只是数据传输出现了延迟,驾驶员在没有辅助系统提示的情况下会对车距具备一定的敏感性。而如果出现了数据丢失,原本传输的警告状态码为将false激活成了true,但车辆内置系统接收到的是无激活,那么可能播报无问题,从而使驾驶员放松警惕,导致追尾事故发生。因此在车联网中,适当降低一点高实时性能来换取数据一致性保证是非常有价值的。所以本文通过基于关键任务热备份的方式来探讨对车联网系统容错性能的优化,旨在为车联网云服务平台解决故障问题。

2 主动备份相关概念

2.1 主动备份概念

在流处理系统的早期部署中,由于性能要求较低,而服务器资源空闲较多,所以会对数据进行主动备份,从而保证了系统故障出现时的主从切换。系统在进行主动备份时,会将同一个分区实例预先备份到不同的服务节点上[1]。当系统运行时,不同节点上的实例可以同时接收来自消息生产者的数据,也可以同时提供消费接口给下游消费者进行数据消费,消费者在接收到消息后会进行数据过滤,过滤掉重复消费的信息。这种备份模式会使得消息实例至少拥有完全同步的副本,当有节点出现故障时,同步副本一样可以接收生产者消息和提供消费接口,能够高度保证数据可靠性。但这样的容错模式由于对节点的资源消耗过大,正常运行的实时性也低到难以接受,因此仅仅适合于小型服务集群。

2.2 面向关键任务的主动备份

在多数情况下,由于车联网系统需要确保高实时性,因此应避免设置过于繁琐的备份操作以防影响系统运行时的性能。此时,为了尽可能减少故障恢复的时间,采用面向关键任务的主动备份的容错策略将更为有效。我们可以在这些节点上为一些关键任务执行主动备份,这样相比单纯的主动备份策略而言更加灵活,较单纯的检查点备份策略而言又更加可靠高效[4]。本课题从作业拓扑图的角度,结合车联网系统实际业务逻辑,采用网络连通性分析对任务的关键度进行排序。找出资源约束条件下的前N 个关键任务进行主动备份,从而进一步提高了系统的容错性能和数据一致性。

3 关键任务热备份

3.1 基于网络连通性的关键任务挖掘

通过网络连通性来分析、挖掘关键任务,主要是基于汽车正常行驶时现实逻辑所形成的作业拓扑图,并站在网络结构角度来对各个节点的关键性进行探究。这里主要探寻节点之间的关联关系,与传统的关键任务算法必须明确图中节点的入度、出度、边的权值大小等等有着明显区别。本课题运用了以下两种判断节点网络连通性的方法来综合确定关键任务:

(1)最短路径判断法

最短路径指的是图中某个顶点到达另一个顶点的所有路径中,经过边的条数最少的一条路径。即:

其中D(i,j,n)指的是从顶点i到顶点j的最短路径,n为图中顶点个数(n也是其中一个顶点)。

若某个顶点出现在某条最短路径中,则为此顶点标记一次重要度参数。若某顶点多次出现在最短路径中,则表明此顶点在本作业拓扑图中担任着较为重要的角色,多项业务的实现过程都离不开此节点[5]。算法描述如下:

(2)邻接连通度判断法

当删除某个顶点以及与其相关的边后,其邻接顶点集合中还保持连通的顶点对数标记为该顶点的邻接连通性。与最短路径判断法不同的是,此方法中的邻接顶点连通性与顶点的关键性成反比。邻接连通性数值越高,则表明该顶点的关键性越低;邻接连通性数值越低,则表明该顶点的关键性越高。由此构建以下公式来判断顶点的重要性:

其中NI(i)表示顶点i的重要程度,A(i)表示顶点i的邻接连通度,n(i)表示顶点i 邻接顶点的个数。可以看到,当顶点i 的重要性最低时,删除与其相关的边后,对所有邻接顶点均无影响,邻接连通度A(i)为n(i)*(n(i)-1)/2,重要度NIi为n(i)*(n(i)-1)/(n(i)*(n(i)-1)+2);当顶点i的重要程度最高时,删除与其相关的边后,所有的邻接顶点都不在连通,邻接连通度A(i)为0,重要度NI(i)为n(i)*(n(i)-1)/+2。

3.2 车联网系统中的热备份协议

在传统的流处理系统中,备份数据较为常用的方法是在消息发送端将关键数据进行备份,直至发送的消息途经系统数据链路的各个节点,这种方式的备份协议虽然能够保证任何节点在丢失数据后都能通过上级节点获取到原始数据,但由于每个节点都需要备份经过该节点的数据,导致系统的数据冗余程度较高,内存开销过大。因此这里选择通过自定义备份级别N以及反馈-清除备份机制来削弱内存开销。

如图1 所示,以N=2 为例,采取2 级反馈-清除备份机制处理数据流,即当producer产生并发送数据到Vi-1时,Vi-1会判断数据是否为关键任务信息,符合则将数据备份到缓存区,并发送到下一个节点Vi,节点Vi执行相同操作,备份后反馈ack 消息到Vi-1,并发送数据到节点Vi+1,Vi+1接收数据并备份后,反馈ack消息到Vi,Vi再次反馈ack消息到Vi-1,此时Vi-1删除数据,减少开销。

图1 2级备份原理

3.3 系统容错效率测量

本次测试基于kafka 管道结构,用三台虚拟机搭建了拥有三个服务节点的kafka集群,数据为汽车埋点协议的报文,由AD 报文模拟系统生成,每秒生成一帧数据,每30 帧数据打包发送到kafka服务器,然后通过报文解析项目拉取kafka中的数据进行消费,同时在kafka 集群工作过程中间隔一段时间使其中一台机器不断宕机重启,以检测数据丢失情况,得到对比图如图2所示。

图2 数据丢失对比

可以看到,纵然有节点服务器出现宕机情况,kafka依然表现出了高可用性的特点,而进行了2级关键任务备份后系统的数据一致性也出现了一定的提升,例如在类似11:35 附近时间节点上,拥有2级备份协议的系统数据丢失条数明显要少于无备份的情况。同时值得注意的是,根据图中数据可以观测到,在报文条数较少或较多的区域中,无备份情况下的消费条数和2级备份情况下的消费条数差距并不大,反而是在报文传输条数处于中位数时差距较为明显。总体来看,车联网系统在进行关键任务热备份后确实提高了数据一致性,提升了一定的容错效率。

3.4 系统热备份开销测量

虽然进行关键任务热备份确实会使车联网系统的容错效率得到提升,但也可能导致服务器节点的系统开销增大,这里以服务器节点的内存开销为例,通过Oracle的Java Mission Control 和Java Flight Recorder 性能监测工具来探究关键任务热备份的开销增加情况。测量结果如图3所示。

图3 内存开销对比

结果与预期一样,随着报文的增加,服务器节点所需要的内存开销也呈现着阶梯式上升,其中进行了2级关键任务备份的内存开销明显要高于无备份。这表明利用热备份来保证数据一致性就要多损耗一些服务器性能。

4 结论

车联网系统属于数据敏感的流处理系统,更强调信息的发送与接收的完整性,对数据一致性的要求较高。在基于关键任务热备份情况下的对原始kafka 容错机制进行优化研究,通过测量结果我们可以看到对关键任务进行热备份确实可以帮助恢复因为宕机而丢失的数据,但相对于无备份情况下,也增加了一些系统的内存开销,但开销增加并不巨大,可以通过对服务器硬件的物理升级来解决。

猜你喜欢

连通性备份顶点
“备份”25年:邓清明圆梦
偏序集及其相关拓扑的连通性
中国自然保护地连通性的重要意义与关键议题
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
过非等腰锐角三角形顶点和垂心的圆的性质及应用(上)
创建vSphere 备份任务
拟莫比乌斯映射与拟度量空间的连通性
高稳定被动群集车联网连通性研究
旧瓶装新酒天宫二号从备份变实验室
出版原图数据库迁移与备份恢复