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

python - 如何在前向而不是后向获得容差

我知道这个问题可能不清楚。我将尝试解释。

我有一个场景,我需要验证一个值序列,5,10,15,20....,只是生成序列的系统不是很准确,有时它可能会错过这些值或重复几个值,例如5, 10,10,20,25,30,40.

所以你可以看到有一个公差5-10

这没关系。我必须验证序列不会像倒退一样5,10,15,10.. or 5,10,9,....

我需要使用这样的逻辑编写PASS FAIL条件,如果它看到单调递增的序列并偶尔丢失或重复,则失败,如果它看到值倒退或相差超过10 (like 5, 20, 15...)

有人可以帮我确定正确的逻辑吗

0 投票
1 回答
258 浏览

networking - 如何制作一个容错系统,可以在服务器宕机时立即处理这种情况

在 XYZ.com 关闭之前,我注意到我的请求被路由到 IP 地址 192.33.31.xxx ,当它出现时,我注意到我的请求被路由到 IP 50.17.196.xxx ,这是某种服务器切换吗?发生故障时动态服务器切换不是制造容错系统的一种方法吗?

0 投票
1 回答
1901 浏览

jquery - 如何在客户端实现REST服务器的容错?

我正在开发一个系统,该系统具有可以操作它的 RESTful Web 服务(该服务允许所有 CURD 操作),以及一个显示系统数据的 Web 客户端(大部分客户端是用 jQuery 编写的)。在标准操作场景中,我的系统有一个主服务器和至少一个备份服务器,因此至少有两个 RESTful Web 服务。

所以我的问题是在我的主服务器崩溃的情况下,我怎样才能让一个正在查看主服务器的客户端现在正在查看备份服务器而无需任何用户操作?

0 投票
2 回答
896 浏览

amazon-web-services - AWS:实例和可靠性

除了创建巨大的实例之外,有没有办法强制实例在单独的物理机器上运行,或者检测亚马逊网络服务 (AWS) 上同一图像的多个实例正在使用多少物理机器?

我在这里考虑可靠性。如果我自欺欺人地认为我有三个独立的服务器用于容错(想想 Paxos、Quicksilver、ZooKeeper 等),因为我运行了三个不同的实例,但所有三个最终都运行在同一台物理机器上,我可能会一个非常非常粗鲁的惊喜。

我意识到这个问题可能是通过使用单独的区域来强制解决的,但是很高兴知道是否有区域内甚至可用区域内的解决方案,因为我不确定我是否见过 AWS 实际提供创建实例时,我在所谓的多选下拉菜单中选择了多个可用区。


好的,我很欣赏前两个回答我的问题的建议,但我试图通过在一个地区放置 3 台机器来简化问题而不写小说。让我再试一次 - 当我向上/向外扩展假设的应用程序堆栈时,我将静态和动态(“弹性”)添加实例。当然,任何形式的故障/灾难都可能发生(包括整个数据中心因不幸的休息室事故而烧毁,其中涉及微波炉、CD 和两个白痴说“哦,是吗?看这个!! !”),但到目前为止,最有可能的是某种硬机器故障,紧随其后的是死端口。在单个虚拟化硬件上运行相同类型 T 的多个实例会增加计算能力,但不会增加容错能力。显然,如果我 在扩大/缩小时,我很可能会使用“更大”的实例。显然,如果 AWS 最大的机器有内存大小 M 和处理器数量 C,如果我选择一个内存大小为 m 的实例,使得 m > (M/2) 或 CPU 大小为 c 的数量,使得 c > ( C/2),那么我将保证我的实例在不同的机器上运行。但是,我不知道什么Mmax和 C max是今天;我当然不知道一年后它们会是什么,或者从现在起两年后,等等,因为亚马逊收购了更大更好更快。我知道这听起来像是吹毛求疵,但不知道实例是如何分布的,或者是否有控制实例分布的机制意味着我可以在使用当前计算影响 F+1 或 2F+1 时在假设中犯真正的错误分布式计算算法或评估用于新应用程序的新算法、分片和位置决策、应用程序堆栈中流量较少的部分的最小保留与弹性实例计数等。

0 投票
2 回答
1684 浏览

scala - Akka OneForOneStrategy 不起作用

我有以下代码:

self ! Kill演员实例中,A我没有看到“演员已被杀死”的消息,随后对演员的调用会A生成“死信”消息,因此没有重新启动。为什么是OneForOneStrategy不被调用?

奇怪的是,我可以删除整个OneForOneStrategy覆盖并且程序行为没有任何变化。

0 投票
1 回答
256 浏览

amazon-web-services - 亚马逊 AWS 单机容错

对于特定服务,我需要以容错方式运行单个EC2 实例。

只有在出现错误的情况下,我才希望终止“主”机器,并且必须在几秒钟内自动将流量重定向到“辅助”机器上。这是主服务器和辅助服务器的经典案例,其约束条件是辅助服务器不能工作,除非主服务器崩溃。

我在这个世界上很新,但据我所知,如果主机挂起,我需要手动更改绑定。相反,使用 Auto Scaling、ELB 和 CloudWatch,我可以:

  • 使用 2 台机器设置自动缩放公园,但流量将被负载平衡(粘性会话不是我想要的,因为如果它工作,我需要主机上的所有流量)
  • 仅使用 1 台机器设置自动缩放,因此如果主机器自动挂起,则新的机器将在线。但是据我所知,启动过程需要几分钟。

关于如何结合 AWS 服务来实现这一目标的任何建议?

0 投票
0 回答
94 浏览

sockets - 服务器宕机时如何通过套接字可靠地恢复/重新发送数据?

假设我有一个由 20 多个节点组成的内部系统,这些节点通过套接字来回传递数据,其中低延迟是高优先级。我该如何设计它,以便如果随机服务器出现故障,我可以恢复/重新发送已发送但未由停机服务器处理的数据?

例如,如果 A 正在将数据流式传输到 B,但在某些时候 B 在未处理某些数据的情况下发生故障。如果我们假设 A 可以检测到 B 发生故障,并将数据重新路由到 C,我将如何设计它以便我知道哪些数据发送到 B,现在应该重新路由到 C?

我假设我将不得不依赖那里的各种消息队列软件,但我想知道是否还有另一种简单的方法可以做到这一点!

0 投票
2 回答
6850 浏览

scala - 处理 Akka actor 中的错误

我有一个非常简单的示例,其中我有一个 Actor ( SimpleActor),它通过向自身发送消息来执行周期性任务。消息在actor的构造函数中调度。在正常情况下(即没有故障)一切正常。

但是如果 Actor 必须处理故障怎么办。我还有另一个演员 ( SimpleActorWithFault)。这个演员可能有缺点。在这种情况下,我自己通过抛出异常来生成一个。当发生故障(即SimpleActorWithFault引发异常)时,它会自动重新启动。然而,这个重新启动会弄乱 Actor 内部的调度程序,它不再作为例外工作。如果故障发生得足够快,它会产生更多意想不到的行为。

我的问题是在这种情况下处理故障的首选方法是什么?我知道我可以使用Try块来处理异常。但是,如果我正在扩展另一个无法在超类中放置 Try 的演员,或者当我是演员的例外错误时,该怎么办。

0 投票
1 回答
148 浏览

mpi - 当远程机器死机时,MPI 管理器无法通过 MPI_Irecv 调用检测到它

我正在编写一个程序来检测远程机器的突然崩溃。manager 进程在机器 1 上运行,worker 进程在机器 2 上运行。 manager 服务器通过调用 向 worker 进程发送消息MPI_Isend。远程工作者通过调用MPI_Irecv. 每次通话后,我总是检查他们的返回码,看看是否有问题MPI_COMM_WORLD。我还检查MPI_Test了在 send 和 recv 调用之后运行的返回码。

不知何故,即使在我突然重新启动机器 2 后,返回码也始终为 0。我可以看到MPI_Isend总是返回值 0。请给我一些关于如何检测远程机器故障的建议。

顺便说一句,我确实使用了以下语句:

0 投票
3 回答
1252 浏览

distributed-computing - TIbco EMS 客户端容错

我知道 Tibco EMS 在服务器端的热备份配置中提供容错功能,详见用户指南此答案此处

但在客户端,Tibco EMS 是否为容错客户端提供开箱即用的解决方案?一个例子:在主题上,Sports.F1.PitStop两个客户端(server1,server2)注册为发布者。这个想法是,如果 server1 上出现问题(即 server1 上的发布者出现故障),server2 将无缝地继续发布该主题。那么问题来了,Tibco EMS 是否提供这种客户端容错能力?