問題タブ [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 に答える
916 参照

javascript - HTML のレンダリング時に Firefox で許容範囲を無効にする (または厳格度を有効にする)

Firefox は、不適切な HTML をレンダリングする際に一定の許容範囲を持っています。つまり、終了タグが省略されていても、HTML は問題なく表示されます。この許容範囲の側面は、現在のページのコンテンツを操作または追加するために JavaScript を使用している場合に特に関連します。

私はメインのテスト/開発ブラウザとして Firefox を使用しているため、「より厳密な」ブラウザでは機能が失われるというこの動作に何度も悩まされてきました。たとえば、Microsoft Internet Explorer の同じコードは、追加されたコンテンツに言及されていないタグが原因で、目に見える出力を生成できませんでした。

問題は、受け入れられた HTML についてより厳密になり、「修正を推測」する代わりに失敗するように Firefox に指示する方法はありますか (特に HTML が JavaScript を介して追加されている場合)。

PS: DOCTYPE で遊んでみましたが、結果は同じでした。

0 投票する
2 に答える
179 参照

java - 設計方法 : ファイルへのランダム アクセス時にリソース リークを回避する

クライアントアプリがファイルを開くクライアント/サーバーアプリケーションがあります。これらのファイルはチャンクに分割され、サーバーに送信されます。

クライアントはファイル チャンクを送信するだけでなく、他のデータも送信します。各メッセージ (データまたはファイルチャンク) には優先度レベルがあります。

すべてのメッセージはバッファリングされ、優先度に従って TCP ストリームに書き込まれます。現在、入力ストリームと出力ストリームは、ファイルが完全に送受信されるたびに両側 (クライアント/サーバー) で閉じられます。これは、ファイルの送信にかかる限り、ストリームが開いたままになることを意味します。

TCP 接続は再接続され、メッセージの送信が再開されるため、失敗しても構いません。そのため、ストリームはある時点で閉じられます。

ただし、たとえば JVM が強制終了された場合、ストリームはクリーンアップされません。

これを解決するために最初に考えたのは、ファイナライザーにクリーンアップ コードを追加することでしたが、JVM が強制終了された場合 (または System.exit が呼び出された場合) にこれらが実行されない可能性があることは理解しています。

2 番目に考えたのは、アプリケーションの一部を書き直して、1 つのチャンクの読み取り/書き込みにかかる時間だけストリームを使用することです。したがって、チャンクの数だけファイルを開いたり閉じたりすることになります。この方法には、try-catch-finally コンストラクトを使用できるという利点がありますが、ファイルを開いたり閉じたりするのにかなりのオーバーヘッドがかかることがよくあります。

では、デザインでfinally{}ブロックが許可されていない場合、リソースをクリーンアップするにはどうすればよいでしょうか? それとも、おそらく私が説明したのと同様の方法で、そのような設計を避けるべきですか?

また、優先度 (理論的には無制限) と同じ数のファイルが開かれている可能性についても懸念しています。

通常、ほとんどのファイルは数 KiB の大きさですが、場合によっては数 GB になることもあります。

ご意見をお寄せいただきありがとうございます。

編集:画像を追加

そのままファイル転送

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

service - WebアプリケーションにErlangWebサーバーを使用する利点

注:この質問は、私が構築するWebアプリケーションの主な要件である高可用性とフォールトトレランスの影響を大きく受けます。他のすべての要件(スケーラビリティやユーザー数など)は、ここでは問題になりません。

このコミュニティのメンバーの1人から、ErlangWebサーバーをWebアプリケーションのバックエンドとして使用するようにアドバイスを受けました。

提案は、JSONとサービス指向モデルを使用して、バックエンドとしてMochiweb、フロントエンドとしてDjango / RubyonRailsのようなものを使用できるというものでした。

私が理解できるこのアプローチの唯一の明らかな利点は、フロントエンド部分の開発が「通常どおり」であるということです。通常のMVCのもの、Ruby on Rails、または他の誰かが選択した一般的なフレームワークです。

しかし、他の利点はどうですか?それらは実際に存在しますか?

確かに、Erlang / OTPは問題のシステムにフォールトトレランスを追加しますが、Webフロントエンドレイヤーを追加すると、このフォールトトレランスレベルがはるかに低いレベルに低下しませんか?

Ruby on RailsとMochiwebを組み合わせて、「単一障害点」を導入しませんか?もちろん、Mochiwebは障害に対処できますが、フロントエンド側で問題が発生した場合はどうなりますか?

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

java - フォールト トレラント システムの作成 - データ ファイルを使用してセーブ データをリロードしますか?

編集 - 実装言語は Java です。

シンプルなフォールト トレラント システムを作成したいと考えています。

  • オブジェクト A - このオブジェクトには、システムの決定ロジックが含まれています。
  • オブジェクト B - このオブジェクトは、フォールト トレランスを制御するために使用されます

私の最初のアイデアは、データ ファイルに保存される変数の値でオブジェクト A を更新することです。オブジェクト B は、プラットフォーム システムのハード ドライブに保存されるデータ ファイルを作成します。

私の質問は、オブジェクト変数の値を使用してデータ ファイルを作成し、データ ファイルからそれらの変数を取得するにはどうすればよいかということです。それらが呼び出されたとき。

変数値をメモ帳ファイルに書き込み、ファイルからそれらを呼び出すだけで十分です

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

solr - フォールトトレラントなSolrレプリケーションアーキテクチャ

レプリケーションでsolrを使用しています。データにインデックスを付ける1つのマスターと、マスターからインデックスを取得してクエリに応答する2つのスレーブがあります。

私の質問は、フォールトトレラントアーキテクチャを作成するにはどうすればよいですか?マスターサーバーがクラッシュしたときにどうすればよいですか?

レプリケーションリピーターを使用することはオプションですが、私はより良い解決策を探しています。

どんな助けでもありがたいです。

0 投票する
2 に答える
6543 参照

c++ - C++ ライブラリのより適切なエラー処理 - jsoncpp

これが jsoncpp に固有のものなのか、C++ ライブラリの動作を改善する一般的なパラダイムなのかはわかりません。基本的に、私はこのトレースを取得しています:

入力が悪い場合に発生します。memcached を介して私の別のアプリケーションからの入力が悪い場合、このエラーを処理したいと思います。あなたが知っている、優雅に。おそらく、「エラー: 項目 15006 の入力が正しくありません」のようなものがログに記録されます。JSON 文字列処理タスク全体をクラッシュさせません。

これはライブラリの書き方が悪いだけですか、それとももっと微妙に設定することは可能ですか?

編集:ここにいくつかの呼び出しコードがあります:

0 投票する
0 に答える
265 参照

akka - Akka 2.0 では、スーパーバイザーをクラスター化することは可能ですか?

Akka を使用した適切なクラスタリングが Akka 2.1 の焦点であることは知っていますが、現在利用可能なもので何かを構築する必要があります。

マルチノードの Akka セットアップがあり、リモート アクターの死を適切に処理したいと考えています。ただし、システムは対称的であり、単一障害点があってはならないため、スーパーバイザー階層を適切にセットアップする方法がわかりません。スーパーバイザーは、Akka ノード全体の終了に対処する必要があるため、監視対象のアクターと同じ Akka インスタンスに存在することはできませんが、スーパーバイザーを別のノードに配置すると、監視対象のアクターが孤立または終了する危険性があります。スーパーバイザを実行しているノードが停止します。

私が本当に必要としているのは、クラスター化されたスーパーバイザーです。これにより、任意の Akka ノード (またはそれらの n 個) のアクターが一連のアクターの監視を処理して、単一障害点を回避できます。Akka 2.0でそのようなことは可能ですか? そうでない場合、同じ効果を得るための最良の方法は何ですか?

0 投票する
0 に答える
148 参照

akka - Akka 2.0 では、スーパーバイザーから新しいリモート ノードでアクターを再起動できますか?

リモート アクターを監督しているスーパーバイザーを想定します。Akka ノード全体が終了したためにリモート アクターが死亡した場合、既存のすべての ActorRef を存続させたまま、新しい Akka ノードでアクターを復活させることは可能ですか?

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

erlang - Erlangでメモリ不足はどのように処理されますか?

Erlangの「クラッシュさせる」という哲学では、プロセスが操作を続行するために必要なメモリを割り当てることができない場合でも、VM全体がクラッシュしないことが期待されます。実際、システムにいくつかのプロセスを強制終了してメモリを解放するヒューリスティックがある場合、他のプロセスがこれを処理して回復します。ルートスーパーバイザーは、ヒューリスティックによって殺される可能性はおそらく低いでしょう。

これは、死ぬか、OSに何をするかを選択させるほとんどの現代の人気のある言語とは正反対です。

Erlangで実際にメモリ不足はどのように処理されますか?

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

java - P2P アプリケーションのフォールト トレランスの Java 実装

LiteSoft.org によってコーディングされた P2P アプリケーションがあります。このアプリケーション内にリーダー選挙システムを実装しようとしています。それを始める前に、ピア (この場合はコーディネーター) にリクエストを送信して、ピアがまだ応答しているかどうかを確認するフォールト トレランス システムを用意する必要があります。リクエストを送信するタイマー システムを実装するにはどうすればよいですか?