首页 电商 正文

太空不惧宕机,软件工程鼻祖NASA是怎么做到的?

2024-03-22 08:31
admin

文/GlennFleishman译者/Sambodhi编辑/Tina

来源:InfoQPro(ID:infoqpro)

导读:

对很多人来说,NASA非常神秘。NASA即美国国家航空航天局,是美国联邦政府的一个行政机构,负责制定、实施美国的民用太空计划,以及开展航空科学暨太空科学的研究。NASA负责美国的太空探索,例如登月的“阿波罗”计划,太空实验室,以及随后的航天飞机。

特别值得一赞的是,NASA也热烈拥抱了开源:在航天领域中,NASA在开源方面走在前列,已开源了大量软件、设计工具,涵盖了航天器整个研制和应用过程。众所周知,NASA每次太空任务都离不开先进的软件程序。可能大多数人不清楚的是,今天的“软件工程”这一概念,正是发轫于NASA。由此软件架构的重要性可见一斑。

GlennFleishman和我们分享了NASA的软件架构的演变等方方面面,可读性非常高。InfoQ中文站将其翻译出来,只是为了不忘初心:我们的征途是星辰和大海!

当你在离家数百万英里的太空时,如果服务器崩溃了,可没有人能听见你恐慌的呐喊!所以对NASA来说,冗余特别重要,既然可以发送五台服务器到平流层外,他们就必定不会只发送一台。

在太空里,宇宙射线、磨损、突发故障各种不确定因素都会对设备造成影响,软件架构必须非常健壮。软件架构领域的创始人、NASA喷气推进实验室的杰出访问科学家DavidGarlan说,航天器系统尤其需要一个故障保护层,使它们在没有地球方面的直接干预下能够切换到紧急状态。

相对地面的软件,航天软件的设计更难。

在地面,如果一台数据中心的服务器性能过于缓慢,可以不断增加服务器来解决问题,但航天器的计算能力短缺问题却不能靠增加机器的方式解决。航天器的算力在整个任务期间保持不变,系统必须设计成能自动丢弃某些给定的任务。

如果是一台地面上的数据库服务器,无法实时插入数据也不会造成太大的影响。但是,一艘飞奔火星的宇宙飞船,如果其运行周期没有得到完美的控制,可能会与火星完全失之交臂。

持续运行2700天,靠的就是自恢复策略。

航天器能用的计算机台数是有严格限制的。增加物理备份,会让航天器的软件变得更具弹性。对于1972年至2011年的NASA航天飞机项目来说,仅有三到四台计算机是不够的,那时共有五台飞行控制计算机,再多增加一台是需要设计人员反复考虑的事情。

此外,NASA还制定了一项策略,允许软件在最坏的情况下恢复。这一策略在1961年至1972年的“阿波罗”(Apollo)计划中途首次实施,它是为了出现问题时而明确设计的。如果没有这一策略,一项又一项的任务将不得不放弃。

在1977年的发射期间,NASA太空探测器“旅行者2号”(Voyager2)记录了一些抖动,这些抖动很可能导致服务器“宕机”,科学家也无法预料程序将如何解读这些抖动,但是探测器最终还是正确地进入了恢复模式。

“机遇号”(Opportunity)火星车于2003年发射,原计划在火星上运行90天,但实际上,到2018年中,它仍在运行,总共5111天。这台火星车本来设计寿命为90天,但却超额服役15年,中间曾经根据采集的移动数据重写代码,来绕过一条电缆短路造成的故障。

“好奇号”(Curiosity)于2011年发射,最初计划在火星上运行687天,但它到今天仍然运行,截止本文写作时,已超过2700天。“好奇号”火星车在火星上的第一年和第五年,其两台主计算机曾出现过故障,差点造成任务失败。

有时候,冗余也能增加机会。

“旅行者2号”在1986年经过天王星,1989年经过海王星时,要不是“旅行者2号”有一套备用的计算机,再加上任务控制中心能够上传新的软件来利用这些备用计算机,否则,“旅行者2号”能够拍摄到的天王星和海王星的照片就会少得很多。

能打败墨菲定律的只有备份

允许有几分钟“停服”时间,还是拥有故障转移解决方案,这是需要权衡利弊的。在地球上计算的硬件已经从单一业务大型机发展到功能强大的服务器冗余阵列,这种阵列允许其中一个或多个服务器出现故障,但并不会因此中断业务。出于必要,NASA也决定让太空中多台计算机运行重复功能。

就算是完美的软件、完美的硬件,仍然也有可能在太空中崩溃:能够打败墨菲定律和宇宙射线的只有备份。在“阿波罗”计划期间,NASA曾致力于确保每个部件和系统都经过测试,直到确定它是完美的。然而,此举既昂贵又脆弱。

“完美“解决不了问题

有两个著名的例子说明了依赖完美的问题。女工程师MargaretHamilton是麻省理工学院在20世纪60年代末开发“阿波罗”计划软件的团队负责人,她经常在深夜和周末带着蹒跚学步的女儿Lauren到办公室加班。在1968年底执行的“阿波罗8号”任务将标志着宇航员首次绕月飞行,在此之前,小女孩Lauren通过“阿波罗”计算机DSKY,即一个键盘和显示器的组合,来玩指令舱模拟器。她出人意料地触发了预发射顺序,从而使飞行模拟发生崩溃。

Hamilton试图说服NASA允许她引入错误检查,以防止宇航员在执行任务时犯下同样的错误,尽管这种错误不太可能会发生。但NASA驳回了她的请求,坚称宇航员将会完美地完成任务。不得已,Hamilton在手册上标注了有关这一问题的可能性。

然后,宇航员JimLovell在“阿波罗8号”的飞行中恰巧也选择了相同的顺序,结果,从飞船的内存中擦除了返回地球所需的导航数据。在“阿波罗13号”在发生爆炸的时候曾对休斯顿指挥中心回报了一句非常著名的话:“休斯顿,我们有麻烦了”(Houston,wehaveaproblem),万幸的是,“阿波罗13号”成功地处置了这一险境,与其说是跳上一艘临时救生艇,不如说是找到备用磁带:Hamilton和她的团队能够从地球上传输导航数据,因为该系统足够灵活,可以在传输过程中接受这些输入。

Hamilton将系统设计为具有弹性,可以在出现不堪重负的情况下,系统仍然可以不受干扰地恢复正常运行,并允许它报告错误,同时提供足够的信息以做出判断。在这种情况下,计算机的负载管理软件专注于更高优先级的任务,包括雷达输入,并按预期执行。在任务控制中心经过紧张而迅速的磋商之后,宇航员在月球着陆器的燃料耗尽前几秒钟获得了批准。

1994年,Hamilton告诉《航空航天》(Air&Space)杂志:“我们的软件挽救了这次任务,因为它是异步的,因为它会跳过低优先级的任务,如果没有它,这次任务就会失败,或者在月球上坠毁。”

计算机已经变得越来越强大,软件工程,Hamilton为航天飞行创造的这一术语,经过几年的发展已经趋于成熟。因此,航天飞机的设计没有考虑主系统和备份系统,甚至也没有考虑几个备份系统,而是依靠四台独立的计算机运行相同的导航和制导软件,并接收相同的数据输入。

这四台计算机作为民主的缩影而运作。它们中的三台计算机必须就它们所衡量的内容达成共识,才能采取行动。如果三台计算机同意,而第四台计算机不同意,那么出现这种情况宇航员就会关机或重新启动它。这就使得避免灾难或代价高昂的停顿所需的快速决策成为必要。

如果多台计算机出现故障,或者无法达成共识,那么一台同样可以访问航天飞机控制系统的额外计算机就可以接管。它可以进行预编程的粗略(但安全)的上升、中止和再入。

冗余之上再冗余

1964年,喷气推进实验室的科学家GaryFlandro计算出,到20世纪70年代末,木星、土星、天王星和海王星将排成直线,允许探测器利用重力助推(gravityassists,亦称重力弹弓效应、绕行星变轨)来访问这几颗行星,围绕行星旋转以获得加速度。这样的排列,每175年发生一次。“旅行者号”被派往太空执行探测任务。

“旅行者号”任务的许多方面都有冗余性,它的两个探测器是在不同的地点分别发射的。其中“旅行者1号”和“旅行者2号”又都配备了两个并行的计算机系统。如果三台A计算机(分别用于指令、数据管理和姿态控制)中的一台出现故障或崩溃,探测器可以自动切换或通过指令切换到B系统。

“旅行者号”探测器也是NASA第一个使用软件检测故障的探测器,可以分析各种事件,并在没有指示的情况下能够做出相应的反应。正如任务发射前项目经理JohnCasini在《旅行者号的故事》(VoyagerTales)一书中的采访中指出的那样:我个人对“伟大航路”(PlanetaryGrandTour)的看法是:“运载火箭的转动速度比宇宙飞船在太空中的转动速度要快得多。”然而,在这种速度下,“旅行者2号”还是遇到了意外情况,幸运的是它自己判断到了,并将自己重新置于安全模式。

Casini说,甚至在地面让工作人员弄清楚发生了什么事之前,“宇宙飞船与运载火箭分离后就自行恢复了。”项目人员随后在发射前更新了“旅行者1号”的软件,探测器设法正确处置了旋转和抖动。

如今,“旅行者号”已经离开了太阳磁泡的范围,但还没有离开太阳系,而是所谓的太阳圈(heliosphere),现在,正在星际物质中遨游。但是,即使距离如此之远,“旅行者号”仍然可以传回数据,并且仍能让继续管理这些数据的小团队感到惊讶。到了2010年,“旅行者2号”开始发回一些无意义的信息,而不是科学数据。于是,科学家们将探测器切换到待机模式,这种模式的代码是经过几十年的改进形成的,同时他们也发现了问题所在。他们将程序恢复到了之前的状态,再次使用每秒160比特的速率把数据发回地球。

冗余也会引发问题

在太空中,系统并不容易进行升级。对于不可能进行硬件升级的任务来说,“冗余”是个正确的选择,但它也可能会导致其它问题。麻省理工学院航空航天系的NancyG.Leveson教授在一篇题为《软件在航天器事故中的作用》(TheRoleofSoftwareinSpacecraftAccidents)中写道:

NASA对一架装有两个版本的控制系统的实验飞机进行了研究,发现在飞行测试期间中出现的所有软件问题,都是由于冗余管理系统中的错误造成的,而不是控制软件本身,控制软件运行正常。我们需要为软件设计保护功能,以反映软件的“故障”模式。

另一个重要的问题是,现代航天器系统比它们的前身要复杂得多。随着更多的算力和更多的任务可以在任务期间处理,驱动当今飞船的代码变得异常复杂:不可避免的是将会出现一些错误。如果缺乏标准的软件架构,会加剧引发故障。但即使是现今计划中最先进的航天器,在一定程度上也依赖于较旧的软件架构概念。“猎户座”飞船的设计目的是在未来的载人航天任务中将宇航员送上月球,它将搭载四台计算机,每台计算机都有两个并行工作的处理器,其结果必须一致。每台计算机的软件都表现得就像它在独立驾驶航天器一样。

这些计算机不是民主主义者(Democracy),而是唯我论者(Solipsist),每台计算机都认为自己是“宇宙中唯一的计算机”。如果一台计算机未能在正确的时间提供正确的指令,系统被设计成在系统故障时重新启动,并接受来自下一台计算机的指令。与航天飞机一样,“猎户座”飞船也将配备一台备用飞行计算机。

距离人类首次登月已经过去50多年了,月球是地球唯一的天然卫星,安全返回依然需要付出巨大的努力。

作者介绍

GlennFleishman,家住华盛顿州西雅图市,曾撰写了关于19世纪的美国、比特币和小卫星(nanosatellites)的文章。他最新的著作《LondonKerning》,讲述了到目前为止的伦敦印刷排版的历史探索。

本文最初发表在Increment,经原作者GlennFlsishman授权,InfoQ中文站翻译并分享。

原文链接

https://increment.com/software-architecture/in-space-no-one-can-hear-you-kernel-panic/

相关文章

  • NASA拟送两人体模型绕月 调查太空辐射对宇航员影响

    NASA拟送两人体模型绕月 调查太空辐射对宇航员影响 此次任务期间,祖海尔将穿上特殊的防辐射背心;而黑尔佳则不加任何防护措施。,聚乙烯是一种普通塑料,可有效阻隔辐射颗粒物,用于制造从防弹背心到儿童玩具等各种物品。,太空辐射会对宇航员构成严重健康威胁,是人类前往月球、火星及更远深空的“拦路虎”。

    2024-03-22 09:09
  • SpaceX成功爆炸,人类太空飞行新纪元开启了?

    SpaceX成功爆炸,人类太空飞行新纪元开启了? 自航天飞机最后一次飞行之后的8年多时间里,美国还没有进行过载人太空发射任务,NASA不得不依靠俄罗斯来运送宇航员。,蓝色起源(BlueOrigin)和维珍银河(VirginGalactic)似乎也都有望很快吸引其首批客户乘坐昂贵的短途太空旅游航班。,一年前,SpaceX成功地将一艘没有搭载人员的龙飞船发送到了空间站,该公司当时开始加紧进行飞行中止测试。

    2024-03-22 08:52
  • SpaceX聘请NASA前航天主管 又签下8040万美元合同

    SpaceX聘请NASA前航天主管 又签下8040万美元合同 NASA前局长、资深航天飞机指挥官查尔斯·博尔登(CharlesBolden)在Twitter上发帖表示祝贺,称这次任命为“对SpaceX团队的巨大帮助”。,不过,由于特朗普政府多次试图取消海洋观测任务,以削减地球科学研究经费,这颗卫星发射的未来前景不甚明朗。,在近日发布的2021年预算预案中,特朗普总统仍旧打算取消PACE和另一个地球科研任务。

    2024-03-22 08:47
  • SpaceX首批宇航员加紧训练 拟执行更长时间太空任务

    SpaceX首批宇航员加紧训练 拟执行更长时间太空任务 按照计划,NASA将于今年4月下旬或5月向国际空间站(ISS)运送两名宇航员,这次任务被称为“Demo-2”,由特斯拉CEO埃隆·马斯克(ElonMusk)旗下太空探索技术公司SpaceX来执行。,但是,对于宇航员来说,两周时间根本不足以让他们成为空间站上驻留的正式成员。,大约一个月前,SpaceX和NASA公开讨论了首次发射载人龙飞船持续更长时间的可能性,评估能否将宇航员在空间站停留的时间从大约

    2024-03-22 08:39
  • NASA两名员工感染新冠病毒 美太空行业或遭冲击

    NASA两名员工感染新冠病毒 美太空行业或遭冲击 新浪科技讯北京时间3月16日上午消息,据国外媒体报道,美国国家航空航天局(NASA)透露,该机构截止到目前已经有两名员工的新冠病毒测试结果呈阳性。,上周五,该机构在位于阿拉巴马州亨茨维尔的马歇尔中心称,其一名员工被检测出感染了冠状病毒。,马歇尔中心当前正处于“第三阶段”响应状态,该机构要求其员工进行远程办公,并表示“仅有处理关键任务的人员才有权限进入该中心”。

    2024-03-22 08:29
  • 新冠疫情爆发震动航天业:多项会议活动取消或推迟

    新冠疫情爆发震动航天业:多项会议活动取消或推迟 美国卫生官员强调,接下来这两个数字肯定会大幅上升,因为我们仍处于COVID-19大流行的早期阶段。,今年的演讲者名单包括布里登斯廷、美国商务部长威尔伯·罗斯(WilburRoss)和美国空军太空司令部司令约翰·雷蒙德上将(Gen。,另一场重要会议是“卫星2020”(Satellite2020)于3月9日开幕,SpaceX创始人兼首席执行官伊隆·马斯克在会上进行了“主题对话”。

    2024-03-22 08:28
  • 两名员工确诊感染后 NASA要求所有员工远程办公

    两名员工确诊感染后 NASA要求所有员工远程办公 当地时间3月17日,美国国家航空航天局(NASA)宣布,所有员工和承包商开始强制性远程办公直到另行通知,该命令立即生效。重要任务成员将获准进入。NASA局长吉姆·布里登斯廷在官网一份声明中表示,“尽管有限数量的员工检测出COVID-19呈阳性,但我们必须采取这一先发制人的行动,阻止病毒在员工和社区中进一步传播。”吉姆·布里登斯称,美国国家航空航天局领导层决定将所有中心和设施提升到应对大流行反应框架

    2024-03-22 08:27
  • NASA和SpaceX拟定于5月中下旬进行首次载人试飞

    NASA和SpaceX拟定于5月中下旬进行首次载人试飞 执行此次演示任务的宇航员是鲍勃·贝肯(BobBehnken)和道格·赫利(DougHurley)。,通过该任务,NASA将与私人公司的发射运营商合作,重新为美国提供载人航天能力。,到目前为止,NASA和SpaceX似乎并不认为他们的第一次载人飞行任务会因为新冠疫情而发生很大变化。

    2024-03-22 08:27
  • 把火星改造成第二个地球,可能吗?

    把火星改造成第二个地球,可能吗? 不过,雷达数据显示,埋藏在火星极区地下还有一些干冰,这个更多一点,相当于12mbar。,来源:NASA/JPL/Caltech/JHUAPL/Univ.ofArizona以上这些统统加起来,也就只有地球大气压的10%。,再说了,封闭的环境更安全,不容易被陨石砸呢。

    2024-03-22 08:23