Zookeeperクラスターの典型的な分散アプリケーションのシナリオ

 

1.構成管理の需要はデータの整合性です

ZooKeeperはプッシュとプルの組み合わせを使用します。クライアントは、サーバーに注意を払う必要があるノードを登録します。ノードのデータが変更されると、サーバーはWatcherイベント通知を対応するクライアントに送信します。クライアントはこれを受信しますメッセージの通知後、サーバーに移動して最新のデータを取得するためのイニシアチブをとる必要があります。

 

2.ネーミングサービス

サービスによって提供されるURIなどのサービスにアクセスする必要がありますが、URIは可変であるため、変更されたURIに固定名を付け、毎回この名前でサービスURIを取得する必要があります。

         Zookeeperは、サービスがノードを作成することを許可し、ノード名はサービス名、データはuriですこのようにして、命名は完了です。

 

3.負荷分散

1)ロード登録/更新ロードIP:ポートはZooKeeperの一時ノードデータに保存でき、整合性があります

2)ロードヘルスチェック-オフラインロードの場合、それによって作成された一時ノードは自動的に削除され、ip:ポートデータも削除されます。

3)負荷ディスパッチ-負荷ノードの下のすべての一時ノードを取得し、負荷分散アルゴリズムを使用して負荷を選択します

 

4.マスター選挙

クライアントクラスターは定期的にZooKeeperに作成されます。-/ master_ election /などの一時ノード

2013年9月20日/バインディング。このプロセスでは、1つのクライアントだけがこのノードを正常に作成できます。

クライアントが配置されているマシンがマスターになると同時に、ZooKeeperでノードを正常に作成していない他のゲスト。

クライアントは、ノード/ master_ election / 2013-09-20の子ノードの変更でウォッチャーを登録します。

現在のマスターマシンが動作しているかどうかを監視します。現在のマスターがハングしていることが判明すると、残りのクライアントは

マスター選挙を再実行します。

 

5.分散ロック

排他ロックを取得する必要がある場合、すべてのクライアントがcreate()インターフェースを呼び出そうとします。

/ exclusive_lockノードの下に一時的な子ノード/ exclusive_lock / lockを作成します。前のセクションでも紹介しましたが、

ZooKeeperは、すべてのクライアントで、1つのクライアントのみが正常に作成できることを保証します。

クライアントはロックを取得したと見なされます。同時に、ロックを取得していないすべてのクライアントは、/ exclusive_lockセクションに移動する必要があります

クリックして子ノードの変更の監視を監視に登録し、ロックノードの変更をリアルタイムで監視します。

おすすめ

転載: www.cnblogs.com/handwrit2000/p/12688012.html