著者: ninetyhe、Tencent CDG バックエンド開発エンジニア 古いものを見直して新しいものを学び、優れたフレームワークを繰り返し学習すれば、必ず何かが得られます。仕事上の理由により、特別なシナリオで Kafka を使用する必要があります。週末にカフカ情報を再度読み、多くのことを学びました。 アプリケーションシナリオ
Kafka トポロジー図 (マルチコピー メカニズム)上の図から、Kafka は分散されており、パーティションごとに複数のコピーがあることがわかります。同時に、クラスター全体の管理は Zookeeper によって管理されます。 Kafka コアコンポーネントブローカKafka サーバーはメッセージの保存と転送を担当します。ブローカーは Kafka ノードを表します。ブローカーには複数のトピックを含めることができます トピックメッセージカテゴリ、Kafka はトピックに応じてメッセージを分類します パーティション
オフセット
プロデューサープロデューサー、Kafkaブローカーにメッセージを送信するクライアント 消費者メッセージ コンシューマー。Kafka ブローカーでメッセージを消費する役割を担います。 消費者団体消費者グループ。各消費者はグループに属している必要があります。 (パーティションはグループ内の 1 つのコンシューマーのみが使用でき、コンシューマー グループは相互に影響を与えないことに注意してください。) 動物園の飼育員Kafka クラスターを管理し、クラスター ブローカー、トピック、パーティションなどのメタデータの保存を担当します。また、ブローカーの障害検出、パーティション リーダーの選出、負荷分散などの機能も担当します。 サービス ガバナンス Kafka は分散パブリッシュ/サブスクライブ システムなので、クラスター間のデータ同期と一貫性が実現されれば、Kafka はメッセージを失わないのでしょうか?そして、クラッシュしたときにリーダーを選出するにはどうすればいいのでしょうか? データ同期Kafka では、パーティションにはリーダーと複数のフォロワーが存在します。プロデューサーがパーティションにデータを書き込む場合、データはリーダーにのみ書き込まれ、その後、データは他のレプリカに複製されます。各フォロワーは、定期的にリーダーにメッセージを受け取る消費者として理解できます。データが同期された後にのみ、Kafka はプロデューサーに ACK を返し、メッセージが保存されたことを通知します。 情報サービスKafka では、パフォーマンスを確保するために、マスターとスレーブのデータを同期するために強力な一貫性方式を使用しません。代わりに、同期レプリカのリストが維持されます。リーダーは、すべてのフォロワーが同期を完了するまで待つ必要はありません。 ISR 内のフォロワーがデータ同期を完了すると、プロデューサーに ack を送信し、メッセージの同期が完了したと見なすことができます。同時に、ISR 内のフォロワーがあまりにも遅れていることが判明した場合は、そのフォロワーは削除されます。 具体的なプロセスは以下のとおりです。 上記のアプローチでは、Kafka がメッセージを失わないことを保証することはできません。 Kafka は、メッセージが最大限失われないようにマルチコピー メカニズムを使用しますが、データがシステム ページ キャッシュに書き込まれているがまだディスクにフラッシュされていない場合、マシンが突然クラッシュしたり電源が失われたりすると、当然メッセージは失われます。 Kafka 障害回復Kafka は Zookeeper によって管理されるため、ここでの選択メカニズムでは Zab (Zookeeper によって使用される) が使用されます。
Kafka はなぜこんなに速いのでしょうか?ディスクへの順次書き込みKafka はシーケンシャルディスク書き込みを使用するため、ランダム書き込みに比べてアドレスの検索にかかる時間が短縮されます。 (Kafka の各パーティションでは、メッセージが順序付けられます。 ページキャッシュKafka は、通常使用するバッファの代わりに、OS システム内のページ キャッシュを使用します。ページ キャッシュは、実際には馴染みのないものではなく、新しいものでもありません。 Linux でメモリをチェックすると、バッファ/キャッシュが表示されることがよくあります。どちらも IO の読み取りと書き込みを高速化するために使用されます。キャッシュは読み取りに使用されます。つまり、ディスクの内容をキャッシュに読み込むことができるため、アプリケーションはディスクを非常に高速に読み取ることができます。バフは書き込みに使用されます。ディスクを開発して書き込む場合、通常はバッファに書き込んでからフラッシュすると非常に高速になります。 Kafka は両方の利点を活用します。Kafka は Scala で記述されていますが、Java 仮想マシン上で実行されます。それにもかかわらず、Kafka は JVM の制限を回避しようとします。ストレージにページ キャッシュを使用するため、GC による JVM 内のデータの STW を回避できます。一方、ページ キャッシュを使用すると、ゼロ コピーも実現できます。これについては、後ほど詳しく説明します。 ゼロコピー優れた Netty であれ、他の優れた Java フレームワークであれ、基本的にはゼロ コピーによって CPU コンテキストの切り替えとディスク IO を削減します。もちろんカフカも例外ではありません。ゼロコピーの概念についてはここでは詳しくは繰り返しませんが、この概念について簡単に紹介したいと思います。 アプリケーションがデータを要求する従来のプロセスここで、従来の方法では、4 つのコピー、2 つの DMA、2 つの CPU が使用され、CPU が 4 回切り替わることが大まかにわかります。 _(DMA は、簡単に言えば、I/O デバイスとメモリ間でデータが転送されるときに、すべてのデータ転送作業が DMA コントローラに引き渡され、CPU はデータ転送に関連する作業には一切関与しなくなります)。 ゼロコピー方式最適化により、CPU には 2 つのコンテキスト スイッチと 3 つのデータ コピーしかないことがわかります。 (Linux システムでは、システム コール関数「sendfile()」が提供されているため、システム コールは、カーネル バッファー内のデータをユーザー状態にコピーするのではなく、ソケット バッファーに直接コピーできます)。 パーティション分割上で述べたように、Kafka はパーティショニング モードを採用しており、各パーティションは物理セグメントに対応しており、検索時にはバイナリ検索に基づいて素早く見つけることができます。これにより、データ読み取りクエリの効率が向上するだけでなく、並列操作を行う手段も提供されます。 データ圧縮Kafka は、データに対して Gzip や Snappy などの圧縮プロトコルを提供します。これにより、メッセージ構造が圧縮され、帯域幅とデータ転送の消費が削減されます。 Kafka のインストールJDKをインストールする圧縮パッケージを使用する場合は環境変数を自分で設定する必要があるため、yum を使用して直接インストールすることをお勧めします。現在の Java バージョンを確認する方法を理解しておいてください。
必要なバージョンをインストールしてください。ここでは1.8です
インストールが成功したか確認する
Zookeeperをインストールするまず、公式サイトにアクセスしてインストールパッケージをダウンロードし、解凍する必要があります。
このファイルをコピーしてzoo.cfgという名前を付け、zoo.cfgで独自の設定を変更するだけです。
主な構成は次のように説明される。
環境変数の設定
以下は起動が成功した例です KafkaをインストールするKafkaをダウンロード https://www.apache.org/dyn/closer.cgi?path=/kafka/2.8.0/kafka-2.8.0-src.tgz Kafkaをインストールする
環境変数の設定
Kafkaを起動する
完了です! |
<<: クラウドコンピューティング業界のアップグレードを支援するH3Cがクラウドネイティブ変革に関する洞察を共有
>>: レポート: サーバーレスは多くのソフトウェアスタックの重要な部分となっている
justg は以前、100M 帯域幅の VPS を宣伝していました。そのときの特別価格は年間 19....
ビジネスの継続性を確保するために、クラウドの導入においてベスト プラクティスに従う必要がある理由につ...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています教育業界に...
木は静かになりたいのに、風は止まない。ウェブマスターたちは百度からの攻撃に次から次へと直面し、対処に...
検索エンジン スパイダーがページ コードを検索エンジン サーバーに送り返した後、SE はどのようにし...
ethelitehosting の Web サイトを開いたとき、これは愚かな人の新しい創作物だと思い...
月収10万元の起業の夢を実現するミニプログラム起業支援プラン前回の記事では、ウェブサイトがオンライン...
競争が激しいキーワードは、一般的にいくつかの大規模なサイトによってコントロールされています。中小規模...
デビューからPKまで、あらゆる動きが注目を集めている最近、複合マーケティング ソフトウェアと通常のマ...
米国のメモリアル デー期間中、dedipath はすべての VPS (1Gbps 帯域幅、無制限トラ...
ウェブサイトを構築するということは、ウェブサイトが何らかの利益をもたらすことを願うということに他なり...
12月11日、流行玩具業界の大手ポップマートがブラインドボックスの勢いに乗って株式を公開し、同社の時...
本日、全国の学生たちが正式に「クラウド登校」を迎えました。学生たちはインターネットを通じて「クラウド...
kdatacenterは主に韓国のSKデータセンターで韓国のVPSとサーバーを運営しており、1Gbp...
Dedipathは、いくつかの特別価格のサーバーを立ち上げました。[1] 256 IPのクラスターサ...