ZooKeeperのユースケース
- ZooKeeperを使用しているアプリケーションと組織(アルファベット順)には、以下が含まれます[1]。
- ここにユースケースを掲載したい場合は、ご遠慮なくプルリクエストを送信するか、dev@zookeeper.apache.orgにメールを書いてください。あなたのユースケースが掲載されます。
- このドキュメントがあなたの知的財産権またはあなたとあなたの会社のプライバシーを侵害している場合は、dev@zookeeper.apache.orgにメールを書いてください。迅速に対応します。
フリーソフトウェアプロジェクト
- クラスタリングサポートでノードの協調を実装するためにZooKeeperを使用しています。これにより、JMX経由で接続された他のノードから、クラスタ全体、または特定のノードを管理できます。ZooKeeperの協調の上に開発されたクラスタワイドコマンドフレームワークにより、一部のノードで失敗したコマンドを再試行できます。また、同じフレームワークを使用して、ノードの完全なクラスタの自動化されたグレースフルラウンドロビン再起動をサポートしています[1]。
- Akkaは、JVM上の次世代イベント駆動型、スケーラブルでフォールトトレラントなアーキテクチャのためのプラットフォームです。または、Akkaは、JVM上で高度に並行、分散、フォールトトレラントなイベント駆動型アプリケーションを構築するためのツールキットおよびランタイムです[1]。
- Eclipse ECFプロジェクトは、Zookeeperを使用した抽象ディスカバリーサービスの実装を提供します。ECF自体は、OSGiに基づいた通信の基本機能を提供する多くのプロジェクトで使用されています[1]。
- Eclipse Gyrexプロジェクトは、独自のJava OSGiベースのクラウドを構築するためのプラットフォームを提供します。
- ZooKeeperは、ノードメンバーシップと管理、ワーカー間で実行されるジョブの調整、ロックサービス、シンプルなキューサービスなどのコアクラウドコンポーネントとして使用されます[1]。
- サービスデプロイメントとオーケストレーションフレームワーク、以前はEnsembleと呼ばれていました[1]。
- Kattaは、グリッド環境で分散Luceneインデックスを提供します。
- Zookeeperは、グリッドでのノード、マスター、インデックスの管理に使用されます[1]。
- KeptCollectionsは、Java Collectionsフレームワークのデータ構造のドロップイン代替のライブラリです。
- KeptCollectionsは、Apache ZooKeeperをバッキングストアとして使用するため、そのデータ構造は分散およびスケーラブルになります[1]。
- Neo4jはグラフデータベースです。これは、大きなグラフと高速なグラフトラバーサルのための、ディスクベースのACID準拠のトランザクションストレージエンジンであり、グローバル検索にはLucene / Solrのような外部インデックスを使用しています。
- Neo4j高可用性コンポーネントで、書き込みマスターの選択、読み取りスレーブの調整、その他の便利な機能にZooKeeperを使用しています。ZooKeeperは素晴らしい、そして焦点を絞ったプロジェクトです。気に入っています![1]。
- パーティション分割されたルーティングとクラスタ管理[1]。
- Spring Cloud Zookeeperは、Spring Bootアプリに、自動構成とSpring Environmentおよび他のSpringプログラミングモデルイディオムへのバインディングを通じて、Apache Zookeeperの統合を提供します。いくつかの簡単なアノテーションを使用すると、アプリケーション内の一般的なパターンをすばやく有効化および構成し、Zookeeperを使用して大規模な分散システムを構築できます。提供されるパターンには、サービスディスカバリと分散構成が含まれます[38]。
- Spring Statemachineは、アプリケーション開発者がSpringアプリケーションでステートマシンコンセプトを使用するためのフレームワークです。
- Spring Statemachineは、Zookeeper[31,32]に基づく分散ステートマシンという機能を提供できます。
- Spring XDは、データ取り込み、リアルタイム分析、バッチ処理、およびデータエクスポートのための、統合された分散型の拡張可能なシステムです。このプロジェクトの目標は、ビッグデータアプリケーションの開発を簡素化することです。
- ZooKeeper - XDクラスタのすべてのランタイム情報を提供します。実行中のコンテナ、モジュールとジョブがデプロイされているコンテナ、ストリーム定義、デプロイメントマニフェストなどを追跡します[30,31]。
- Talend ESBは、汎用性と柔軟性を備えたエンタープライズサービスバスです。
- RESTおよびSOAP Webサービスの両方のエンドポイントリポジトリとしてZooKeeperを使用します。ZooKeeperを使用することにより、Talend ESBは、非常に軽量な方法でフェイルオーバーおよびロードバランシング機能を提供できます[1]。
- Redis Failoverは、Ruby用のZooKeeperベースの自動マスター/スレーブフェイルオーバーソリューションです[1]。
Apacheプロジェクト
- Accumuloは、表現力豊かなセルレベルのアクセスラベルを提供する分散キー/値ストアです。
- Apache ZooKeeperは、Accumuloアーキテクチャの中心的な役割を果たします。そのクォーラム整合性モデルは、単一障害点のない全体的なAccumuloアーキテクチャをサポートします。さらに、AccumuloはZooKeeperを利用して、ユーザーとテーブルの設定情報、およびプロセスとタブレットの操作状態を保存および通信します[2]。
- Atlasは、スケーラブルで拡張可能なコア基盤ガバナンスサービスのセットであり、企業がHadoop内でコンプライアンス要件を効果的かつ効率的に満たすことを可能にし、エンタープライズデータエコシステム全体との統合を可能にします。
- Atlasは、HBase、Kafkaの冗長性と高可用性を提供するために、調整にZookeeperを使用します[31,35]。
- リアルタイムワークロードに最適化された、スケーラブルでフォールトトレラントな低遅延ストレージサービス。
- BookKeeperは、台帳および利用可能なブッキーに関する情報を保存するために、メタデータストレージサービスを必要とします。BookKeeperは現在、このタスクやその他のタスクにZooKeeperを使用しています[3]。
- Apache CXFは、オープンソースのサービスフレームワークです。CXFは、JAX-WSやJAX-RSのようなフロントエンドプログラミングAPIを使用してサービスを構築および開発するのに役立ちます。これらのサービスは、SOAP、XML / HTTP、RESTful HTTP、またはCORBAなどのさまざまなプロトコルを使用でき、HTTP、JMS、JBIなどのさまざまなトランスポートで動作します。
- Apache CXFでの分散OSGi実装は、その検出機能にZooKeeperを使用しています[4]。
- Hadoop、NoSQL、クラウドストレージ用のスキーマフリーSQLクエリエンジン
- ZooKeeperは、一時的なクラスタメンバーシップ情報を保持します。DrillbitsはZooKeeperを使用してクラスタ内の他のDrillbitsを見つけ、クライアントはZooKeeperを使用してクエリを送信するDrillbitsを見つけます[28]。
- Apache Druidは、高性能なリアルタイム分析データベースです。
- Apache Druidは、現在のクラスタ状態の管理にApache ZooKeeper(ZK)を使用します。ZK上で発生する操作は次のとおりです[27]。
- コーディネーターリーダーの選択
- ヒストリカルおよびリアルタイムからのセグメント「公開」プロトコル
- コーディネーターとヒストリカル間のセグメントロード/ドロッププロトコル
- オーバーロードリーダーの選択
- オーバーロードおよびミドルマネージャーのタスク管理
- Apache Dubboは、高性能なJavaベースのオープンソースRPCフレームワークです。
- Zookeeperは、Dubboでのサービス登録、ディスカバリ、構成管理に使用されます[6]。
- Apache Flinkは、無制限および制限付きのデータストリームに対する状態計算のためのフレームワークおよび分散処理エンジンです。Flinkは、すべての一般的なクラスタ環境で実行し、インメモリ速度と任意のスケールで計算を実行するように設計されています。
- JobManagerの高可用性を有効にするには、高可用性モードをzookeeperに設定し、ZooKeeperクォーラムを構成し、すべてのJobManagersホストとそのWeb UIポートを含むマスターファイルをセットアップする必要があります。Flinkは、実行中のすべてのJobManagerインスタンス間の分散調整にZooKeeperを利用します。ZooKeeperは、リーダーの選択と軽量の整合性のある状態ストレージを介して、非常に信頼性の高い分散調整を提供する、Flinkとは別のサービスです[23]。
- Flumeは、大量のログデータを効率的に収集、集約、および移動するための、分散型で信頼性が高く、利用可能なサービスです。ストリーミングデータフローに基づくシンプルで柔軟なアーキテクチャを備えています。調整可能な信頼性メカニズムと多くのフェイルオーバーおよびリカバリメカニズムを備えた堅牢でフォールトトレラントなものです。オンライン分析アプリケーションを可能にするシンプルな拡張可能なデータモデルを使用します。
- Flumeは、Zookeeper経由のエージェント構成をサポートしています。これは実験的な機能です[5]。
- Apache Fluoは、ユーザーが大規模なデータセットを増分更新できる分散処理システムです。
- Apache Fluoは、合意形成のためにApache Zookeeperを使用するApache Accumuloの上に構築されています[31,37]。
- バッチおよびストリーミング用のビッグデータ品質ソリューション。
- Griffinは、Kafkaの冗長性と高可用性を提供するために、調整にZookeeperを使用します[31,36]。
- Apache Hadoopソフトウェアライブラリは、単純なプログラミングモデルを使用して、コンピュータのクラスタ全体で大規模なデータセットの分散処理を可能にするフレームワークです。単一サーバーから数千台のマシンまで拡張できるように設計されており、それぞれがローカル計算とストレージを提供します。高可用性を実現するためにハードウェアに依存するのではなく、ライブラリ自体はアプリケーション層で障害を検出して処理するように設計されているため、障害が発生しやすい可能性のあるコンピュータのクラスタ上で高可用性サービスを提供します。
- 自動HDFSフェイルオーバーの実装は、ZooKeeperに依存して次のことを行います。
- 障害検出 - クラスタ内の各NameNodeマシンは、ZooKeeperで永続的なセッションを維持します。マシンがクラッシュした場合、ZooKeeperセッションは期限切れになり、フェイルオーバーをトリガーする必要があることを他のNameNodeに通知します。
- アクティブNameNodeの選択 - ZooKeeperは、ノードをアクティブとして排他的に選択するための簡単なメカニズムを提供します。現在のアクティブなNameNodeがクラッシュした場合、別のノードは、次のアクティブになる必要があることを示すZooKeeperで特別な排他的ロックを取得できます。
- ZKFailoverController(ZKFC)は、ZooKeeperクライアントでもあり、NameNodeの状態を監視および管理する新しいコンポーネントです。NameNodeを実行する各マシンもZKFCを実行し、そのZKFCは次の役割を担います。
- ヘルスモニタリング - ZKFCは、ヘルスチェックコマンドを使用して、ローカルNameNodeに定期的にpingを実行します。NameNodeがタイムリーに応答し、正常なステータスを返している限り、ZKFCはノードが正常であると見なします。ノードがクラッシュしたり、フリーズしたり、その他の異常な状態になった場合、ヘルスモニターはそれを異常としてマークします。
- ZooKeeperセッション管理 - ローカルNameNodeが正常な場合、ZKFCはZooKeeperでセッションを開いたままにします。ローカルNameNodeがアクティブな場合、特別な「ロック」znodeも保持します。このロックは、ZooKeeperの「一時的」ノードのサポートを使用します。セッションが期限切れになると、ロックノードは自動的に削除されます。
- ZooKeeperベースの選択 - ローカルNameNodeが正常で、ZKFCが現在ロックznodeを保持しているノードがないことを確認した場合、自身がロックの取得を試みます。成功した場合、「選挙に当選」したことになり、フェイルオーバーを実行してローカルNameNodeをアクティブにする責任があります。フェイルオーバープロセスは、前述の手動フェイルオーバーに似ています。まず、必要に応じて以前のアクティブがフェンシングされ、ローカルNameNodeがアクティブ状態に移行します[7]。
- HBaseはHadoopデータベースです。これは、オープンソースの分散型カラム指向ストアモデルです。
- HBaseは、マスターの選択、サーバーリース管理、ブートストラップ、およびサーバー間の調整にZooKeeperを使用します。分散型のApache HBaseインストールは、実行中のZooKeeperクラスタに依存します。参加するすべてのノードとクライアントは、実行中のZooKeeperアンサンブルにアクセスできる必要があります[8]。
- ご覧のとおり、ZooKeeperはHBaseの基本的な部分です。リージョン割り当て、マスターフェイルオーバー、レプリケーション、スナップショットなど、調整が必要なすべての操作は、ZooKeeper上に構築されています[20]。
- パーティション分割および複製された分散リソースのためのクラスタ管理フレームワーク。
- クラスタの状態を維持するための分散ストアと、クラスタ状態に変更があった場合に通知する通知システムが必要です。Helixはこの機能を実現するためにApache ZooKeeperを使用します[21]。ZooKeeperは以下を提供します。
- 削除されるまで残る永続的な状態を表現する方法
- 状態を作成したプロセスが終了すると消滅する一時的/エフェメラルな状態を表現する方法
- 永続的およびエフェメラルな状態に変更があった場合の通知メカニズム
- Apache Hiveデータウェアハウスソフトウェアは、SQLを使用して分散ストレージにある大規模なデータセットの読み取り、書き込み、管理を容易にします。ストレージ内のデータに構造を投影できます。ユーザーがHiveに接続するためのコマンドラインツールとJDBCドライバが提供されています。
- Hiveは、HiveServer2での同時実行をサポートするために、分散ロックマネージャとしてZooKeeperを使用しています[25,26]。
- Igniteは、トランザクション、分析、およびストリーミングワークロード向けのメモリ中心の分散データベース、キャッシュ、および処理プラットフォームであり、ペタバイト規模でインメモリ速度を提供します。
- Apache Igniteのディスカバリーメカニズムは、ZooKeeperの実装を使用しており、Igniteクラスタを数百から数千のノードに拡張し、線形のスケーラビリティとパフォーマンスを維持できます[31,34]。
- Apache James Mailboxは、メールプロトコル(IMAP4、POP3、SMTPなど)およびその他のプロトコルからアクセスできる柔軟なメールボックスストレージを提供するライブラリです。
- 分散一意のIDを生成するために、ZookeeperとCurator Frameworkを使用します[31]。
- Kafkaは、分散型のパブリッシュ/サブスクライブメッセージングシステムです。
- Apache Kafkaは、以下の目的でZooKeeperに依存しています。
- コントローラーの選出コントローラーは、Kafkaエコシステムで最も重要なブローカーエンティティの1つであり、すべてのパーティションにわたるリーダーとフォロワーの関係を維持する責任も負っています。何らかの理由でノードがシャットダウンしている場合、失敗しようとしているノードのパーティションリーダーの役割を果たすようにすべてのレプリカに指示するのはコントローラーの責任です。したがって、ノードがシャットダウンするたびに、新しいコントローラーを選出して、任意の時点でコントローラーが1つだけ存在し、すべてのフォロワーノードがそれに合意していることを確認できます。
- トピックの構成既存のトピックのリスト、各トピックのパーティション数、すべてのレプリカの場所、すべてのトピックの構成オーバーライドのリスト、優先リーダーであるノードなど、すべてのトピックに関する構成。
- アクセス制御リストすべてのトピックのアクセス制御リスト(ACL)もZooKeeper内で維持されます。
- クラスタのメンバーシップZooKeeperは、任意の時点で機能しており、クラスタの一部であるすべてのブローカーのリストも保持します[9]。
- Apache Kylinは、Hadoop/Spark上でSQLインターフェースと多次元分析(OLAP)を提供するように設計されたオープンソースの分散分析エンジンであり、eBay Inc.からオリジナルが提供されました。
- Apache Kylinは、ジョブの調整にZookeeperを利用します[31,33]。
- Apache Mesosは、CPU、メモリ、ストレージ、およびその他のコンピューティングリソースをマシン(物理または仮想)から抽象化し、耐障害性があり、伸縮性のある分散システムを効果的に構築および実行できるようにします。
- Mesosには、複数のMesosマスターを使用する高可用性モードがあります。1つのアクティブマスター(リーダーまたはリーディングマスターと呼ばれる)と、障害が発生した場合のいくつかのバックアップです。マスターはリーダーを選出し、Apache ZooKeeperは、選挙の調整と、マスター、エージェント、およびスケジューラードライバーによるリーダーの検出の両方を処理します[10]。
- Oozieは、Apache Hadoopジョブを管理するためのワークフロー スケジューラ システムです。
- Oozieサーバーは、データベースへのアクセスを調整し、相互に通信するためにこれを使用します。完全なHAを実現するには、少なくとも3つのZooKeeperサーバーが必要です[29]。
- Apache Pulsarは、Yahooで最初に作成され、現在Apache Software Foundationの一部であるオープンソースの分散pub-subメッセージングシステムです。
- Pulsarは、メタデータストレージ、クラスタ構成、および調整にApache Zookeeperを使用します。Pulsarインスタンスでは、
- 構成ストアクォーラムは、テナント、名前空間、およびグローバルに一貫性が必要な他のエンティティの構成を保存します。
- 各クラスタには、所有権メタデータ、ブローカー負荷レポート、BookKeeper台帳メタデータなど、クラスタ固有の構成と調整を保存する独自のローカルZooKeeperアンサンブルがあります[24]。
- Solrは、Apache Lucene上に構築された、高速で人気のあるオープンソースのエンタープライズ検索プラットフォームです。
- エンタープライズ検索エンジンであるApache Solrの「Cloud」エディション(v4.x以降)では、ZooKeeperは構成、リーダー選出などに使用されます[12,13]。
- Apache Sparkは、大規模なデータ処理のための統合された分析エンジンです。
- ZooKeeperを利用してリーダー選出と一部の状態ストレージを提供することで、同じZooKeeperインスタンスに接続された複数のマスターをクラスタ内で起動できます。1つが「リーダー」として選出され、残りはスタンバイモードになります。現在のリーダーがダウンした場合、別のマスターが選出され、古いマスターの状態を回復し、スケジューリングを再開します[14]。
- Apache Stormは、無料でオープンソースの分散リアルタイムコンピューティングシステムです。Apache Stormを使用すると、バッチ処理でHadoopが行ったことをリアルタイム処理で行い、無制限のデータストリームを確実に処理することが簡単になります。Apache Stormはシンプルで、任意のプログラミング言語で使用でき、非常に楽しく使用できます。
- Stormは、クラスタの調整にZookeeperを使用します[22]。
企業
- AGETO RnDチームは、内部および外部のコンサルティングプロジェクトでZooKeeperを幅広く使用しています[1]。
- ZooKeeperは、SolrおよびHadoopとHbaseを使用した内部アプリケーション開発に使用されています[1]。
- Boxは、サービス検出、サービス調整、SolrとHadoopのサポートなどにZooKeeperを使用しています[1]。
- 私たちは研究のための検索を行い、高度な検索テクノロジーを使用して高品質のコンテンツへのアクセスを提供します。Zookeeperは、サーバーの状態の管理、インデックスの展開、その他多くのタスクに使用されます[1]。
- Facebookは、構成管理にZeus([17,18])を使用しています。これは、Facebook規模で動作するように、スケーラビリティとパフォーマンスが大幅に向上したZooKeeperのフォークバージョンです。回復力のために、複数の地域に分散したサーバー間でコンセンサスプロトコルを実行します。リーダーが失敗した場合、フォロワーが新しいリーダーに変換されます。
- Idium Portalは、ノルウェーの企業であるIdium ASが提供するホスト型Webパブリッシングシステムです。
- ZooKeeperは、クラスタメッセージング、サービスブートストラップ、およびサービス調整に使用されます[1]。
- VMwareワークステーション、Amazon EC2、Zen上の2ノードクラスタでZooKeeperを使用
- zkpythonを使用
- 100ノードクラスタへの拡張を検討中[1]。
- 私たちは、クラウドコンピューティング時代のための仮想化ネットワーキングを行っています。分散コントロールプレーンのさまざまな側面でZooKeeperを使用しています[1]。
- Pinterestは、サービス検出と動的構成にZooKeeperを使用します。多くの大規模Webサイトと同様に、Pinterestのインフラストラクチャは、負荷とフォールトトレランスを管理するための多数の個々のサーバーで構成されるバックエンドサービスと通信するサーバーで構成されています。理想的には、構成にはアクティブなホストのみが反映されるようにして、クライアントが不良ホストを頻繁に処理する必要がないようにする必要があります。ZooKeeperは、この問題を解決するためのよく知られたパターンを提供します[19]。
- Email&Appsチームは、分散型電子メールクライアントでシャーディングと責任の変更を調整するためにZooKeeperを使用しています。このクライアントは、検索用にデータをプルしてインデックスを作成します。ZooKeeperは、クラスタがサーバーを圧倒するのを防ぐために、接続用の分散ロックも提供します[1]。
- SPM(ZooKeeper監視コンポーネントも含む)、検索分析、およびLogseneでZooKeeperを使用しています[1]。
- リーダー選出、構成管理、ロック、グループメンバーシップにZooKeeperを使用しています[1]。
- ZooKeeperは、Twitterで重要なメタデータを格納するための真実のソースとして使用されています。リーダー選出や分散ロックなどの分散調整サービスを提供するための調整カーネルとして機能します。実行中のZooKeeperの具体的な例を次に示します[15,16]
- ZooKeeperは、サービス検出のためにTwitterのネーミングサービスで使用されるサービスレジストリを保存するために使用されます。
- Manhattan(Twitterの社内キーバリューデータベース)、Nighthawk(シャードRedis)、Blobstore(社内写真およびビデオストレージ)は、クラスタトポロジ情報をZooKeeperに保存します。
- Twitterのpub-subメッセージングシステムであるEventBusは、重要なメタデータをZooKeeperに保存し、リーダー選出にZooKeeperを使用します。
- TwitterのコンピューティングプラットフォームであるMesosは、リーダー選出にZooKeeperを使用します。
- シャーディングサービスの一部として、データの分散同期/インデックス更新、構成管理、およびフェイルオーバーサポートとして内部で使用されます[1]。
- Wealthfrontは、多数のバックエンドサービス間でサービス検出、リーダー選出、および分散ロックにZooKeeperを使用しています。ZKは、Wealthfrontの継続的なデプロイインフラストラクチャの不可欠な部分です[1]。
- ZooKeeperは、リーダー選出、構成管理、シャーディング、ロック、グループメンバーシップなどを実行するために、Yahoo!内の多数のサービスに使用されています[1]。
- ZyngaのZooKeeperは、構成管理、リーダー選出、シャーディングなど、さまざまなサービスに使用されています[1]。
参考文献
- [1] https://cwiki.apache.org/confluence/display/ZOOKEEPER/PoweredBy
- [2] https://www.youtube.com/watch?v=Ew53T6h9oRw
- [3] https://bookkeeper.apache.org/docs/4.7.3/getting-started/concepts/#ledgers
- [4] http://cxf.apache.org/dosgi-discovery-demo-page.html
- [5] https://flume.apache.org/FlumeUserGuide.html
- [6] http://dubbo.apache.org/en-us/blog/dubbo-zk.html
- [7] https://hadoop.dokyumento.jp/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html
- [8] https://hbase.apache.org/book.html#zookeeper
- [9] https://www.cloudkarafka.com/blog/2018-07-04-cloudkarafka_what_is_zookeeper.html
- [10] http://mesos.apache.org/documentation/latest/high-availability/
- [11] http://incubator.apache.org/projects/s4.html
- [12] https://lucene.apache.org/solr/guide/6_6/using-zookeeper-to-manage-configuration-files.html#UsingZooKeepertoManageConfigurationFiles-StartupBootstrap
- [13] https://lucene.apache.org/solr/guide/6_6/setting-up-an-external-zookeeper-ensemble.html
- [14] https://spark.dokyumento.jp/docs/latest/spark-standalone.html#standby-masters-with-zookeeper
- [15] https://blog.twitter.com/engineering/en_us/topics/infrastructure/2018/zookeeper-at-twitter.html
- [16] https://blog.twitter.com/engineering/en_us/topics/infrastructure/2018/dynamic-configuration-at-twitter.html
- [17] TANG, C., KOOBURAT, T., VENKATACHALAM, P.,CHANDER, A., WEN, Z., NARAYANAN, A., DOWELL,P., AND KARL, R. Facebookでの全体的な構成管理。第25回オペレーティングシステム原則に関するシンポジウム(SOSP'15)(米国カリフォルニア州モントレー、2015年10月)の議事録。
- [18] https://www.youtube.com/watch?v=SeZV373gUZc
- [19] https://medium.com/@Pinterest_Engineering/zookeeper-resilience-at-pinterest-adfd8acf2a6b
- [20] https://blog.cloudera.com/what-are-hbase-znodes/
- [21] https://helix.apache.org/Architecture.html
- [22] http://storm.apache.org/releases/current/Setting-up-a-Storm-cluster.html
- [23] https://ci.apache.org/projects/flink/flink-docs-release-1.9/ops/jobmanager_high_availability.html
- [24] https://pulsar.apache.org/docs/en/concepts-architecture-overview/#metadata-store
- [25] https://cwiki.apache.org/confluence/display/Hive/Locking
- [26] hiveコードベースのZooKeeperHiveLockManagerの実装
- [27] https://druid.apache.org/docs/latest/dependencies/zookeeper.html
- [28] https://mapr.com/blog/apache-drill-architecture-ultimate-guide/
- [29] https://oozie.apache.org/docs/4.1.0/AG_Install.html
- [30] https://docs.spring.io/spring-xd/docs/current/reference/html/
- [31] https://cwiki.apache.org/confluence/display/CURATOR/Powered+By
- [32] https://projects.spring.io/spring-statemachine/
- [33] https://www.tigeranalytics.com/blog/apache-kylin-architecture/
- [34] https://apacheignite.readme.io/docs/cluster-discovery
- [35] http://atlas.apache.org/HighAvailability.html
- [36] http://griffin.apache.org/docs/usecases.html
- [37] https://fluo.apache.org/
- [38] https://spring.io/projects/spring-cloud-zookeeper