「Apache Kafka」の主な特徴として、「Pull型(Publish-Subscribeモデル)」「高速大量処理」「高可用性」「スケーラブル」「ストリームデータ格納構成」「3つのコンポーネント」「4つのコアAPI」「メッセージング保証」「分散型ストレージシステム」「可視化ツール(Trifecta)」「TCPプロトコルベース」「開発用ライブラリ」について紹介します。

「Apache Kafka」の主な特徴

「Apache Kafka」の主な特徴として、「Pull型(Publish-Subscribeモデル)」「高速大量処理」「高可用性」「スケーラブル」「ストリームデータ格納構成」「3つのコンポーネント」「4つのコアAPI」「メッセージング保証」「分散型ストレージシステム」「可視化ツール(Trifecta)」「TCPプロトコルベース」「開発用ライブラリ」について紹介します。

■関連する比較ページ

「Apache Kafka」の主な特徴

■Pull型(Publish-Subscribeモデル)

一般的なクライアントサーバモデルにおいて、クライアントがサーバにデータを取りに行くことを「Pull」、サーバがクライアントへデータを送り出すことを「Push」といいます。

メッセージシステムにおいては、「サーバ=Producer」「クライアント=Consumer」と呼ばれます。

Apache Kafkaは、Pull型(Publish-Subscribeモデル)を採用しています。

Pull型であることの主なメリット

・データ転送量などを意識する必要がない
・自らスループット調整できる
・バッチ処理にも対応できる
・複数サーバが生成するログを1箇所にまとめておく処理が可能 など

■高速大量処理

Apache Kafkaは、大量のメッセージを高速処理できます。

「カーネルメモリキャッシュを最大限使用する」「ページキャッシュからネットワークのsocketへ効率よくデータを受け渡す」などの仕組みにより高速処理を実現しています。

LinkedInのベンチマークでは、「1秒間で200万メッセージ処理」を達成しています。低スペックのハードウェアでも、数ミリ秒の遅延で「1秒間で数十万メッセージ処理」が可能です。

■高可用性

Apache Kafkaは、分散環境運用コーディネーションエンジン「Apache ZooKeeper」を動かして、複数のKafkaサーバを連携させてクラスタ化します。クラスタ化により耐障害性/高可用性を実現します。

以下の仕組みによりデータ損失を防ぎます。
・データストリームを分散レプリケートフォールトトレラントクラスタに安全に保管
・メッセージはディスクにファイルとして保存 など

■スケーラブル

Apache Kafkaは、Kafkaクラスタをダウンタイムなしで、柔軟かつ透過的に拡張できます。

■ストリームデータ格納構成

Kafkaは、1つ以上のサーバ上でクラスタとして実行されます。

Kafkaクラスタは「トピック」と呼ばれるカテゴリにストリームレコードを格納します。

各「ストリームレコード」は、「キー」+「値」+「タイムスタンプ」で構成されます。

■3つのコンポーネント

Apache Kafkaは、「Producer→Broker→Consumer」の、3つのコンポーネントで構成されます。

Producer

「Producer」は、メッセージデータ発生元で、メッセージの配信を行います。

Broker

「Broker」は、クラスタを構成するKafkaのコアで、「Producer」と「Consumer」の間で、メッセージの受け渡しをするキューとして機能します。

Consumer

「Consumer」は、メッセージデータ配信先で、メッセージの購読を行います。

■4つのコアAPI

Kafkaには4つのコアAPIがあります。

Producer API

Producer APIは、アプリケーションが1つ以上のKafkaトピックにストリームレコードを公開する機能を提供します。

Producer APIは、ロードバランスを取るために「ラウンドロビン方式」または「セマンティックパーティション関数」に従ってトピック内のどのパーティションに割り当てるのかについて選択します。

Consumer API

Consumer APIは、アプリケーションが1つ以上のトピックをサブスクライブし、トピックに格納されているストリームレコードを処理する機能を提供します。

Consumerインスタンスは「別々のプロセス」または「別々のマシン」に配置できます。

すべてのConsumerインスタンスが同じコンシューマグループに属する場合、ストリームレコードはConsumerインスタンスに対して実質的に負荷分散されます。

すべてのConsumerインスタンスが異なるConsumerグループに属する場合は、各ストリームレコードはすべてのConsumerインスタンスにブロードキャストされます。

Streams API

上記の、Producer APIとConsumer APIを使用すれば、単純なストリーム処理を直接実行できます。しかし、変換処理が必要となる複雑なケースの場合、Streams APIを使用することで対応できます。

Streams APIは、入力トピックから連続的なストリームレコードを取り出し、この入力に対して「集約」「結合」「変換」などの処理を行い、トピックを出力するための連続したストリームレコードを生成する機能を提供します。

例えば、小売りアプリケーションの場合では、「販売」および「出荷」の入力ストリームを受け取り、これらのデータに対して並べ替えや価格調整された出力ストリームを生成できます。

Connector API

Connector APIは、既存アプリケーション/データシステムに対して、Kafkaトピックを接続する機能を提供します。

■メッセージング保証

Apache Kafkaでは、メッセージング保証を提供しています。

①メッセージ送信順

Producerによって特定のトピックパーティションに送信されたメッセージは、送信された順序で追加されます。

②メッセージ取得順

Consumerインスタンスは、ログに格納されている順序でレコードを表示します。

③Consumerプロセスのプール全体での発注保証と負荷分散

トピック内の並列性により、Kafkaは、Consumerプロセスのプール全体での発注保証と負荷分散の両方を提供できます。

これは、トピック内のパーティションをConsumerグループ内のConsumerに割り当てることによって実現され、各パーティションはグループ内のConsumerによって消費されます。これにより、Consumerがそのパーティションの唯一の読者であることを保証し、データを順番に消費します。

■分散型ストレージシステム

Kafkaに書き込まれたデータはディスクに書き込まれ、耐障害性のために複製されます。

そのため、Apache Kafkaは、「高性能」「低レイテンシ」「コミットログストレージ」「レプリケーション」「伝播専用」などの特徴を持つ「分散型ストレージシステム」と捉えることもできます。

■可視化ツール「Trifecta」

可視化ツール「Trifecta」を利用すると、「Kafkaトピック」や「Kafkaメッセージ」などについて可視化できます。

■TCPプロトコルベース

Apache Kafkaでは、クライアント/サーバ間通信は、シンプルで高性能な言語に依存しないTCPプロトコルで行われます。

■開発用ライブラリ

Kafkaは多くの言語に対応する開発用ライブラリを用意されています。

Apache Kafka最新TOPICS

【OSS】分散ストリーミングプラットフォーム「Apache Kafka 1.0.0」リリース---エンタープライズレベルの拡張性と信頼性の強化、各種性能改善(2017年11月07日 11:03)

Kafka開発チームは、11月1日、 分散ストリーミングプラットフォーム「Apache Kafka 1.0.0」を発表した。 【「Apache Kafka」とは】 https://www.ossnews.jp/oss_info/Apache_Kafka 【1.0.0のポイント】 ・企業での利用に向けた拡張性と信頼性の強化 ・性能改善 ・JBODサポート改善 ・安定性強化

Apache Kafka最新CLOSEUPコラム

イベント情報

セミナー講演資料

無料資料プレゼント

2021/03/04 セキュリティDAYS Keyspider資料

講演資料を見るには、 プライバシーポリシーに同意して、送付先メールアドレスをご入力しご請求ください。

またご入力いただきました情報は、当該資料の作成・提供企業とも共有させていただき、当社及び各社のサービス、製品、セミナー、イベントなどのご案内に使用させていただきます。

本資料を見るには次の画面でアンケートに回答していただく必要があります。



セミナー講演資料公開中

注目のDB技術「HTAP」とは? ~手軽に、かつ高速に、リアルタイム分析を実現する方法~

上からも下からもプレッシャー中間管理職の「悩み」をデータの視点で解決 〜タイムリーなデータ活用、円滑な状況共有を導く分かりやすいデータストーリーとは〜

データ活用におけるクレンジングの課題 〜「データ連携ツールを使っても非エンジニアには負担」の解決策〜

  • オープソース書籍(サイド)
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter