■ はじめに
https://dk521123.hatenablog.com/entry/2023/04/23/235534
https://dk521123.hatenablog.com/entry/2023/04/24/153846
の続き。 前回・前々回で、いきなり、Apache Kafka環境を構築したが、 もともとは、仕事で、ストリーミングデータを扱うものなのかなー ってことだけで、全体構成など分かっていない部分が多く、 ざっくりでも分かっていないと、仕事にならなくなりそうなので Apache Kafkaについて、調べてみた。
目次
【1】Kafka 1)解説動画 2)Github 【2】Kafka を使うことによる利点 【3】用途(Use case) 1)実績 【4】特徴 1)スケールアウト 2)レプリケーション 3)メッセージの送達保障 4)過去のデータを遡って再取得
【1】Kafka
* LinkedIn社で開発された分散ストリーミングプロットフォーム (A distributed streaming platform) * JavaとScalaで実装
もっと簡単に言うと
* システムとシステム間でストリームデータの中継役
1)解説動画
* さくっと知りたい場合、倍速でもいいので 以下をみておくといいかも。
https://youtu.be/84DAkzetyRk?t=26
https://youtu.be/FJZeaY3n5CY?t=58
2)Github
* Kafka のコード
https://github.com/apache/kafka/blob/2.8/core/src/main/scala/kafka/Kafka.scala
【2】Kafka を使うことによる利点
* メッセージを中央集中管理することでシステムを疎結合に保つ(※1) * データ流量の急激な増加によるシステム負荷を抑制
※1:疎結合 (loose coupling)
* 細分化された個々のコンポーネント同士の結びつきが比較的緩やかで、 独立性が強い状態のこと
【3】用途(Use case)
* 複数コンポーネントで形成されているシステムであれば 何でも使えるっちゃー使える => 金融、流通などで利用
1)実績
https://kafka.apache.org/powered-by
より抜粋 * LinkeIn ... まーもともと作っているし * Twitter * Netflix * Uber => Paymentシステムでも使用
https://www.youtube.com/watch?v=5TD8m7w1xE0&t=441s
日本の企業だと...
* Line
【4】特徴
https://youtu.be/84DAkzetyRk?t=436
より抜粋 1)スケールアウト 2)レプリケーション 3)メッセージの送達保障 4)過去のデータを遡って再取得
1)スケールアウト
* サーバ台数を増やして、全体の性能を上げることが可能
2)レプリケーション
* 耐障害に備えて、データを複数サーバに複製される
3)メッセージの送達保障
* メッセージが正しく送受信したかを確認できる
補足:配信品質(Quality of Sevice;QoS)
# | QoS Type | Japanese | Memo |
---|---|---|---|
1 | At Least Once | 最低1回は配信 | Kafkaのデフォルトの配信品質 |
2 | At Most Once | 最大1回の配信 | |
3 | Exactly Once | 正確に1回の配信 | Kafkaのトランザクション機能により実現 |
4)過去のデータを遡って再取得
* データの再処理が必要な場合、 過去を遡って再取得、再処理可能
参考文献
https://www.imagazine.co.jp/apache-kafka-01/
https://qiita.com/sigmalist/items/5a26ab519cbdf1e07af3
関連記事
Apache Kafka ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/23/235534
Apache Kafka ~ 環境構築 / Docker compose編 ~
https://dk521123.hatenablog.com/entry/2023/04/24/153846
Docker compose で Kafka構築時に Topic を作るには
https://dk521123.hatenablog.com/entry/2023/07/22/145643
Apache Kafka ~ Remote debug ~
https://dk521123.hatenablog.com/entry/2023/10/23/125909
Apache Kafka ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/05/01/000000
Apache Kafka ~ Kafkaコマンド ~
https://dk521123.hatenablog.com/entry/2023/05/16/000000
Apache Kafka ~ Consumer ~
https://dk521123.hatenablog.com/entry/2023/10/17/235420
Apache Kafka ~ Strimzi ~
https://dk521123.hatenablog.com/entry/2023/05/08/000133
Apache Kafka ~ Web UI / Kafdrop編 ~
https://dk521123.hatenablog.com/entry/2023/07/30/174239
Apache Kafka ~ Web UI / kafka-ui編 ~
https://dk521123.hatenablog.com/entry/2023/07/31/000152
Apache Kafka ~ 設定値 ~
https://dk521123.hatenablog.com/entry/2023/05/28/151212
Kafka Connect ~ 環境構築 / Docker compose編 ~
https://dk521123.hatenablog.com/entry/2023/08/11/220921
Kafka Connect ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/04/29/185133
Kafka Connect ~ 基本編 / PostgreSQL ~
https://dk521123.hatenablog.com/entry/2023/05/02/233806
Kafka Connect ~ Connector 構成プロパティ ~
https://dk521123.hatenablog.com/entry/2023/06/02/011131
Kafka Connect ~ Rest API ~
https://dk521123.hatenablog.com/entry/2023/05/31/000000
Kafka Connect での デバッグ方法
https://dk521123.hatenablog.com/entry/2023/08/15/215636
Kafka Connect ~ DB/Schema切替 ~
https://dk521123.hatenablog.com/entry/2023/10/26/235951
Amazon MSK ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/04/21/000000
Amazon MSK ~ 基本編 / Connector ~
https://dk521123.hatenablog.com/entry/2023/05/20/003516
Amazon MSK ~ AWS CLI ~
https://dk521123.hatenablog.com/entry/2023/06/03/003941
Kafkaコネクタ ~ Kafka用Snowflakeコネクタ ~
https://dk521123.hatenablog.com/entry/2023/06/07/144114
kafka-python ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/10/24/000309
ローカル環境のKafkaでのトラブル
https://dk521123.hatenablog.com/entry/2023/10/19/210341
Terraform ~ AWS MSK ~
https://dk521123.hatenablog.com/entry/2023/05/14/122215
Terraform ~ AWS MSK Connect ~
https://dk521123.hatenablog.com/entry/2023/05/25/000000
Apache Flink ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/03/01/235100
Apache Flink ~ Streaming vs Batch ~
https://dk521123.hatenablog.com/entry/2023/07/02/142843
Scala ~ Apache Kafka / Producer ~
https://dk521123.hatenablog.com/entry/2023/04/27/235703
Scala ~ Apache Kafka / Consumer ~
https://dk521123.hatenablog.com/entry/2023/04/28/014737