6

リストの一部でない限り、ユーザーへのアクションを拒否する必要がある複数のフロントエンドノードを含む分散アプリケーションを作成しています。

現在、これらのノードは4つ以上ありますが、DB2を実行しているデータベースサーバーは1つだけであり、メンテナンスのためにダウンしていることがよくあります。

現在、データベースをポーリングしてメモリ内のリストを更新しているため、ユーザーがリストから削除された場合、変更は4つのノードすべてに反映されます。ただし、データベースがダウンしているときにノードの1つを再起動すると、リストが空になり、不要なすべてのユーザー要求が拒否されます。データベースがダウンしている場合でも、メッセージキューにバッファリングするため、ユーザーからのリクエストを受け入れることができますが、拒否する必要がある場合は、すぐに拒否したいと考えています。

4つのノードのそれぞれでZookeeperインスタンスを実行し、ユーザー権限をZookeeperに保存することは理にかなっていますか。したがって、読み取りは高速で、データは高可用性で一貫している必要があります。もうポーリングを行う必要はなく、データベースを再起動しても、ノードはzookeeperから構成を取得できます。

4

1 に答える 1

10

はい、あなたがあなたの問題を説明したように、Zookeeperは法案に完全に適合するはずです。答える必要がある質問がいくつかあります:

  • どのくらいのデータについて話しているのですか?Zookeeperはデータをディスクに保持しますが、データがRAMに収まる場合にのみ機能します。

  • データはどのくらいの頻度で変更されますか?Zookeeperは、半分以上のノードが更新を受信したことを保証するため、書き込みのパフォーマンスは正確ではありません。

  • 一度に読み取る必要のあるデータの量はどれくらいですか?Zookeeperの応答サイズには1MBの制限がありますが、データをその制限よりも十分に低く保つことをお勧めします。子の名前はデータとしてカウントされるため、子が多数あるノードを一覧表示する場合にも、この制限に達する可能性があることに注意してください。

データがRAMから提供されることを考えると、データの読み取りはそれほど問題にはなりませんが、いつでも結果をキャッシュし、適切なノードに監視を設定してローカルデータを無効にすることができます。

于 2011-10-24T21:17:01.677 に答える