8

私はApache ZooKeeper (「ZK」) が解決する問題の種類を正確に理解しようとしています。おそらく、ZK のレシピ ページから始めるのが最適です。

まず、次の仮定を立てています。

  • ZooKeeper API (Java と C の両方で利用可能) は、これらの 7 つの単純なメソッドを公開し、「ZK レシピ」として知られる独自の使用パターンを構築できるようにします。
  • これらの ZK レシピを使用して、分散プログラミングの問題を自分で解決するのはあなた次第です。
  • または、独自の ZK レシピを作成する代わりに、 Apache Curatorに同梱されているレシピを使用することもできます。
  • いずれにせよ、分散コンピューティングの問題を解決するために ZK Recipes (ここでも自家製または Curator によって提供されます) を使用しています。

私は、 Apache Kafkaがこの例であると考えています。Kafka は ZK を使用して分散キュー(リストされている ZK レシピの 1 つ) を作成します。したがって、私の仮定が正しければ、ZK はこれらの API メソッドを公開し、Apache Kafka の作成者は ZK を直接使用するか、Curator を使用して「キュー」ZK レシピを実装しました。

上記の仮定のいずれかが間違っている場合は、まず修正してください。私が多かれ少なかれ順調に進んでいると仮定します:

ZK レシピのリストを見ると、次のように表示されます (すべてを網羅しているわけではありません)。

  • 障壁
  • ロック
  • リーダー選挙

これらのレシピとそれらが提示する解決策を理解するためには、まずそれらが解決する問題を理解する必要があります! 基本的なJavaの同時実行性からロックが何であるかは理解していますが、「分散ロック」が必要になる場合のユースケースを見ていません。選挙をリードするために、最初にそれを必要とするユースケースとして私が考えることができるのは、組み込みのマスター/スレーブまたはプライマリ/セカンダリ機能を搭載して出荷したいアプリケーションを構築している場合だけです。おそらくその場合、ZK を使用して独自の「リーダー選出」レシピを実装するか、キュレーターのリーダー ラッチをすぐに使用することができます。バリアに関しては、ロックとどう違うのかわかりません。だから私は尋ねます:

  • 私のマスター/スレーブまたはプライマリ/セカンダリの問題は、ZK のリーダー選出レシピの正確な使用例ですか?
  • 分散ロックの例は何ですか? どのような問題を解決しますか?
  • バリアについても同様です。ロックとバリアの違いは何ですか?
4

1 に答える 1

8
  1. はい。あなたの Zk のリーダー選出レシピの例は正しいものです。一般に、レシピが既に存在する場合、なぜそれを書き換えるのでしょうか?

Zookeeper ドキュメントの引用:

ZooKeeper は、構成情報の維持、命名、分散同期の提供、およびグループ サービスの提供を行うための集中型サービスです。

  1. 分散ロックについて - すべての構成が Zookeeper に保存され、複数のエンティティが特定の構成の更新を担当する分散システムがあるとします。このような場合、構成の更新を同期させたいと考えます。

  2. バリアに関しては、私は個人的にそれらを使用したことはありませんが、ロックを使用すると、ノードで実際に何かを行うためにロックを取得する必要があります。バリアは解放されるまで待機しますが、解放されたらバリアを設定する必要はありません。

于 2015-06-17T13:55:46.077 に答える