2011-10-24 9 views
6

ユーザーがリストに含まれていない限り、ユーザーに操作を拒否する必要のある複数のフロントエンドノードを含む分散アプリケーションを作成しています。Zookeeperを使用してユーザーのアクセス許可を保存することは意味があります

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

現在、メモリリストを更新するためにデータベースをポーリングしているため、ユーザーがリストから削除された場合、その変更は4つのノードすべてに反映されます。しかし、データベースがダウンしている間にノードの1つがリブートされた場合、私たちは望んでいないすべてのユーザーの要求を拒否する空のリストになります。データベースがメッセージキューにバッファリングされているにもかかわらず、データベースがダウンしているにもかかわらず、ユーザーからの要求は受け入れられますが、却下する必要がある場合は、即座に拒否します。

それぞれの4ノードでZookeeperインスタンスを実行し、Zookeeperでユーザー権限を格納することは理にかなっています。したがって、読書は速くなければならず、データは非常に利用可能であり、合理的でなければならない。もはやポーリングを行う必要はなく、たとえデータベースを再起動しても、ノードは動物園から設定を取得することができます!

答えて

10

はい、あなたの問題を記述した方法は、飼い犬飼い主は、法案に完全に合う必要があります。それが答えられる必要があるものの、いくつかの質問があります:私たちは約

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

  • データはどのくらいの頻度で変更されますか? Zookeeperは、半分以上のノードが更新を受け取ったことを保証します。したがって、書き込みは正確に実行可能ではありません。

  • 一度にどのくらいのデータを読み取る必要がありますか? Zookeeperにはレスポンスサイズが1MBの制限がありますが、その制限を下回るようにすることをお勧めします。子の名前がデータとして数えられるので、たくさんの子を持つノードをリストしている場合にも、この制限に達することに注意してください。そのデータを考慮

は、それが問題の多くではありません読んで、RAMから提供されていますが、常にキャッシュ結果、および適切なノード上の設定ウォッチは、ローカルデータを無効にすることができます。

関連する問題