問題タブ [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 では、trapExit フラグを設定し、パラメーターとして 2 番目のアクターを使用して link() メソッドを呼び出すことにより、別の (リモート) アクターが終了したときにアクターに通知できます。この場合、リモート アクターが exit() を呼び出してジョブを終了すると、最初のアクターは終了メッセージを受信して​​通知されます。

しかし、リモート アクターがより適切でない方法で終了した場合 (たとえば、実行中の VM がクラッシュした場合) はどうなるでしょうか? 言い換えれば、ローカルのアクターは、リモートのアクターが利用できなくなったことをどのように発見できるのでしょうか? もちろん、(可能であれば) ローカルのアクターが Exit と同様のメッセージで通知されることを望んでいますが、実現可能ではないようです。何か不足していますか?リモート アクターの状態を継続的にポーリングする必要がありますか (この場合、どの方法が最善かはわかりません)、それともよりスマートなソリューションがありますか?

0 投票する
3 に答える
240 参照

java - Java で信頼されていないネイティブ コードを分離するにはどうすればよいですか?

信頼できない C ライブラリがあります (頻繁にクラッシュする可能性があるという意味で)。これを Java プロセスから呼び出しています。

Java アプリ全体をもたらす C ライブラリでのクラッシュを防ぐため。このライブラリ専用の Java プロセスを生成し、Java アプリとのインターフェイスを確立するのが最善であると考えました。ソケットプログラミングまたは RMI を介して。その後、クラッシュが発生した場合は、別のクラッシュを生成して処理を続行できます。

ProcessBuilder行く方法はありますか?または、他に簡単な方法はありますか?

ありがとう!

0 投票する
8 に答える
2882 参照

c++ - C ++アプリケーションを「クラッシュプルーフ」にすることはできませんか?

いくつかのバイナリデータ(画像など)を受け入れて何かを実行するC++のSDKがあるとします。このSDKを「クラッシュプルーフ」にすることはできませんか?クラッシュとは、主に、ユーザーから渡された無効な入力(異常に短いジャンクデータなど)が原因で、メモリアクセス違反時にOSが強制的に終了することを意味します。

私はC++の経験がありませんが、グーグルで検索したところ、解決策のように聞こえるいくつかの手段が見つかりました(配列の代わりにベクトルを使用する、自動境界チェックが実行されるようにコンパイラーを構成するなど)。

私がこれを開発者に提示したとき、彼はそれがまだ不可能であると言いました。私が彼を信じていないというわけではありませんが、もしそうなら、Javaのような言語はこれをどのように処理しますか?JVMは境界チェックのたびに実行されると思いました。もしそうなら、なぜC ++で同じことを手動で行うことができないのですか?

UPDATE
「クラッシュプルーフ」とは、アプリケーションが終了しないという意味ではありません。何が起こったのかを知らずに突然終了してはいけないということです(コアダンプなどはありますが、「引数xが無効でした」などのメッセージを表示することはできませんか?)

0 投票する
1 に答える
2522 参照

mpi - MPICH/OpenMPI の耐障害性

2 つの質問があります。

Q1 . チェックポイント/ロールバック以外に、MPI でエラー状況を処理するより効率的な方法はありますか? ノードが「死んだ」場合、プログラムが突然停止することがわかりました..ノードが死んだ後に実行を進める方法はありますか?? (精度を犠牲にしても問題ありません)

Q2 . 「http://stackoverflow.com/questions/144309/what-is-the-best-mpi-implementation」で、OpenMPI の方がフォールト トレランスが優れており、最近では MPICH-2 にも同様の機能が追加されていることを読みました。それらが何であり、どのように使用するか知っている人はいますか? 「モード」ですか?Q1に記載されている状況で、彼らは助けることができますか?

返信よろしくお願いします。ありがとうございました。

0 投票する
3 に答える
11407 参照

mapreduce - MapReduceのフォールトトレランス

私はHadoopとそれがどれほどフォールトトレラントであるかについて読んでいました。HDFSを読み、マスターノードとスレーブノードの障害を処理する方法を読みました。ただし、mapreduceがフォールトトレランスを実行する方法について言及しているドキュメントは見つかりませんでした。特に、ジョブトラッカーを含むマスターノードがダウンしたり、スレーブノードのいずれかがダウンしたりするとどうなりますか?

誰かが私にこれを詳細に説明しているいくつかのリンクと参照を指摘することができれば。

0 投票する
3 に答える
8771 参照

scala - Akka Actor not terminating if an exception is thrown

I am currently trying to get started with Akka and I am facing a weird problem. I've got the following code for my Actor:

And this is how I start my workers:

And this is how I shut everything down:

Now what happens is if I send the workers messages with n > 0 (no exception is thrown), everything works fine and the application shuts down properly. However, as soon as I send it a single message which results in an exception, the application does not terminate because there is still an actor running, but I can't figure out where it comes from.

In case it helps, this is the stack of the thread in question:

PS: The thread which is not terminating isn't any of the worker threads, because I've added a postStop callback, every one of them stops properly.

PPS: Actors.registry.shutdownAll workarounds the problem, but I think shutdownAll should only be used as a last resort, shouldn't it?

0 投票する
3 に答える
157 参照

c# - このイベント報告システムの設計を手伝ってください

活動イベントを Web サービス経由でデータベースに報告するシステムを設計しようとしています。Web サービスとデータベースは既に構築されています (COTS ソフトウェア)。後は、イベント ソースを提供するだけです。

ただし、問題は、イベント ソースがフォールト トレラントである必要があることです。対話できるレプリケートされたデータベースが複数あるため、対話している Web サービスまたはデータベースがダウンした場合、ソフトウェアは稼働中の別のサービスにすばやく切り替えることができます。

私が助けを必要としているのは、すべてのデータベースがダウンしている場合です。イベントが山積みになったときにイベントを保持するキューを既に設計しましたが (接続が復元されるとバーストします)、キューはメモリ内構造です: アプリがこの状態でクラッシュした場合、または電源が失われた場合など、キュー内のすべてのイベントが失われます。これは受け入れがたい。私が必要としているのは、データベースがオンラインに戻ったときに、停電やクラッシュが発生した場合でも、キューに入れられたイベントのバーストを送信できるように、イベントを永続化する方法です。

ファイル システムをバッキング ストアとして使用するために、キュー自体を再実装したくないことはわかっています。これは機能します (私も試しました) - しかし、この方法では、ハード ドライブがボトルネックになるため、システムの速度が劇的に低下します。これ以外に、データベースへのアクセスが利用できない場合にのみ、すべてのイベントがハード ドライブに安全に保存されるように、このシステムを設計する 1 つの方法は思い浮かびません。

誰にもアイデアはありますか?=)

0 投票する
4 に答える
120 参照

azure - Azure のグローバル タイムについてどのような仮定を立てることができますか?

突然の障害が発生した場合に備えて、Azure ロールでデータを再処理する必要があります。次のオプションを検討します。

処理するデータのブロックごとに、データベース テーブルの行があり、「処理ノードからの最後の ping の時間」を意味する列を追加できます。したがって、ノードが処理のためにデータブロックを取得すると、「処理中」状態とその時間が「現在の時間」に設定され、その時間を1分ごとに更新するのはノードの責任です。次に、定期的に一部のノードが「処理状態と ping 時間が 10 分を超えるすべてのブロック」を要求し、それらのブロックを放棄されたと見なし、何らかの形で再処理のためにキューに入れます。

1 つ、非常に深刻な懸念事項があります。上記のアプローチでは、ノードが多かれ少なかれ同じ時間を持っている必要があります。すべての Azure ノードが妥当な精度 (数秒など) で同じ時間を持っていることに依存できますか?

0 投票する
1 に答える
256 参照

ruby - 電子メール サービス プロバイダー (ESP) のフェイルオーバー ソリューションは?

複数のメール サービス プロバイダー (「ESP」、ConstantContact、JangoMail、Sailthru、SendGrid、VerticalResponse など) を透過的に使用できるライブラリ、プロジェクト、またはサービスを探しています。私たちが選択した ESP には、時々問題が発生するものがあります。また、ビジネスの要件により、配信の失敗を回避するためにフェイルオーバーソリューションを用意する必要があります。

私たちが求めている基本的な機能:

  • ESP へのメール配信の委任
  • ある ESP から別の ESP への自動フェイルオーバー (指定されたサブスクライバーに1 つの電子メールのみを配信し、重複は配信しません)
  • 構成された ESP 全体で配信ステータス (開封率、直帰率、リストサイズなど) を確認する機能

つまり、複数の ESP を使用して耐障害性と回復を提供するレイヤーが必要です。ライブラリの場合は、Ruby で記述したいと考えています (ただし、他の言語を検討することも可能です)。 これを提供する既存のプロジェクトまたはサービスはありますか?

私たちのユースケース: 私たちは、購読者に 1 日に多くの時間に敏感なメールを送信します。ただし、私たちが使用する ESP はダウンする可能性がありますが、非常にタイムリーに (公開から数秒以内に) メールを送信する必要があります。最初の配信に失敗した場合は、2 次、3 次などの ESP に移動して、障害から回復したいと考えています。

既存のソリューションを検索するとき、私は手ぶらで出てきました。ただし、これらの 2 つのブログ投稿は、私たちの動機の一部を捉えています。「メールが確実に配信されるようにする方法」、 「複数のサービス プロバイダーを使用してリスクを軽減し、失敗を回避する」

0 投票する
1 に答える
154 参照

apache-flex - Flex AMF オフライン モード?

私は現在 Flex (Flash Builder 4) を使用しており、データを取得するために Apache PHP Zend AMF サーバーへの Web サービス接続を行っています。

これはうまく機能しますが、フォールト トレランスにどのようなオプションを利用できるのか疑問に思っています。

最初のサーバーに到達できない場合にアプリケーションが切り替える 2 番目のサーバーをおそらくセットアップできることはわかっています。それについての考えは素晴らしいですが、個々のマシンにある程度の許容範囲を与えることも考えています.

たとえば、少なくともアプリケーションにデータを入力する機能があれば、それが出発点になります。したがって、[保存] をクリックしてもサーバーに到達できない場合は、サーバーがバックアップされるまでキャッシュするか、ローカル ファイルに保存します。ただし、データ検索ができないことは大きな問題かもしれません。

たぶん、これを行うために私が見ることができるいくつかのライブラリまたは何かがすでにありますか?