【Kafka】Apache Kafka ~ 基礎知識編 ~

■ はじめに

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で実装

https://kafka.apache.org/

もっと簡単に言うと

* システムとシステム間でストリームデータの中継役

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
ScalaApache Kafka / Producer ~
https://dk521123.hatenablog.com/entry/2023/04/27/235703
ScalaApache Kafka / Consumer ~
https://dk521123.hatenablog.com/entry/2023/04/28/014737