■ はじめに
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
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 ~ Strimzi ~
https://dk521123.hatenablog.com/entry/2023/05/08/000133
Apache Kafka ~ 設定値 ~
https://dk521123.hatenablog.com/entry/2023/05/28/151212
Kafka Connect ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/04/29/185133
Kafka Connect ~ 基本編 / PostgreSQL ~
https://dk521123.hatenablog.com/entry/2023/05/02/233806
Amazon MSK ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/04/21/000000
Amazon MSK ~ 基本編 / Connector ~
https://dk521123.hatenablog.com/entry/2023/05/20/003516
Apache Flink ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/03/01/235100
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