私は最近Zookeeperを調べており、誰かが現在それを使用しているかどうか、および保存のために具体的に何を使用していたのか疑問に思いました。
最も一般的な使用例は構成情報ですが、どのような種類のデータとどのくらいの量のデータを保存していますか?
私は最近Zookeeperを調べており、誰かが現在それを使用しているかどうか、および保存のために具体的に何を使用していたのか疑問に思いました。
最も一般的な使用例は構成情報ですが、どのような種類のデータとどのくらいの量のデータを保存していますか?
回答:
DOSGi のApache CXF実装では、サービス登録リポジトリにzookeeperを使用しています。個々のコンテナーには、すべてのサービスイベントをリッスンする分散ソフトウェア(dsw)バンドルがあり、サービスステータスが変更されたときに、分散を示すプロパティがあります。dswはディスカバリバンドルと通信します。これは、リファレンス実装の場合、zookeeperを使用してサービスを一時ノードとして格納します。他のインスタンスは、ノード構造への変更を探し、ローカルシステムにプロキシを登録します。その結果、プレーンなOSGiにコーディングして、透過的な配布を行うことができます。
ZooKeeperを利用したフリーソフトウェアプロジェクト:
ZooKeeperを利用したApacheプロジェクト:
ソース: https : //cwiki.apache.org/confluence/display/ZOOKEEPER/PoweredBy
HBaseはZookeeperを使用して、現在のバージョンより前の「ヘッドノード」が担当していたアクティビティを調整します。Zookeeperの使用への移行は、中央制御がもはや単一障害点ではないことを意味します。
Zookeeperは非常に用途が広いです。これを使用して分散同時キューを構築する例を次に示します。
http://blog.cloudera.com/blog/2009/05/building-a-distributed-concurrent-queue-with-apache-zookeeper/
もちろん、分散システムでリソースロックなどを作成するためにも使用できます。
Norbertは、スケーラブルなプロダクションシステムの良い例です。私は一般的に、クラスター化されたサービスを実行するための軽量フレームワークにNetty、プロトコルバッファー、Zookeeperを統合しています。プロトコルバッファーはサービスAPIの指定に使用され、Nettyはトランスポート層の抽象化を実装し、Zookeeperは本質的にフォールトトレラントな検出サービスです。
サービスインスタンスが開始されるたびに、Norbertはそれを特定のサービスタイプの使用可能なインスタンスとして登録します。実装の観点から、2つのZookeeperツリーを作成します。
各ノードの最も重要なプロパティは、対応するサービスインスタンスへの接続に使用するURLです。これにより、クライアント側の負荷分散が可能になります。Norbertクライアントは、指定されたサービス名のURLのリストを見つけて、それらのいずれかに接続しようとします(たとえば、ラウンドロビンまたはランダム)。
Elastic CloudのZooKeeperに関する優れた記事ZooKeeper-The King of Coordinationがあります。
たとえば、Foundでは、発見、リソースの割り当て、リーダーの選出、優先度の高い通知にZooKeeperを幅広く使用しています。この記事では、このKing of Coordinationを紹介し、FoundでのZooKeeperの使用方法を詳しく見ていきます。
SolrはZooKeeperの統合にも取り組んでいます。ここで、動的構成、シャーディング、SPOF除去(マスター/スレーブ選択)、リバランスなどに使用されていることがわかります。
StormはZookeeperを使用してすべての状態を保存し、その(分散型)コンポーネントサービスのいずれかで停止から回復できるようにします。
これにより、コンポーネントサービスをステートレスにして、構成データが必要なときにZookeeperサーバーにダウンロードまたは同期するだけで済みます。運用サーバーを復旧する必要があったことがあるなら、これがどんな頭痛の種であるかがわかるでしょう!
Kafkaキューの消費者は、Zookeeperを使用して、キューから消費されたものに関する情報(最高水準点)を保存できます。
私の場合、クラスタを使用するために構成ファイルをzookeeperアンサンブルに保存しています。リーダー->フォロワースキーマを使用しています。したがって、ある飼育係がダウンすると、別の飼育係に切り替えられます(複製モード)
Neo4jは、高可用性エンタープライズサーバーであるZookeeperを使用しています。 http://docs.neo4j.org/chunked/milestone/ha.html
datomicはapache zookeeperを使用してriakベースのデータストレージを管理します。
現時点では、Riakは結果整合性のみをサポートしているため、Riakで実行されるDatomicシステムは、可用性の高い調整サービスであるApache ZooKeeperも利用します。Datomicは、トランザクターフェイルオーバーの調整、およびCASで更新する必要があるデータベースごとの少数のキーにZooKeeperを使用します。ソース:http : //blog.datomic.com/2012/11/riak-and-couchbase-support.html
ここでは、HBaseがZooKeeperをどのように使用するかについての詳細と、将来的にどのように使用するかについての情報を示します。一般的に、ZooKeeperを使用して実装されたリーダー選出により、リージョンサーバー上のSPOFを排除するために使用します。