分散サービス登録-Zookeeper

1.Zookeeper構成ファイル

  • tickTime:クライアント/サーバー通信時間
  • 説明:ハートビートを維持するためのZookeeperサーバー間、またはクライアントとサーバー間の時間間隔。つまり、ハートビートはtickTimeごとに送信されます。tickTimeはミリ秒単位で、
  • initLimit:リーダー-フォロワーの初期通信時間制限
  • 説明:クラスター内のフォロワーサーバーとリーダーサーバー間の初期接続中に許容できるハートビートの最大数(tickTimesの数)。時間はinitLimitxですtickTime
  • syncLimit:リーダー-フォロワー同期通信時間制限。
  • 説明:クラスター内のフォロワーサーバーとリーダーサーバー間の初期化後、要求と応答の間で許容できるハートビートの最大数(tickTimesの数)。時間はinitLimitxですtickTime
  • dataDir:データファイルディレクトリ、
  • 説明:Zookeeperがデータを保存するディレクトリ。デフォルトでは、Zookeeperはこのディレクトリにデータを書き込むためのログファイルも保存します。
  • clientPort:クライアント接続ポート
  • :クライアントがZookeeperサーバーに接続するポート。Zookeeperはこのポートをリッスンし、クライアントのアクセス要求を受け入れます。
  • 服务器名称与地址:クラスター情報(サーバー番号、サーバーアドレス、LF通信ポート、選出ポート)
  • :この構成アイテムの書き込み形式は特別であり、ルールは次のとおりです。server.N= YYY:A:B
  • maxClientCnxns:クライアントの接続制限の場合、デフォルトは60で、ほとんどの場合これで十分です。しかし、実際の使用では、テスト環境でこの数を超えることが多いことがわかりました。調査の結果、テストを容易にするために1台のマシンに数十のアプリケーションをデプロイしたチームがあったため、この数を超えました。
  • autopurge.snapRetainCountautopurge.purgeInterval:-クライアントはzookeeperとの対話中に多くのログを生成し、zookeeperはデータをスナップショットとしてメモリに保存します。これらのデータは自動的に削除されないため、ディスク内のデータはMoreになります。もっと。ただし、これら2つのパラメーターを設定して、zookeeperがデータを自動的に削除できるようにすることができます。
  • 説明:autopurge.purgeIntervalは、1回のクリーンアップにかかる時間を設定します。また、autopurge.snapRetainCountは、保持するスナップショットの数を設定し、前のスナップショットを削除します。
  • 分散インストール
# server.A=B.C.D
server.1=itcast05:2888:3888
server.2=itcast06:2888:3888
server.3=itcast07:2888:3888
  • パラメータの解釈:
  • Aは番号で、どのサーバーがこの番号であるかを示します
  • BはこのサーバーのIPアドレスです
  • Cは、このサーバーがクラスター内のリーダーサーバーと情報を交換するためのポートです。
  • Dは、クラスター内のリーダーサーバーがハングアップした場合に、新しいリーダーを再選して選択するためのポートが必要であることを意味します。このポートは、選出を実行するために使用され、サーバーが相互に通信するためのポートです。
  • myidファイルはZookeeperのデータディレクトリの下に作成され、各サーバーのmyid値が1番目:1、2番目:2、3番目:3などに設定されます。Zookeeperはセカンダリファイルの読み取りを開始します。データをzoo.cfgの構成情報と比較して、どのサーバーであるかを判別します。
  • myidの値は、server.Aの値です。zoo.cfgファイルで定義されている項目A。Zookeeperは、起動時にこのファイルを読み取り、内部のデータをzoo.cfgの構成情報と比較して、サーバーを判別します。識別機能。

2. Zookeeperの選出メカニズム、

2.1、メカニズムの半分

  • クラスター内のマシンの半分以上が存続し、クラスターが使用可能であるため、Zookeeperは奇数のサーバーをインストールするのに適しています。
  • Zookeeperは構成ファイルでマスターとスレーブを指定しませんが、Zookeeperが機能する場合、1つのノードがリーダーで、他のノードがフォロワーです。リーダーは、内部選択メカニズムによって一時的に生成されます。
    ここに画像の説明を挿入します
  • 5つの動物園管理サーバーがあり、1つは起動時に起動し、最初のサーバーが起動すると投票を開始するとしますが、投票できるのは自分だけ(<3)なので、リーダーになることはできません。投票できないIDが大きいサーバーにしか投票できないため、3番目のサーバーが起動すると、最初の2つのサーバーからの投票の半分以上が追加され、3番目のサーバーがリーダーになります。リーダーが決定されている限り、背後にあるサーバーはフォロワーにしかなれません。

3.ノードのタイプ

3.1、永続的

  • 永続ノードディレクトリ:クライアントとサーバーが切断された後、作成されたノードは削除されません
  • 永続シーケンス番号ディレクトリノード:クライアントがZookeeperから切断した後もノードは存在しますが、Zookeeperはノード名に連番を付けます(:znodeの作成時にシーケンス識別子を設定すると、値とシーケンス番号がznodeに追加されますnameは単調に増加するカウンターであり、親ノードによって維持されます)
  • :分散システムでは、シーケンス番号を使用してすべてのイベントをグローバルにソートできるため、クライアントはシーケンス番号からイベントのシーケンスを推測できます。たとえば、どのサーバーが最初に起動するか、どのサーバーに問題があるかなどです。 。

3.2。エフェメラル

  • 一時ディレクトリノード:クライアントとサーバーが切断された後、作成されたノードは自動的に削除されます。
  • ディレクトリノードの一時的な連番:クライアントとサーバーが切断された後、作成されたノードは自動的に削除されます。Zookeeperだけがノード名に連番を付けます。

4.クライアントシェルコマンド

  • ls /:ビューノード
  • ls2 / :ノードの詳細を表示
  • get path:ノードの値を表示する
  • create -e path :一時ノードを作成します
  • create -s path:シーケンス番号ノードを作成します
  • set path data:ノードの値を変更します
  • get path data watch:ノードの特定の値の変化を監視します
  • ls path watch:ノード変更の監視(パス)
  • delete path:ノードを削除
  • rmr path:ノードを再帰的に削除する

5.塩の構造

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

6.監視の原則

ここに画像の説明を挿入します

7.データ書き込みプロセス

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/JISOOLUO/article/details/105754390