すべての組織は、データの観点から非常にシンプルな方法で開始します。 組織のデータエコシステムは、1つのソースシステムと1つのターゲットから始まります。 ソース・システムがターゲット・システムにデータを送信します。 簡単だろ?
それだけの単純さが残るのなら。 組織は、シンプルなセットアップをすぐに拡張し、ソース・システムとターゲット・システムの数が急速に増加します。 これらの様々なソースや宛先はすべて、互いにデータを交換する必要があり、すぐに非常に複雑になります。
例えば、組織に4つのソースと6つの宛先があり、これらのアプリケーションがすべて互いに通信する必要がある場合、24の統合を構築する必要があります。これらの統合には、それぞれ独自の困難が伴います。
さらに、ソース・システムを宛先システムに接続するたびに、その接続からのシステムの負荷が増加します。
どうやって解決するの? Apache Kafkaが登場します Apache Kafkaを使用すると、共通の高スループットの分散メッセージングシステムを提供することで、組織でデータストリームとシステムを切り離すことができます。 ソースシステムはデータをApache Kafkaに送信し、宛先システムはApache Kafkaのデータを使用します。
ビジネスでは、以下の管理が必要なデータソースのあらゆるタイプを考えてみましょう。
また、あらゆるタイプの宛先が、ビジネスがエコシステムで使用する場合、それらのソースシステムからのデータが必要になる可能性があることを考えてみましょう。
Apache KafkaはLinkedInが創作し、現在は主にComfluentが管理するオープンソースプロジェクトです。
Apache Kafkaは、耐障害性に優れた分散型の耐障害性アーキテクチャを提供します。 100台のブローカーに対して水平方向に拡大し、1秒あたり数百万件のメッセージに拡大できます。 リアルタイムの使用例に最適な、10 ms未満の待ち時間で高いパフォーマンスを提供します。
2つの使用例を次に示します。
例:
これらすべての使用例で、Kafkaは輸送メカニズムとしてのみ使用されます。 Kafkaは、アプリケーション間でデータを移動するのが得意です。
メッセージとは、システムによってKafkaに送信される通信のことです。 メッセージにはペイロードが含まれ、ペイロードにはデータ要素が含まれます。 例えば、WebサイトによってAdobe Experience Platformに送信されるエクスペリエンスイベントは、メッセージと見なされます。
トピックは、データベース内のテーブルに似た、特定のデータストリームです。 必要な数のトピックを含めることができ、トピックは名前で識別されます。 トピックはパーティションに分割されます。 各パーティションは順序付けされ、パーティション内の各メッセージは増分IDを取得します。このIDはoffsetと呼ばれます。 メッセージは、トピック内のパーティションに格納され、オフセットを使用して参照されます。 メッセージは、一定の期間のみ保持されます(デフォルトは1週間)。 メッセージがパーティションに書き込まれると、もう変更できなくなります。
ブローカーは、サーバーに似ています。 Kafkaクラスタは、複数のブローカ(サーバ)で構成されます。 各ブローカーはIDで識別され、特定のトピック・パーティションを含みます。
カフカは分散システムです 分散システムの重要な点の1つは、データが安全に保存され、レプリケーションが必要であることです。 結局、あるブローカー(サーバー)がダウンした場合でも、別のブローカー(サーバー)は、ダウンしたブローカーに最初に保存されたメッセージにアクセスできるはずです。 複数のブローカー間でメッセージのコピーを作成して、データが失われないようにします。
データはどのようにKafkaに送信されますか? それがプロデューサーの役割だ。 プロデューサは、ソース・システムに接続し、ソース・システムからデータを取り出し、そのデータをパーティションに書き込む。 Kafkaクラスターの設定に基づいて、プロデューサーは書き込むブローカーとパーティションを自動的に知ることができます。 複数のブローカーとレプリケーション戦略を備えた分散システムでは、プロデューサーは複数のブローカーに対してランダムにデータを格納します。つまり、ロードバランシングは自動的に行われます。
プロデューサーは、メッセージと共にキーを送信することを選択できます。 キーには、任意の文字列、数値などを指定できます。 キーが指定されない場合、メッセージはブローカーにランダムに送信されます。 キーが送信された場合、そのキーのすべてのメッセージは常に同じパーティションに送信されます。 メッセージキーなどは、特定のフィールドに基づいてメッセージを並べ替えるために使用します。
コンシューマーはApache Kafkaトピックからデータを読み取り、そのデータを宛先システムと共有します。 消費者は、読み取るブローカーを知っている。 データは、各パーティション内で順に消費者によって読み取られます。 消費者は、消費者グループのデータを読み取ります。
ZooKeeperは基本的に、階層型のキー値ストアを提供する分散システム向けのサービスで、大規模な分散システム向けの分散構成サービス、同期サービス、および命名レジストリを提供するために使用されます。 Apache Kafkaを使用する前にZookeeperを実行する必要があり、ZookeeperはKafkaの儀式のマスターのようなもので、Kafkaがイベントを生成し消費しながらバックエンドで分散サービスを管理します。
この練習は終わりました。
次の手順:24.2 Kafkaクラスターをインストールして設定します