一种遥测数据分布式计算的纠错机制
张钦顾仰 高德彭 郭景赫 罗树欣 顾焜仁
上海航天电子技术研究所 上海 201109
中图分类号:V19 文献标识码:A 文章编号
一、概述
分布式计算是一种将复杂任务分解成多个子任务,通过多个计算节点独立运算处理子任务,最后完成整个复杂任务的一种计算方式。相较于传统的计算方式,分布式计算能通过并行的方式,利用多个运算节点同时作用于一个计算任务,能大大降低任务的计算时间。主流的编程语言目前都提供了分布式计算的功能,系统之间的通信方式主要有两种:基于消息方式实现系统间的通信和基于远程调用方式实现系统间的通信。
二、高并发问题
高并发是指同时有大量的访问请求,导致硬件占用率过高的一种状态。
近年来,我国遥测数据测试数量逐年上涨,且种类五花八门。这意味着需要监测的数据种类和数量也随之有了巨量的增幅。由于数据大部分通过数据链传输,同一时间针对数据库,网关等等都有无数的访问请求。这种随之产生的高并发工作量是传统的计算方法无法及时有效的。
2.1 分布式计算
分布式计算是一种将复杂的系统任务,拆分成许多简单子任务处理的计算方式,通过调度资源在同一时刻并行处理任务,减少处理间,通过分布式计算能有效的解决高并发带来的诸多问题。
随着电子技术的蓬勃发展,分布式计算在近两年来发展突飞猛进,架构规模和计算复杂度也日趋复杂。以往分布式计算往往运用在科学研究,比如寻找最大的梅森素数等计算任务,现如今许多企业单位的管理系统设计上都已采用分布式计算。
在使用越来越普及的同时,分布式计算的故障率也越来越高。Google 生产集群中平均每天会有数十个节点发生故障。这些故障会导致数据出错,让系统失效。
2.2 三模冗余
三模冗余是通信技术中较为常见的容错算法,通常使用三个功能一样的计算单元来计算同一任务,最终采用投票的机制给出最终结果,是解决高并发问题的有效解决措施。因为三个计算单元是完全独立的,有两个计算单元同时出错的概率非常低,即便有一个计算单元出错,依旧还能输出正确结果,可以大幅度提升系统的可靠性,过滤错误输出。但这也意味着在提高数据正确率的同时使用了三倍的计算资源。
文献[1]提出了一种二阶段三模冗余容错算法,该算法一阶段先复制两份任务分配给两个计算单元,将两个计算单元的计算结果进行比较,如果比较结果不一致,则再进行一次计算,最后投票得出正确结果。该算法在故障率较低的情况下,只需使用两倍的计算资源,相较于常规三模冗余容错算法能节约一半的计算资源,但是一旦故障率较高时,重新执行第三次计算不仅增加了额外的工作量,还会大幅度降低计算系统的实时性能。
由于装备测试环境复杂多变,地面遥测测试系统的抗干扰能力在不同测试环境下也有较大水平的波动。我们在二阶段三模冗余容错算法的基础上,增加了相应的自适应动态调整功能模块。

3.3 工作流程图
鉴于作战环境并非一成不变,沙漠热带极寒等等恶劣天气对误码率影响较大。本容错算法可设置定时测算误码率或者按键执行测算误码率,测完完成后重新匹配容错算法机制,自适应当前测试环境。
下图为动态自适应容错算法工作流程图
图1 工作流程图

由于各个计算系统的计算任务不尽相同,每个系统对于故障率提升导致的计算时间大幅度攀升的情况也都不同。故该程序在执行前将根据目前通信情况做初始化。
3.4 程序初始化
通过简单模拟程序初始化工作介绍工作流程
调取预设计算任务,执行例行计算。分别计算200 次,并绘制分布图。


将两种纠错方式的错误率和计算用时的算数平均值汇总,绘制折线图,可以在折线图中定义出门限值ð,在故障率高于ð 时,使用二阶段三模冗余容错算法反而降低计算效率,那就使用常规算法,反之,低于这个故障率,使用二阶段三模冗余容错算法能提升计算效率,那就使用二阶段三模冗余容错算法。

3.5 matlab 代码
>> % 数据定义
error_A = [Er1_a,Er2_a,Er3_a,Er4_a,Er5_a,Er6_a,Er7_a,Er8_a,Er9_a,Er10_a];%错误率A (%)
error_B = [Er1_b,Er2_b,Er3_b,Er4_b,Er5_b,Er6_b,Er7_b,Er8_b,Er9_b,Er10_b];%错误率B (%)
T_A = [T1_a,T2_a,T3_a,T4_a,T5_a,T6_a,T7_a,T8_a,T9_a,T10_a]; % 策略A 的错误率 (%)
T_B = [T1_b,T2_b,T3_b,T4_b,T5_b,T6_b,T7_b,T8_b,T9_b,T10_b]; % 策略B 的错误率 (%)
% 绘制两条折线
figure;
plot(error_A, T_A, '-o', 'LineWidth', 2, 'DisplayName', '常规三模冗余', 'Color', [0.2, 0.6, 0.8]);
hold on;
plot(error_B, T_B, '-s', 'LineWidth', 2, 'DisplayName', '二阶段三模冗余', 'Color', [0.8, 0.2, 0.2]);
% 计算交点(线性插值)
% 构造更密集的N 值进行插值
Error_dense = linspace(min(error_A), max(error_A), 1000);
T_A_dense = interp1(error_A, T_A, N_dense, 'linear');
T_B_dense = interp1(error_B, T_B, N_dense, 'linear');
% 找到误差最小的点作为交点
[~, idx] = min(abs(T_A_dense - T_B_dense));
intersect_error = Error_dense(idx);
intersect_Time = T_A_dense(idx);
% 标注交点
plot(intersect_error, intersect_Time, 'kp', 'MarkerSize', 10, 'LineWidth', 2, 'DisplayName', '门限值');
text(intersect_error, intersect_Time, ...
sprintf('(%.1f%%, %.1f)', intersect_N, intersect_error), ...
'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'right', 'FontSize', 10);
% 添加标题和标签
title('分布式计算错误率对比', 'FontSize', 14);
xlabel('错误率 (%)', 'FontSize', 12);
ylabel('计算用时(ms)', 'FontSize', 12);
legend('Location', 'best');
grid on;
% 调整坐标轴范围
xlim([0, 110]);
ylim([0, 40]);
hold off;
3.6 主程序代码示例
1 输入中间值 data
首先获取测试数量,测试环境等等输入变量值。
Private void button1_Click_1(object sender, EventArgs e)
{
int document_cut ;//个数
try
{
document_cut = int.Parse(textBox1.Text);
}
catch
{
document_cut = int.Parse(textBox4.Text);
}
string cshj = textBox2.Text.ToString();
string wcl = textBox3.Text.ToString();
string ck_fp_old = textBox6.Text.ToString();
2 For each node,if data < XX, do [] if data> xx ,do [] 如果目前误码率高于XX,那么采用常规三模冗余处理,如果误码率低于XX,采用二阶段三模冗余算法处理。
3 distribute result to node_n /分发结果至下一级节点
4 select node and node_n,for node{node, node_n }比较节点,进行比较
5 if compare success do ,else if do 如果比较成功,继续下一步,如果失败,通过三模备份恢复
5 for 实时循环处理结果
6 end for 比较结束,测试结束
四、结束语
为了节省计算过程中的计算性能,降低通信过程中的通信开销,本文在原有二阶段三模冗余算法概念上,增加了动态自适应的逻辑。能在不同的环境下,采取最适合的纠错算法,缩短了故障恢复时间,提高了系统可靠性。
参考文献
[1] SALEHI M,KHAVARI TAVANA M,REHMAN S,et al.Energy-efficient permanent fault tolerance in hard real-time systems[J]. IEEE
Transactions on Computers,2019,68(10):1539-1545.
[2]郭强.液晶智能显示终端[J].电子技术应用,1994(07):26-28.
[3]杨光.小型一体化火灾报警器[J].电工技术,1994(11):40-42.
[4]杨润生.汽车发动机电子控制系统故障自检方法[J].汽车电器,1997(03):24-25.
[5]沈义民.无线遥测的简单实现[J].电测与仪表,2000(06):47-49.
[6]张华栋,吴国辉,代冀阳.遥测调制体制研究[J].计算机工程与设计,2013(02):339-343.