问题标签 [fault-tolerance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1154 浏览

scala - 如何发现一个 Scala 远程演员死了?

在 Scala 中,当另一个(远程)actor 终止时,可以通过设置 trapExit 标志并以第二个 actor 作为参数调用 link() 方法来通知一个 actor。在这种情况下,当远程参与者通过调用 exit() 结束其工作时,第一个参与者通过接收退出消息得到通知。

但是当远程参与者以不那么优雅的方式终止时会发生什么(例如,它正在运行的 VM 崩溃)?换句话说,本地参与者如何发现远程参与者不再可用?当然,我希望(如果可能的话)可以通过类似于退出消息的消息通知本地参与者,但这似乎不可行。我错过了什么吗?我应该不断地轮询远程参与者的状态(在这种情况下,我不知道哪种方法是最好的方法)还是有更聪明的解决方案?

0 投票
3 回答
240 浏览

java - 如何在 Java 中隔离不受信任的本机代码?

我有一个我不信任的 C 库(从某种意义上说,它可能经常崩溃)。我从 Java 进程中调用它。

为了防止 C 库崩溃带来整个 Java 应用程序。下来,我认为最好为这个库生成一个专用的 Java 进程,并让它与 Java 应用程序交互。通过套接字编程或 RMI。然后,如果发生崩溃,我可以生成另一个并继续处理。

ProcessBuilder要走的路吗?或者还有其他更简单的方法吗?

谢谢!

0 投票
8 回答
2882 浏览

c++ - 不能让 C++ 应用程序“崩溃证明”吗?

假设我们有一个用 C++ 编写的 SDK,它接受一些二进制数据(如图片)并执行一些操作。难道不能让这个SDK“防撞”吗?崩溃主要是指由于用户传递的无效输入(例如异常短的垃圾数据),操作系统在内存访问冲突时强制终止。

我没有使用 C++ 的经验,但是当我用谷歌搜索时,我发现了几种听起来像解决方案的方法(使用向量而不是数组,配置编译器以便执行自动边界检查等)。

当我向开发人员介绍这个时,他说这仍然是不可能的。不是我不相信他,但如果是这样,像 Java 这样的语言是如何处理这个的?我认为 JVM 每次都会执行边界检查。如果是这样,为什么不能手动在 C++ 中做同样的事情?

更新
“防崩溃”并不是说应用程序不会终止。我的意思是它不应该在没有发生情况的信息的情况下突然终止(我的意思是它会转储核心等,但是不可能显示“参数 x 无效”等消息吗?)

0 投票
1 回答
2522 浏览

mpi - MPICH/OpenMPI 中的容错

我有两个问题-

Q1。除了检查点/回滚之外,还有更有效的方法来处理 MPI 中的错误情况吗?我看到如果一个节点“死亡”,程序会突然停止。有没有办法在节点死亡后继续执行?(如果以准确性为代价,则没有问题)

Q2。我在“http://stackoverflow.com/questions/144309/what-is-the-best-mpi-implementation”中读到,OpenMPI 具有更好的容错性,最近 MPICH-2 也提出了类似的功能..有人知道它们是什么以及如何使用它们吗?是“模式”吗?他们可以在第一季度所述的情况下提供帮助吗?

请回复。谢谢你。

0 投票
3 回答
11407 浏览

mapreduce - MapReduce 中的容错

我正在阅读有关 Hadoop 以及它的容错性的信息。我阅读了 HDFS 并阅读了如何处理主节点和从节点的故障。但是,我找不到任何提到 mapreduce 如何执行容错的文档。特别是当包含 Job Tracker 的主节点宕机或任何从节点宕机时会发生什么?

如果有人可以向我指出一些详细解释这一点的链接和参考资料。

0 投票
3 回答
8771 浏览

scala - 如果抛出异常,Akka Actor 不会终止

我目前正在尝试开始使用 Akka,但遇到了一个奇怪的问题。我的演员有以下代码:

这就是我开始我的工人的方式:

这就是我关闭一切的方式:

现在发生的情况是,如果我向工作人员发送 n > 0 的消息(不抛出异常),一切正常并且应用程序正常关闭。但是,只要我向它发送一条导致异常的消息,应用程序就不会终止,因为仍然有一个演员在运行,但我不知道它来自哪里。

如果有帮助,这是相关线程的堆栈:

PS:没有终止的线程不是任何工作线程,因为我添加了一个 postStop 回调,它们每个都正确停止。

PPS:Actors.registry.shutdownAll解决问题,但我认为shutdownAll应该只作为最后的手段,不是吗?

0 投票
3 回答
157 浏览

c# - 请帮我设计这个事件报告系统

我正在尝试设计一个通过 Web 服务向数据库报告活动事件的系统。Web 服务和数据库已经构建(COTS 软件)——我所要做的就是提供事件源。

但是,问题是事件源需要容错。我们有多个可以与之通信的复制数据库,因此如果我正在与之通信的 Web 服务或数据库出现故障,该软件可以快速切换到另一个启动的数据库。

我需要帮助的是所有数据库都关闭的情况。我已经设计了一个队列,它将在事件堆积时保留它们(并在连接恢复后将它们爆发),但队列是一个内存结构:如果我的应用程序在这种状态下崩溃,或者如果断电等,则队列中的所有事件都丢失。这是无法接受的。我需要的是一种持久化事件的方法,以便当数据库重新联机时,我可以发送一连串排队的事件,即使在断电或崩溃的情况下也是如此。

我知道我不想重新实现队列本身以将文件系统用作后备存储。这会起作用(我已经尝试过了)-但是随着硬盘驱动器成为瓶颈,这种方法会大大降低系统速度。但除此之外,我想不出一种方法来设计这个系统,使所有事件仅在无法访问数据库时安全地存储在硬盘上。

有没有人有任何想法?=)

0 投票
4 回答
120 浏览

azure - 我可以对 Azure 上的全球时间做出哪些假设?

我希望我的 Azure 角色在发生突然故障时重新处理数据。我考虑以下选项。

对于要处理的每个数据块,我都有一个数据库表行,我可以添加一个表示“来自处理节点的最后一次 ping 的时间”的列。因此,当一个节点抓取一个数据块进行处理时,它会将“处理”状态和那个时间设置为“当前时间”,然后节点负责更新那个时间,比如每分钟更新一次。然后定期某个节点会询问“所有处理状态和 ping 时间大于 10 分钟的块”,并认为这些块已被废弃,并以某种方式将它们排队等待重新处理。

我有一个非常严重的担忧。上述方法要求节点具有或多或少相同的时间。我可以依靠所有 Azure 节点以某种合理的精度(比如几秒钟)具有相同的时间吗?

0 投票
1 回答
256 浏览

ruby - 电子邮件服务提供商 (ESP) 的故障转移解决方案?

我们正在寻找能够让我们透明地使用多个电子邮件服务提供商(“ESP”,例如 ConstantContact、JangoMail、Sailthru、SendGrid、VerticalResponse 等)的库、项目或服务。我们选择的任何 ESP 都会不时出现问题,并且由于我们业务的需求,我们需要有一个故障转移解决方案来避免交付失败

我们正在寻找的基本功能:

  • 将电子邮件传递委托给 ESP
  • 从一个 ESP 到另一个 ESP 的自动故障转移(仅将一封电子邮件发送给给定的订阅者,而不是重复的)
  • 能够检查已配置 ESP 的交付状态(打开率、跳出率、列表大小等)

换句话说,我们想要一个通过使用多个 ESP 来提供容错和恢复的层。如果它是一个库,我们希望它用 Ruby 编写(但我们可能愿意考虑其他语言)。 是否有提供此功能的现有项目或服务?

我们的用例: 我们每天向订阅者发送许多对时间敏感的电子邮件。但是,我们使用的 ESP 可能会下降,但我们仍然需要非常及时地发送电子邮件(在发布后的几秒钟内)。如果初始交付失败,我们希望转移到二级、三级等 ESP 以从故障中恢复。

在寻找现有解决方案时,我空手而归。不过,这两篇博客文章抓住了我们的部分动机:如何确保您的电子邮件被送达使用多个服务提供商来降低风险并避免失败

0 投票
1 回答
154 浏览

apache-flex - Flex AMF 离线模式?

我目前正在使用 Flex (Flash Builder 4) 并将 Web 服务连接到 Apache PHP Zend AMF 服务器以检索数据。

这很好用,但我想知道哪些选项可用于容错。

我知道我可能可以设置第二台服务器,如果应用程序无法访问第一台服务器,它会切换到该服务器。对此有任何想法都会很好,但我也在考虑尝试给每台机器一些容忍度。

例如,如果他们至少有能力向应用程序输入数据,那将是一个开始。因此,如果他们单击“保存”并且无法访问服务器,则会将其缓存或存储到本地文件,直到服务器备份。尽管无法进行数据查找可能是一个大问题。

也许已经有一些图书馆或我可以看的东西来做到这一点?