i-focus i-focus BB
    • カテゴリ
    • 最近
    • タグ
    • 人気
    • ユーザー
    • グループ
    • 登録
    • ログイン

    Apache Kafka

    Infra
    1
    1
    301
    もっと見る
    • 古いものから新しい順
    • 新しいものから古い順
    • 最高評価
    返信
    • スレッドとして返信する
    投稿するのにログインして下さい
    このスレッドが削除されました。スレッド管理権を持っているユーザーにしか読めません。
    • yuhopeY
      yuhope
      最後に編集した時間

      Apache Kafkaの概要

      Apache Kafka(アパッチ カフカ)は、JavaとScalaで書かれたオープンソースの分散ストーリーミング送受信処理基盤であり、メッセージキュー(MQ)やメッセージングシステムと似通ったソフトウェアです。ストリームデータとは、サーバのログ、ユーザの購入履歴やSNSの投稿など、様々なデータの集合のことです。
      KafkaはアメリカのビジネスSNS企業であるLinkedInで2011年頃に開発されオープンソース化されました。その後、Apacheソフトウェア財団のプロジェクトとして認められ、現在はApacheソフトウェア財団の管理下で開発が継続されています。また、LinkedInでKafkaの開発に関わった主要メンバー達はConfluentという会社を立ち上げKafkaのEnterprise向けサービスを行っています。

      Apache Kafkaの主な特徴
      Kafkaは、複数のアプリケーションやデータベース間でストリームデータの中継点として送受信をする役目を担います。耐障害のために、送信側(Producer)からのストリームデータを保存するフォールトトレラントな設計となっています。各Producerから送られてくるストリームデータはTopicと呼ばれ、Topic毎にカテゴライズされて保存されます。
      Topicの中身はrecordと呼ばれるkey-valueで構成されたデータがtimestampをもって順序立てて連続しています。受信側はConsumerと呼ばれ、KafkaはConsumer毎に決められたTopicを送信します。Kafkaは単一構成でも稼働しますが、複数のKafkaサーバを遠隔地のデータセンターに配置してクラスターを構成することも可能です。

      Kafkaには5つのコアAPIが存在します。

      ・Producer API
      送信側のアプリケーションやDBから1つ以上のopicとしてのストリームデータの配信を許可します。

      ・Consumer API
      受信側に1つ以上のTopicとしてのストリームデータの受信と処理を許可します。

      ・Steams API
      アプリケーションにストリームプロセッサーとして動作することを許可します。1つ以上のTopicとしてのストリームデータをinputストリームとして受け取り、効果的に変換してoutputストリームとして送信します。

      ・Connector API
      既存のアプリケーションやデータベースをProducerやConsumerとして、データをインポートやエクスポートすることを許可します。

      ・Admin API
       Topic、broker、およびその他のKafkaオブジェクトを管理および検査できます。

      Apache Kafkaのユースケース
      ・Messagingシステム
      Kafkaをメッセージブローカーとして利用します。Kafkaはこれまでのメッセージブローカーの代替として十分に機能します。Kafkaは高いスループット、レプリケーションとフォールトトレランス機能を備えていますので、大規模なメッセージプロセッシングシステムを構成するための良いソリューションと考えられます。この分野では、類似のソフトウェアとしてActiveMQや、RabbitMQが存在します。

      ActiveMQ
      http://activemq.apache.org/

      RabbitMQ
      https://www.rabbitmq.com/

      ・Webサイトのアクティビティトラッキング
      Kafkaは元々、Webサイトにおけるユーザのアクティビティを収集するため利用されていました。Webサイトでのユーザのアクティビティは、ページビューや検索、ユーザがサイト上で行なう様々な動作が含まれます。それらをリアルタイムにモニタリングすることや、処理を行い収集したデータをHadoopなどのシステムに送信してユーザ動向の解析を行えます。

      ・メトリックスやログの収集
      Kafkaは、各システムから送られてくるシステムのメトリックスをモニタリングするために収集する役目を担います。また、多くのユーザはKafkaをログ収集のために利用しています。この分野では、Flumeなどの類似のソフトウェアが存在します。

      Flume
      https://flume.apache.org/

      ・ストリーム処理
      Kafkaを、データプロセッシングのパイプラインとして利用します。Kafkaは送信者からデータを受け取って収集し、受信者に向け変換を行い送信します。この分野では、Apache StormやApache Samzaが類似のソフトウェアとして存在します。

      Apache Storm
      https://storm.apache.org/

      Apache Samza
      https://samza.apache.org/

      ・イベントソーシング
      Kafkaは、イベントを中心とした状態の変更が時系列の一連のレコードとして記録されるアプリケーション設計となっています。この設計はCQRSで有用で、イベントハブとして利用されます。

      ・コミットログ
      Kafkaは、分散システムの外部コミットログとして機能します。ノード間のデータ複製や障害時のデータ復元のメカニズムとしても機能し、また、トピックという概念を用いて、書き込み/読み出しを並列に行うことで、高速かつフォールトトレランスに優れた通信を実現します。

      Apache Kafkaの動作環境
      Kafkaは、下記に示すUnix系OS上で動作します。Windowsで稼働させるには、まだいくつかの問題が残っているため、現状ではWindowsはサポートされるプラットフォームには含まれていません。

      ・主要なLinuxディストリビューション
      ・Solaris
      ・macOS
      稼働させるにはJavaが必要になります。

      Apache Kafkaのライセンス
      KafkaはApacheのトップレベルプロジェクトの1つです。ライセンスはApache License 2.0となっており、ユーザはそのソフトウェアの使用や頒布、修正、派生版の頒布をすることに制限を受けません。

      Apache Kafkaの参考情報
      Apache Kafka公式サイト
      https://kafka.apache.org/

      Apache Kafka公式ドキュメント
      https://kafka.apache.org/documentation/

      Apache Kafkaエコシステムとして動作するツール一覧
      https://cwiki.apache.org/confluence/display/KAFKA/Ecosystem

      ※該当投稿は以下のURLよる転記しています。
      https://openstandia.jp/oss_info/apachekafka/

      1 件の返信 最後の返信 返信 引用 1
      • First post
        Last post