gpt4 book ai didi

programming-languages - 是否存在防灾语言?

转载 作者:行者123 更新时间:2023-12-03 07:06:08 24 4
gpt4 key购买 nike

在创建必须具有高可靠性的系统服务时,我经常最终编写许多“故障安全”机制,以防万一:通信消失(例如与数据库的通信),如果电源中断会发生什么丢失并且服务重新启动....如何捡起碎片并以正确的方式继续(并记住在捡起碎片时电源可能会再次熄灭...)等

我可以想象对于不太复杂的系统,一种能够满足这种需求的语言将非常实用。所以一种语言会记住它在任何给定时刻的状态,无论电源是否被切断,并从它停止的地方继续。

这还存在吗?如果是这样,我在哪里可以找到它?如果没有,为什么不能实现?在我看来,它对于关键系统来说非常方便。

附言如果数据库连接丢失,则表示出现问题,需要手动干预。一旦他的连接恢复,它就会从中断的地方继续。

编辑:
由于讨论似乎已经结束,让我补充几点(在等待我为问题添加赏金之前)

Erlang 的响应现在似乎是最受好评的。我知道 Erlang 并阅读了 Armstrong(主要创作者)的实用书籍。这一切都非常好(尽管函数式语言让我对所有的递归感到头晕目眩),但“容错”位不会自动出现。离得很远。 Erlang 提供了许多监督者和其他方法来监督进程,并在必要时重新启动它。然而,要正确地制作适用于这些结构的东西,您需要成为 erlang 大师,并且需要使您的软件适合所有这些框架。此外,如果电源下降,程序员也必须捡起碎片并在下次程序重新启动时尝试恢复

我正在寻找的东西要简单得多:

想象一种语言(例如像 PHP 一样简单),您可以在其中执行诸如执行数据库查询、对其执行操作、执行文件操作、执行文件夹操作等操作。

然而,它的主要特征应该是:如果电源耗尽,并且事物重新启动,它会从停止的地方重新启动(因此它不仅会记住它的位置,还会记住变量状态)。此外,如果它在文件复制中间停止,它也将正常恢复。等等等等

最后但并非最不重要的一点是,如果数据库连接断开且无法恢复,语言就会停止,并发出信号(可能是系统日志)以进行人工干预,然后从中断的地方继续。

像这样的语言将使许多服务编程变得更加容易。

编辑:
似乎(从所有评论和答案来看)这样的系统不存在。并且在不久的可预见的将来可能不会,因为它(几乎?)不可能正确。

太糟糕了......我又不是在寻找这种语言(或框架)来让我登上月球,或者用它来监测某人的心率。但是对于小型定期服务/任务,它们总是最终需要处理大量代码来处理边界情况(中间某处断电,连接断开而不是恢复),......这里暂停,......解决问题,...... ..并继续您中断的方法会很有效。

(或评论者之一指出的检查点方法(就像在电子游戏中一样)。设置一个检查点......如果程序死了,下次从这里重新启动。)

获得的赏金:
在每个人都得出无法完成的结论的最后一刻,Stephen C 带来了napier88,它似乎具有我正在寻找的属性。
虽然它是一门实验性的语言,但它确实证明了它是可以做到的,这是一个值得更多研究的东西。

我将考虑创建我自己的框架(可能带有持久状态和快照)以添加我在 .Net 或其他 VM 中寻找的功能。

每个人都感谢您的投入和伟大的见解。

最佳答案

有一种名为 Napier88 的实验性语言(理论上)具有防灾的一些属性。该语言支持正交持久性,并且在某些实现中,这扩展(扩展)为包括整个计算的状态。具体来说,当 Napier88 运行时系统将正在运行的应用程序检查点指向持久存储时,当前线程状态将包含在检查点中。如果应用程序随后崩溃并且您以正确的方式重新启动它,您可以从检查点恢复计算。

不幸的是,在这种技术准备好供主流使用之前,有许多难题需要解决。这些包括弄清楚如何在正交持久性的上下文中支持多线程,弄清楚如何允许多个进程共享一个持久存储,以及持久存储的可扩展垃圾收集。

并且在主流语言中做正交持久化存在问题。已经有人尝试在 Java 中进行 OP,包括与 Sun(Pjama 项目)相关的人员所做的一项,但目前没有任何事件。 JDO/Hibernate 方法现在更受欢迎。

我应该指出,从广义上讲,正交持久性并不是真正的防灾。例如,它不能处理:

  • 重新启动后重新建立与“外部”系统的连接等,
  • 导致持久数据损坏的应用程序错误,或
  • 由于某些原因导致检查点之间的系统崩溃而导致数据丢失。

  • 对于那些人,我认为没有实用的通用解决方案。

    关于programming-languages - 是否存在防灾语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1403915/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com