问题标签 [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 投票
1 回答
573 浏览

java - 在 DHT 中模拟节点故障

我目前正在使用免费的糕点 DHT 进行一些性能测试。Freepastry 是一个用 Java 完成的开源 DHT。

目标是监控一定数量的节点宕机时对 DHT 的影响。我的问题是我不确定消除节点的最佳方法。目前每个节点都在我机器上的不同端口上运行。我正在使用 Pastry API http://www.freepastry.org/FreePastry/javadoc21a3/rice/pastry/PastryNode.html#destroy ()中的 destroy() 方法销毁这些节点

我担心这在模拟节点故障时可能是不现实的,我是否应该以不同的方式杀死节点,例如使用 tcpkill?

我正在运行 Mac OS X 雪豹,有兴趣听听任何建议吗?

0 投票
1 回答
196 浏览

replication - 容错系统设计

有一个数据库作为数据存储和 y (>5) 台其他机器。有一台机器 A 每 x 分钟有一次数据(更新)。y 台机器每 x 分钟从机器 A 获取数据,更新数据库中的数据。每台机器都这样做是为了一些容错。有没有一种干净的方法来模拟容错工作?

任何指针表示赞赏。

0 投票
2 回答
2650 浏览

architecture - 使用 Erlang/OTP 构建容错软实时 Web 应用程序

我想为披萨外卖店构建一个容错的软实时 Web 应用程序。它应该帮助比萨店接受客户的电话,将它们作为订单输入系统(通过 CRM 网络客户端),并帮助调度员为订单分配送货司机。

这些目标并不稀奇,但我想让服务 24/7 可用,即使其具有容错性。此外,我想让它工作得非常快并且反应灵敏。

下面是这样一个应用程序的一个非常简单的架构视图。

披萨外卖店订单系统

问题是我不知道如何使用 Erlang/OTP 的所有优点来使应用程序非常敏感和容错。

以下是我的问题:

  1. 为了提供容错,应该复制哪些系统元素,我应该怎么做?我知道我可以将每辆车的状态(坐标、分配的订单等)存储在一个复制的 Mnesia 数据库中。这是正确的方法吗?
  2. 哪些数据存储服务应该是传统的基于 SQL 的(例如基于boss_db),哪些应该在 Mnesia 上完成以提供非常快速的响应?在这样一个容错和高响应的应用程序中使用传统的 SQL 数据库来存储客户记录和历史记录是否可以?
  3. 我是否应该尝试将所有服务(客户、车辆状态等)的所有数据存储在 RAM 中,以使应用程序具有高响应性?
  4. 我是否应该将持久性车辆数据(id、容量等)存储在传统的 SQL 数据库中,并将实时数据(坐标、分配的订单、后备箱中的订单等)存储在 Mnesia 数据库中,以使应用程序更实时响应?
0 投票
1 回答
283 浏览

concurrency - Erlang 对协同实时应用的好处

我正在研究创建一个实时文档编辑和聊天应用程序。我一直想学习 Erlang,我想知道这是否是一个很好的项目来尝试一下。

具体来说,与运行在 Mongrel 或 LAMP 堆栈上的 Rails 应用程序相比,我会在什么时候开始看到 Erlang 的容错和轻量级进程的优势?会是 100 个并发用户吗?1,000?100,000?基本上,我不知道是否值得学习一门新语言,或者我目前的技能是否足够。谢谢!

0 投票
2 回答
418 浏览

java - Fault Tolerance based Approaches to avoid java.lang.OutOfMemoryError

Many a carefully crafted piece of Java code has been laid to waste by java.lang.OutOfMemoryError. There seems to be no relief from it, even production class code gets downed by it.

The question I wish to ask is: are there good programming/architecture practices where you can avoid hitting this error.

So the tools at a Java programmers disposal seem to be:

  1. java.lang.Runtime.addShutdownHook(Thread hook) -- shutdown hooks allow for a graceful fall.
  2. java.lang.Runtime.freeMemory() -- allows us to check the memory available to the VM

So the thought I had is: could one write factory methods which before the creation of objects check if the system has adequate memory left before attempting to allocate memory? For example in C, the malloc would fail and you would know that you had run out of memory, not an ideal situation but you wouldn't just drop dead from an java.lang.OutOfMemoryError aneurism.

A suggested approach is to do better memory management or plug memory leaks or simply allocate more memory -- I do agree these are valuable points but lets look at the following scenarios:

  1. I'm running on an Amazon micro instance
  2. I can allocate very little memory to my VM say 400M
  3. My Java process processes jobs in a multi-threaded fashion, each thread consumes a variable amount of memory depending on the parameters of the computational task
  4. Let's assume that my process has no memory leaks
  5. Now if I keep feeding it jobs before they are complete it will eventually die of memory starvation
  6. If I set -Xmx too high -- I'll get swapping and possibly thrashing on the OS
  7. If I set an upper concurrently limit -- that might not be optimal as I could be limiting the accepting of a job which could be executed with the available RAM or worse accept a job that requires a LOT of memory and end up hitting java.lang.OutOfMemoryError anyway. X. Hope that helps explain the motivation of the question -- I think the standard responses are not mutually exclusive to seeking a fault tolerant approach to the problem.

Thanks in advance.

0 投票
2 回答
2579 浏览

scala - 在发生崩溃时保持 Akka 状态

我是 Akka 的初学者,我喜欢它为异步编程提供的许多功能,例如 Actors、Agents 或 Futures。

Akka 的一个强大卖点是,当一个 Actor 崩溃时,Actor 系统会重新创建一个等效的 Actor 并插入旧的位置,从而保证了强大的稳定性。

其他一些系统(我被告知 JMS 就是其中之一)更进一步,并持续保持参与者之间发送的消息。这样,如果机器在物理上崩溃了——比如由于硬件故障——仍然可以恢复到故障前的状态。

这对我现在正在开发的应用程序非常有吸引力。Akka 是否提供任何此类机制?如果没有,是否有某种方法可以将其与外部系统集成以实现这一目标?

0 投票
1 回答
2910 浏览

message-queue - 在分布式消息队列中实现容错

假设下图中中间的消息队列失败了。发件人仍然可以获取使用其他消息队列发送的消息。

但是如果消息队列在收到消息后死亡会发生什么。发送方如何知道消息是否已发送给接收方以决定是否在不同的消息队列中重新发送?

类似地,如果接收者在消息队列将其消息传递给它之后死亡,会发生什么?发送者如何知道接收者是否满足了它的预期请求?

在此处输入图像描述

0 投票
2 回答
205 浏览

mpi - 如果主机文件中的一个节点出现故障,如何在 MPI 程序中使用集群的其余节点

如果主机文件中的一个节点出现故障,如何使用 MPI 处理其余节点

0 投票
3 回答
1022 浏览

akka - 儿童演员是否知道他正在恢复?

想象一个直接的监督层次结构。孩子死了。父亲决定给Restart孩子。Restarted的时候,postRestart和朋友们都被叫了,但是如果父亲决定让孩子恢复怎么办?儿童演员是否知道他正在恢复?顺便说一句。父亲是否可以访问导致孩子异常的消息?

0 投票
1 回答
277 浏览

ldap - LDAP 容错配置(例如 SunOne)

LDAP 容错配置(例如 SunOne):是否有人知道如何为 LDAP 配置“容错”,例如 SunOne LDAP。

我通过谷歌搜索没有任何有用的结果?

谢谢