2

問題は、アプリケーションの実行中にレプリカ セットが強制的に停止されると、メインストリームのすべての Mongo クライアントが接続ごとに少なくとも 1 つの例外をスローすることです。これは、データベース接続が、以前はプライマリであった物理サーバーに固定接続されており、クエリを受け入れなくなったために発生します。そのため、MongoDB アーキテクトは StepDown プロセスによってダウンタイムが発生しないと考えるかもしれませんが、実際には、MongoDB のドキュメントに従って接続を処理すると、各ステップ ダウンによって少なくとも 1 人のユーザーに本格的なクラッシュが発生し、データの整合性が作成されることさえあります。問題。これは、いくつかの特定の Mongo 例外をキャプチャし、Replica Set に自動的に再接続して失敗したクエリを再実行することによってそれらを処理する単純なラッパーで回避できることを願っています。これに対する解決策が既にある場合は、共有してください。

4

1 に答える 1

1

その通りです。これは、主流の ODM と Node.js 用の公式のネイティブ MongoDB ドライバーの両方で私が経験した正確な動作です。

レプリカ セットのステップダウンにより、未処理のクエリが「初期シード リストに有効なサーバーが見つかりませんでした」、「ソケットが閉じられました」、および「ECONNRESET」で失敗し、bufferMaxEntries正しく構成されていても、追加のクエリがバッファリングされます。

そのため、Monksterを開発して、人気のMonk ODMを使用する Node.js 開発者向けに、シームレスなレプリカ セットのステップダウンと MongoDB クラスターの全体的な高可用性を提供しました。

Monkster は、賢明な MongoDB API である Monk に高可用性を提供する Node.js パッケージです。スマートなエラー処理と再試行ロジックを実装して、一時的なネットワーク接続の問題とレプリカ セットのステップダウンをシームレスに処理します。

https://www.npmjs.com/package/monkster

于 2016-06-28T16:19:11.237 に答える