信頼性:マスター/スレーブパターンは運命づけられていますか?
-
30-09-2019 - |
質問
スポットライトにあるNOSQLデータベースのますます多くのNOSQLデータベースは、マスター/スレーブパターンを使用して「可用性」を提供しますが、それが行うことは(少なくとも私の観点から)、いつでも壊れるチェーンの弱いリンクを作成することです。 - マスターがダウンし、奴隷は機能するために停止します。
大量のデータを処理し、読み取り/書き込みを均一にするのに最適な方法ですが、可用性の観点から見られますか?それほどではありません...
一部のNOSQLから、奴隷は簡単にマスターになるように変更できることを理解していますが、これを行うことはほとんどのアプリケーションで扱う頭痛の種です。右?
では、人々はこの種のものをどのように世話しますか?マスター/スレーブデータは、現実の世界でどのように機能しますか?
解決
これはかなり一般化された質問です。特に話しているデータストアを指定できますか?
私はMongodbと仕事をしてきましたが、これを非常に優雅に処理しています。 「レプリカセット」(基本的には、マスタースレーブクラスター)のすべてのメンバーは、マスターになる資格があります。レプリカセットに接続すると、セットは接続クライアントにセット内のすべてのメンバーについて指示します。セットのマスターがオフラインになった場合、奴隷は自動的に新しいマスターを選出し、クライアントは(セット内のすべてのノードのリストがあるため)接続するまで新しいノードを試します。接続するノードは、クライアントに新しいマスターについて通知し、クライアントは接続を切り替えます。これにより、アプリケーションに変更を加えることなく、完全に透明なマスター/スレーブフェールオーバーが可能になります。
これは明らかに単一の接続では問題ありませんが、再起動はどうですか? MongoDBドライバーもこれを処理します。接続を試してみるノードのリストを受け入れることができ、接続するものが見つかるまでシリアルで試してみます。接続すると、ノードにマスターが誰であるか尋ね、そこに接続を転送します。
最終的な結果は、レプリカセットが確立されている場合、単一のノード爆発がオフラインになることを効果的に心配しないでください。