問題タブ [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.
language-agnostic - ピアツーピア システム全体でアイテムを確実に、しかし最小限に配布する方法
クエリ可能なピア ツー ピア システムがある場合は、
- ネットワーク全体のクエリの総数を減らす (「人気のある」アイテムを広く配布し、「類似の」アイテムをまとめて配布することにより)
- 各ノードで余分なストレージを避ける
- クライアントのダウンタイム、ハードウェア障害、およびユーザーの離脱に直面して、中程度に希少なアイテムであっても良好な可用性を保証します (おそらく、アーキビスト/歴史家にとって希少なアイテムを検出します)
- ネットワーク パーティションが発生した場合にクエリが一致を見つけられないことを回避する
これらの要件を考えると:
- 標準的なアプローチはありますか?そうでない場合、尊敬されているが実験的な研究はありますか? 私は分散スキームに精通している人もいますが、ロバスト性の学習に実際に取り組んでいるものは見たことがありません。
- 明らかな基準がありませんか?
- この問題に取り組んだり、解決したりすることに興味のある人はいますか? (もしそうなら、私が今週末に一緒に投げた非常に不十分なシミュレーターの一部をオープンソースにして喜んで、一般的に役に立たないアドバイスを提供します)。
@cdv: 今ビデオを見ましたが、とても良いです。プラグイン可能な配布戦略に完全に到達しているとは思えませんが、90% は確実に達成されています。ただし、質問は、このアプローチとの有用な違いを強調しており、私のさらなる懸念のいくつかに対処し、フォローアップするための参考文献をいくつか提供してくれます。したがって、質問は未解決であると考えていますが、暫定的にあなたの回答を受け入れています。
java - Java の Fail fast finally 句
finally 句内から、例外がスローされていることを検出する方法はありますか?
以下の例を参照してください。
または、例外の 1 つを無視することしかできませんか?
C++ では、例外の 1 つを無視することさえできず、terminate() を呼び出すだけです。他のほとんどの言語は、Java と同じ規則を使用します。
linux - ext3 ファイルシステムの破損をシミュレートするにはどうすればよいですか?
組み込みシステムがどのように反応するかをテストする目的で、ファイルシステムの破損をシミュレートし、最終的に可能な限り正常に失敗するようにしたいと思います。頻繁に変更され、NAND/NOR でのストレージには適さないデータには、さまざまな種類のブロック デバイス エミュレート フラッシュ ストレージを使用します。
ファイルツリーのさまざまな部分でデータが変更される頻度と、機密データが保存されている場所について、かなり良い考えを持っているためです。ランダムにではなく、特定の領域にエラーを挿入したいと思います。
緊急の場合fsck -y
、システムを起動して非常に悪い状態にあることを報告するための最後の手段として使用します。システムの復旧能力への影響を調査するために、fsck が修復を試行する原因となるエラーを発生させたいと考えています。
dd if=/dev/random
制御されたエラーを挿入するために簡単に使用できないため、私の目的には十分に正確ではありません。私のニーズにより適した他のツールや方法はありますか、それとも自分で発明する必要がありますか?
.net - デュプレックス チャネルに障害が発生した場合、デュプレックス チャネルを自動的に再確立するにはどうすればよいですか?
WCF を使用して .Net 3.5 でクライアント/サーバー アプリケーションを開発しています。基本的に、長時間実行されているクライアント サービス (複数のマシン上) は、netTcpBinding を介してサーバーへの二重接続を確立します。次に、サーバーはクライアントのコールバック コントラクトを使用して特定のオンデマンド操作を実行し、クライアントは非同期方式で応答します (かなり標準的なものだと思います)。DuplexClientBase クラスをサブクラス化して、ほとんどの通信を処理します。
残念ながら、いずれかの側で何か問題が発生した場合 (ネットワーク障害、予期しない例外など)、チャネルに障害が発生したり中止されたりして、後続のすべての操作が失敗します。クライアントが障害を起こしたときに自動的にピックアップして操作を再試行する RecoveringClientBase クラスを作成することで、非二重チャネルでのこの制限を回避しました。
私の質問は、デュプレックス チャネルに障害が発生したことを判断する確立された方法はありますか? サーバーまたはクライアントのどこでこれを確認する必要がありますか? それができない場合、接続が再確立されるようにするために必要なオプションは何ですか?
更新:サーバーが障害が発生したコールバック チャネルを使用しようとする可能性がある二重チャネルに固有のアドバイスを探しています。したがって、チャネルに何かが発生したときにすぐに再接続/再サブスクライブするものが必要です。現時点では、チャネルの Closing イベントをリッスンしており、状態が Closed 以外の場合は再作成しています。ある程度は機能しますが、ハッキーに感じます...
fault-tolerance - HP (タンデム) ノンストップは Linux クラスターと比べてどうですか?
HP NonStop システム (以前は「タンデム」と呼ばれていました) は、可用性と信頼性が高く、価格が高いことで知られています。
これらの点やその他の点で、Linux または Unix ベースのクラスターはそれらとどのように比較されますか?
architecture - フォールト トレラント ソフトウェア アーキテクチャ
フォールト トレラント ソフトウェア アーキテクチャに関する優れた記事を探しています。おすすめを教えてください。
c# - [OptionalField]属性はどうなっていますか?
私が理解しているように、この新しいメンバーがない古いバージョンのクラスを逆シリアル化するときは、新しいバージョンのクラスの新しいメンバーを[OptionalField]属性で装飾する必要があります。
ただし、クラスのシリアル化後にInnerTranslatorプロパティが追加されている間は、以下のコードは例外をスローしません。onDeserializationメソッド(シリアル化されていないことを確認する)でプロパティがnullであることを確認しましたが、そのためにコードが例外をスローすることを期待していました。[OptionalField]属性自体はオプションですか?
mysql - 堅牢なフォールト トレラントな MySQL レプリケーション
フォールト トレラントな MySQL レプリケーションを取得する方法はありますか? 私は、多くのネットワークの問題がある環境にいます。レプリケーションでエラーが発生し、停止したようです。動作を継続し、これらの障害から回復するために必要です。レプリケーションの状態をチェックし、ログの位置が失われた場合に再起動するラッパー ソフトウェアがいくつかあります。代替手段はありますか?
注: レプリケーションは、MySQL 4.1 を搭載した組み込みコンピューターから MySQL 5.0.45 を搭載した外部コンピューターに行われます。
erlang - スーパーバイザープロセスはどのようにプロセスを監視しますか?JVMでも同じことができますか?
Erlangのフォールトトレランス(私が理解しているように)には、スーパーバイザープロセスを使用してワーカープロセスを監視することが含まれているため、ワーカーが死亡した場合、スーパーバイザーは新しいプロセスを起動できます。
特に分散シナリオでは、Erlangはこの監視をどのように行いますか?プロセスが実際に停止したことをどのように確認できますか?ハートビートはありますか?ランタイム環境に何かが組み込まれていますか?ネットワークケーブルが接続されていない場合はどうなりますか?他のプロセスと通信できない場合、他のプロセスが停止したと見なされますか?等
私は、JVM(JavaやScalaなど)でErlangが主張するのと同じフォールトトレランスなどを実現する方法を考えていました。しかし、Erlangと同様に、JVMに組み込まれたサポートが必要かどうかはわかりませんでした。比較のポイントとして、Erlangがどのようにそれを行うかについての定義にまだ出くわしていませんでした。