问题标签 [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.
azure - 检测 Azure 实例的崩溃
我想检测我的 Azure 角色实例已崩溃的事实。在我的情况下检测意味着我的角色的另一个实例收到有关崩溃的通知。请查看我在下面解释的想法或提出其他解决方案。
我提出的想法利用了 Azure 队列中的项目处理时间有限这一事实。
- 配置 Azure 队列。该角色的所有实例都侦听此队列。
- 将角色实例配置为具有内部端点
- 当实例 A 启动时,它会向队列发布一条消息。该消息包含实例 A 的 id、A 的内部端点的 IP、该消息应转发回 A 的标记。
- 消息最有可能在另一个实例 B 上结束。B 将通过内部端点将 MessageId 和 PopReceipt 转发给 A。实例 A 使用此 ctr http://msdn.microsoft.com/en-us/library/dn451949.aspx创建 CloudQueueMessage 对象。
- 实例 A 开始无限更新接收消息的可见性超时。从 Azure 队列的角度来看,此消息将被处理很长时间。在第一次更新中,A 删除了“转发此消息”标记。
- 如果实例 A 崩溃,它将停止延长处理时间。该消息将很快对其他实例自动可见。
- 实例 C 获取消息并了解崩溃的 A:消息包含实例 A 的 ID,并且没有“转发此消息”标记。
- 如果实例 A 正常停止,它会将其队列消息标记为已处理。
mpi - OpenMPI 容错
我有一个任务是在 OpenMPI 应用程序中实现简单的容错。我们遇到的问题是,尽管将 MPI 错误处理设置为MPI_ERRORS_RETURN
,但当我们的一个节点从集群中拔出时,我们在长时间挂起后的下一次 MPI_ 调用中会收到以下错误:
我对此的看法是,当一个节点使用 OpenMPI 从网络中掉线时,不可能在所有其他节点上继续处理。任何人都可以为我确认这一点,或者为我指出防止 btl_tcp_endpoint 错误的方向吗?
我们使用的是 OpenMPI 1.6.5 版。
memcached - Memcached 容错和故障转移属性
如本页所述:用于 PHP 和故障转移的 Memcached,
我正在尝试测试 Memcached 的故障转移。
基本上,我想确保如果其中一台服务器被标记为死机,则后续的设置和获取应该重新分配给剩余的服务器。
有人在此页面上提到 OPT_AUTO_EJECT_HOSTS 是实现此目的的一种选择。
但是,似乎 Memcached::OPT_AUTO_EJECT_HOSTS 如本页所述已贬值:http ://hoborglabs.com/en/blog/2013/memcached-php
我也尝试使用 OPT_REMOVE_FAILED_SERVERS 选项。但这没有什么区别。
我还尝试了 OPT_SERVER_FAILURE_LIMIT,将其设置为 1。
就我而言,基准/请求生成器是 BRUTIS。
https://code.google.com/p/brutis/
我用的是libmemcached-1.0.16,memcached-1.4.15,memcached的php版本是2.1.0。
我应该怎么做才能使故障转移和自动重新平衡正常工作。
我也在尝试这些选项的不同组合。但是,它不起作用。
有一个相关的问题: Brutis and memcached FailOver
但还没有答案:(
如果有人对此有任何想法,请分享您的观点。
在此先感谢,阿米特
hadoop - 说 Hadoop 不能处理拜占庭式故障是真的吗?
我一直在阅读一些关于 Hadoop 和 map-reduce 的论文。似乎当前的设计使 Hadoop 能够容忍诸如工人崩溃之类的故障,但没有为处理任意故障(非静默故障)提供太多支持。只是想知道这是真的吗?如果为真,是否意味着我们不能始终完全相信 hadoop 作业输出的正确性?
restart - 风暴容错:Nimbus 将工作人员重新分配到另一台机器?
如何让storm-nimbus在同一台机器上重新启动worker?
为了测试容错性,我在一个工作进程上执行了 kill -9,期望工作进程在同一台机器上重新启动,但是在其中一台机器上,nimbus 在另一台机器上启动了工作进程!!!Nimbus 日志没有显示多次尝试或任何异常或错误!
将不胜感激任何帮助,谢谢!
c - 发生异常时未调用 MPI 错误处理程序
过去几天我一直在尝试使用 MPI 在 C 中编写容错应用程序。我正在尝试学习如何将错误处理程序附加到 MPI_COMM_WORLD 通信器,以便在节点出现故障时(可能是由于崩溃)并在不调用 MPI_Finalize() 的情况下退出,程序仍然可以从这种情况中恢复并继续计算。
到目前为止,我遇到的问题是,在我将错误处理程序函数附加到通信然后导致节点崩溃之后,MPI 不会调用错误处理程序,而是强制所有线程退出。
我认为这可能是我的应用程序的问题,所以我在网上查找了示例代码并尝试运行它,但情况是一样的......我目前正在尝试运行的示例代码如下。(我从这里得到https://www.google.co.uk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CC4QFjAA&url=http%3A%2F%2Fwww.shodor.org% 2Fmedia%2Fcontent%2F%2Fpetascale%2Fmaterials%2FdistributedMemory%2Fpresentations%2FMPI_Error_Example.pdf&ei=jq6KUv-BBcO30QW1oYGABg&usg=AFQjCNFa5L_Q6Irg3VrJ3fsQBIyqjBlSgA&sig2=8An4SqBvhCACx5YLwBmROA apologies for being in pdf but i didnt write it, so I now paste the same code below):
该程序实现了一个简单的令牌环,如果你给它注释中描述的参数,那么我会得到这样的东西:
显然,在我看到的输出中,没有任何一个printf()
被ccg_mpi_error_handler()
执行,所以我假设处理程序根本没有被调用。我不确定它是否有任何帮助,但我正在运行 ubuntu linux 12.04 并且我使用 apt-get 安装了 MPI。我用来编译程序的命令如下:
另外,当我这样做时,mpicc -v
我会得到以下信息:
非常感谢您的帮助!谢谢...
java - 了解 Akka 容错
我正在研究Akka,只是在查看他们的容错示例,并试图理解它。
- 为什么我不能在“纯 Java”(没有 Akka)中实现所有相同的类型(
Worker
,Listener
,CounterService
等)。Akka 开箱即用地添加了哪些基础设施? - 在那张图中,
Storage
代表什么?关系数据库管理系统?监控 RDBMS 的 Java 应用程序?JDBC驱动程序? - 如果
Storage
它是一个 Java 应用程序并且可以StorageException
向请求者回退,那就太好了,但是如果和之间的网络Storage
被CounterService
切断或存在传输级问题怎么办?整个图表是否仍然有效(如果可以,如何?!?)还是 Akka 仅提供“应用层”容错?在后一种情况下,Java/Akka 如何处理硬件或网络级别的故障?
redis - Redis 服务器重启后服务堆栈 Redis 重新连接
我们正在使用 Service Stack 的 RedisClient 的 BlockingDequeue 来持久化一些数据,直到可以处理为止。调用代码看起来像
如果重新启动托管 Redis 的服务器,则 BlockingDequeue 的连接将变为僵尸,并且在客户端应用程序重新启动之前永远不会返回。
我们尝试在 BlockingDequeue 和 PooledConnectionManager 上设置超时,但都没有帮助,我猜是因为超时是在服务器端强制执行的。
这种类型的容错是否内置在服务堆栈中而我们缺少它?
还是我们的实现应该处理的事情?如果是这样,有什么推荐的方法吗?
asp.net - .NET 容错状态服务器
我们使用 StateServer 来处理 Session 以获得已知的好处(网络场、IIS 回收)。
但是我试图弄清楚如何使这个容错。我们存储在 Session 中的任何内容都不是关键的,它只是用于性能。因此,如果 StateServer 不可用,我们很乐意从磁盘重新加载。
但是似乎无法检测 StateServer 是否在线,因此即使 StateServer 关闭,以下代码也可以正常运行
现在对我来说,没有抛出异常是有道理的。如果必须在每次写入时检查状态,会话处理将不会非常高效。所以我猜测会发生什么,它会在写入响应时写入所有会话变量。
问题就在于此,当它尝试写入 Session 时,它会失败并出现 500 错误,而且我无论如何也不知道要拦截这个错误并处理它。
无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State 服务已启动并且客户端和服务器端口相同。
我想要发生的是写入只是静默失败(或记录错误)并且客户端不受影响。正如现在所写的那样,由于这个单点故障,整个站点都崩溃了。
任何想法 - 我是否遗漏了一些明显的东西?
mysql - Innodb 日志刷新以防止数据丢失
我需要对我的 innodb 引擎具有高功率容错能力,并且我无法更改硬件配置。你建议打电话
经过很重要的操作?是否有助于防止断电或进程崩溃导致数据丢失?