とてもクール! Kafka は Zookeeper を削除しました。

とてもクール! Kafka は Zookeeper を削除しました。

[[396651]]

この記事はWeChat公式アカウント「妹の味」から転載したもので、著者は妹が飼っている犬です。記事を転載する場合は、ミスシスターテイスト公式アカウントまでご連絡ください。

この機会をお祝いしましょう!最新バージョンの Kafka 2.8.0 では、Zookeeper への依存関係がなくなり、KRaft を通じて独自のクラスターを管理します。非常に良い、非常に良い、ようやく質的な変化が起こった。

KRaft と聞いたとき、私たちは Raft プロトコルを思い浮かべました。 Raft プロトコルは、現在最も人気のある分散調整アルゴリズムです。 Etcd や Consul などのシステムの基盤となります。今ではカフカにもそれが備わっている。

この機能は非常に新しいため、バージョン 2.8.0 ではデフォルトでまだ ZooKeeper が使用されていますが、試してみることを止めることはできません。また、あまり興奮しすぎないでください。一部の機能はまだ完璧ではないと公式が主張しているため、オンラインでは使用しないでください。

1. KRaft を起動するにはどうすればいいですか?

Kafka は ZooKeeper の代わりに組み込みの KRaft を使用します。これは、ES などの分散システムがクラスターのメタ情報を自己循環方式で同期するため、大きな改善です。

しかし、KRaft を使い始めるにはどうすればいいのでしょうか?多くの学生が混乱しています。この分野の情報は比較的少ないですが、使い方は非常に簡単です。

config ディレクトリの下に、kraft という新しいディレクトリがあり、そこに ZK への依存関係を直接放棄できる新しい構成ファイル セットが含まれていることに気付きました。

次の 3 行のコマンドを使用すると、ZK を介さずにスタンドアロン ブローカーを起動できます。

  1. # ./bin/kafka-storage.sh ランダムUUID
  2. # ./bin/kafka-storage.sh フォーマット -t TBYU7WMiREexuZqrjKG60g -c ./config/kraft/server.properties
  3. # ./bin/kafka-server-start.sh ./config/kraft/server.properties

しばらくパチパチ音が鳴った後、No ZK Kafka が始まりました。

とても簡単です。

2. 設定方法は?

Kafka は、このメタデータを保存するために @metadata という内部トピックを追加します。

次に、いくつかの重要な構成情報を見ていきます。主な違いを確認するには、vimdiff config/server.properties config/kraft/server.properties を使用できます。

まず、Kraft には process.roles と呼ばれる追加の構成があります。設定ファイルでは次のようになります。

  1. process.roles=ブローカー、コントローラー

実際には3つの値があります。

  • ブローカー: このマシンはブローカーとしてのみ機能します
  • コントローラー: Raftクォーラムのコントローラーの1つとして開始します
  • ブローカー、コントローラー: 両方の機能が含まれています

ES に精通している学生であれば、これらの部門が ES のマスターとノードのようなもので、分散の概念は実際にはある程度同じであることがわかります。

次のステップは、アドレスの変更を監視することです。サーバーには 2 つの機能があるため、2 つのポートを開く必要があります。

  1. リスナー=PLAINTEXT://:9092、CONTROLLER://:9093

さらに、node.id と呼ばれるものがあります。元の broker.id とは異なり、この nodeid は投票に使用されます。

  1. ノードID=1

raft プロトコルの特性上、投票構成では上記の node.id を使用する必要があります。こう書くとちょっと変な感じがしませんか?しかし、Zk のものよりはるかに優れています。したがって、これらの構成は以降のバージョンで変更される可能性があります。

  1. コントローラー.quorum.voters=1@localhost:9093

これが設定ファイルの主な違いです。そのコレクションを見てみましょう。

  1. process.roles=ブローカー、コントローラー
  2. リスナー=PLAINTEXT://:9092、CONTROLLER://:9093
  3. ノードID=1
  4. コントローラー.quorum.voters=1@localhost:9093

3. ZK を削除する必要があるのはなぜですか?

メッセージ キューとして、Kafka は実際には重量級の調整システムである ZooKeeper に依存しています。これは冗談です。また、メッセージ キューとしても、RabbitMQ は早い段階で自己管理を実現しました。

Zookeeper は非常に扱いにくく、奇数個のノードを持つクラスター構成が必要なので、容量の拡張や縮小が不便です。 Zk の設定方法も Kafka とは全く異なります。 Kafka を調整するには、別のシステムを考慮する必要があります。これは本当にひどい。

Kafka を軽量かつすぐに使える方向に発展させたいのであれば、Zk を排除する必要があります。

さらに、Zk と Kafka は同じストレージ システム内にないため、トピックとパーティションの数が増えると、データ同期の問題がより顕著になります。 Zk は信頼性が高いですが、遅いです。 Kafka のログ ストレージ システムに配置するのほど良くはありません。スピードを誇る Kafka にとって、これは回避しなければならないリンクです。

Kafka-admin を使用したことがある学生なら、監視データの同期が遅いことを鮮明に覚えているはずです。まず zk を経由してメタデータ情報を取得し、次に Kafka の JMX インターフェースからデータを取得する必要があります。このサイクルにより、大規模なクラスターがほぼ消滅しました。

4. どのような変更がありますか?

より簡単な導入。

まず、展開が容易になります。高可用性を追求しない一部のシステムでは、単一のプロセスでも優れた Kafka を実行できます。 Zookeeper 対応の SSD ディスクを申請する必要も、ZK の容量が十分かどうかを心配する必要もなくなりました。

監視がより便利になります。

第二に、情報の集中化により、zk を経由せずに Kafka から監視情報を取得することが容易になります。 Grafana/Kibana/Promethus などのシステムとの統合が間もなく始まります。

より速いスピード。

最も重要なのは、もちろんスピードです。 Raft は ZK の ZAB プロトコルよりも理解しやすく、効率的です。パーティション マスターの選択が高速化され、コントローラーのスケジューリング速度が向上します。

このようなつながりは二度と生まれないでしょう。

  1. 動物園の飼育係.接続=動物園の飼育係:2181

代わりに、ブートストラップ接続方法のみが残ります。 Kafka のノードはますますピアノードに似てきています。

  1. bootstrap.servers=ブローカー:9092

Kafka には、トピックとパーティションの分布を表示するために使用できる kafka-metadata-shell.sh というツールも用意されています。この情報は元々 zk を通じて入手できましたが、現在はこのコマンド ラインを使用して取得できます。

  1. $ ./bin/kafka-metadata-shell.sh --snapshot /tmp/kraft-combined-logs/\@metadata-0/00000000000000000000.log  
  2. >> ls /
  3. ブローカーローカルメタデータ クォーラム トピック ID トピック
  4. >> ls /トピック
  5. フー
  6. >> cat /topics/foo/0/data
  7. {
  8. 「パーティションID」 : 0,
  9. 「トピックID」 : 「5zoAlv-xEh9xRANKXt1Lbg」
  10. 「レプリカ」 : [ 1 ],
  11. "isr" : [ 1 ],
  12. "レプリカの削除" : null
  13. "レプリカの追加" : null
  14. 「リーダー」 : 1,
  15. "リーダーエポック" : 0,
  16. "パーティションエポック" : 0
  17. }
  18. >> 終了

最後に、現時点ではオンライン環境でこの機能を有効にせず、ZK のみを使用する必要があることをお知らせします。その理由は機能性にあります。これらの機能をサポートするインフラストラクチャが整備されておらず、コードが信頼できるレベルに達していないためです。使用すると、不完全なツールや難しいバグのせいで、おそらく惨めな思いをすることになるだろう。

しかし、この勇気ある第一歩はすでに踏み出され、方向性も示されており、私たちに残されたのは待つことだけです。いずれにせよ、Zk を取り除くのは良いことです。

著者について: Sister Taste (xjjdog)、プログラマーが寄り道をすることを許可しない公開アカウント。インフラストラクチャと Linux に重点を置きます。 10 年間のアーキテクチャと 1 日あたり数千億のトラフィックを基に、私たちはお客様とともに高並行性の世界を探求し、新たな体験をお届けします。私の個人WeChatはxjjdog0です。今後のコミュニケーションのために、私を友達として追加してください。

<<:  スマート交通におけるエッジコンピューティングの応用に関する簡単な分析

>>:  SaaS をサービスの観点から見ると何がわかるでしょうか?

推薦する

クラウド独占の愚かな計画

1. クラウド独占の夢物語クラウド コンピューティングの世界では、自慢する悪い習慣があります。研究開...

1gbits: 月額 15 ドル、世界中の 20 のデータセンター、サーバー + VPS、1Gbps の帯域幅、無制限のトラフィック

1gbits は、公式にはリトアニアの商人であることが示されており、ドメイン名は 年に登録され、最後...

テクノロジー企業の特許トロール戦略:低価格での買収と利益のための訴訟

テンセントテクノロジーニュース(Cambey)北京時間7月10日、外国メディアの報道によると、テクノ...

2013年江蘇省インターネット会議が12月1日に開催されました

インターネットの発展は社会の形態を変えました。オフラインからオンラインへ、実体経済から電子商取引へ、...

hostodo-$12.5/8g メモリ/300g ハードディスク/8t トラフィック/8 IP/ロサンゼルス

Hostodo の 2 つの大型 VPS が 50% 割引で販売されています。十分なメモリ、ハードデ...

ある人は早く歩きますが、ある人は遠くまで歩きます。 Amazon Web Services はどのようにしてパートナーの共同成長を可能にしますか?

[51CTO.com からのオリジナル記事]テクノロジーの普及と実装は、エコシステムの協調的な取り組...

SDN と 5G が出会うと、どのような火花が散るでしょうか?

SDN は、従来の IP ネットワークに大きな変化をもたらします。これは、3 つの側面で IP ネッ...

フォーラム訪問者をメンバーに変える5つのステップ

現在、多くのフォーラムにはトラフィックがありますが、フォーラムはアクティブではありません。率直に言え...

電子商取引に欠かせないヒント: Taobao 検索の完全分析

著者: 陳 燕タオバオ検索に関する「体験談」は数多く出回っていますが、その多くはブラックハットで、近...

ハイパーコンバージェンス?クラウドネットワーク統合?統合に関する考察

[[405083]]この記事はWeChatの公開アカウント「zartbot」から転載したもので、著者...

H3C: ABC の緊密な統合により企業のデジタル変革を強化

[51CTO.comより引用] 2019年12月16日、中国電子技術標準化協会主催の「第9回中国クラ...

カフカを理解するのに役立つ9つの写真

現在、あらゆる企業がインターネット システムで Kafka を使用しています。 Kafka は、分散...

ウェブマスターが検索エンジンの変更からガイダンスのアイデアを得る方法

今日、検索エンジンに新しいウェブサイトを申請しました。このウェブサイトの誕生は、私が慎重に検討した結...

エッジコンピューティングは IoT の未来に対するソリューションとなるでしょうか?

モノのインターネットは、インターネット技術を日常生活に統合する劇的な発展を目の当たりにしてきました。...

Kubernetes が優れている理由は何ですか?

[[225472]]私が初めて Kubernetes について学び始めたとき (約 1 年半前?)、...