-
1. Kafka๋?
-
2. Kafka ์ํคํ ์ฒ
-
1. Producer(์์ฐ์)
-
2. Broker(๋ธ๋ก์ปค)
-
3. Topic(ํ ํฝ)
-
4. Partition(ํํฐ์ )
-
5. Consumer(์๋น์)
-
6. Consumer Group(์๋น์ ๊ทธ๋ฃน)
-
7. Zookeeper
-
3. Kafka ๋ฉ์ธ์ง ์ ์ฅ & ์ ์ก ๋ฐฉ์
-
1. ๋ฉ์์ง ์ ์ฅ ๋ฐฉ์
-
2.๋ฉ์์ง ์ ์ก ๋ณด์ฅ(Delivery Guarantees)
-
4. Kafka ํ์ฉ ์ฌ๋ก
-
1. ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
-
2. ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ(MSA)
-
3. ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ
Apache Kafka
๋ ๋ถ์ฐ ์คํธ๋ฆฌ๋ฐ ํ๋ซํผ์ผ๋ก, ๋๊ท๋ชจ ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ฉ์์ง ๋ธ๋ก์ปค ์ญํ ์ ํ๋ค.
Kafka๋ ๋์ ํ์ฅ์ฑ, ๋ด๊ฒฐํจ์ฑ(fault tolerance), ๋์ ์ฒ๋ฆฌ๋์ ์ ๊ณตํ๋ฉฐ, ๊ธฐ์
์ ๋ก๊ทธ ์ฒ๋ฆฌ, ์ด๋ฒคํธ ์คํธ๋ฆฌ๋ฐ, ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ ๋ฑ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ค.
1. Kafka๋?
- ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ณ ์์ ์ ์ผ๋ก ์ก์์ ํ๊ธฐ ์ํ ๋ถ์ฐ ๋ฉ์์ง ์์คํ
- Pub/Sub(๋ฐํ-๊ตฌ๋ ) ๋ชจ๋ธ ๊ธฐ๋ฐ์ ๋ฉ์์ง ๋ธ๋ก์ปค
- ์ด๋ฒคํธ ๊ธฐ๋ฐ ์์คํ ๊ตฌ์ถ ๊ฐ๋ฅ
- ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ์ฒ๋ฆฌ ๋ฐ ๋น๋๊ธฐ ๋ฉ์์ง ํ๋ก ํ์ฉ
2. Kafka ์ํคํ ์ฒ
1. Producer(์์ฐ์)
- Kafka์ ๋ฉ์์ง๋ฅผ ์ ์กํ๋ ์ญํ
- ๋ฉ์์ง๋ฅผ Topic์๊ฒ ๊ฒ์(Publish) ํจ
acks
์ค์ ์ผ๋ก ๋ฉ์์ง ์ ์ก ๋ณด์ฅ ์์ค ์กฐ์ ๊ฐ๋ฅ (acks=0, 1, all
)
2. Broker(๋ธ๋ก์ปค)
- Kafka ํด๋ฌ์คํฐ ๋ด์ ๊ฐ๋ณ ์๋ฒ
- ๋ฉ์์ง๋ฅผ ์ ์ฅํ๊ณ , ์๋น์์๊ฒ ์ ๋ฌํ๋ ์ญํ
- ์ฌ๋ฌ ๊ฐ์ Broker๋ก ๊ตฌ์ฑ๋์ด ๋ถ์ฐ ์ํคํ ์ฒ ์ง์
3. Topic(ํ ํฝ)
- Kafka์์ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ ๋ ผ๋ฆฌ์ ๋จ์
- ์ฌ๋ฌ Producer๊ฐ ๋์ผํ Topic์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์
- ํํฐ์ (Partition) ๋จ์๋ก ๋ฉ์์ง๊ฐ ์ ์ฅ๋๋ค.
4. Partition(ํํฐ์ )
- Topic์ ์ฌ๋ฌ ๊ฐ์ ํํฐ์ ์ผ๋ก ๋๋์ด ์ ์ฅํ๋ค.
- ๊ฐ ํํฐ์ ์ ๋ก๊ทธ(append-only log) ๊ตฌ์กฐ๋ก ์ ์ฅ๋๋ค.
- ์ฌ๋ฌ Consumer๊ฐ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅํ์ฌ ์ฑ๋ฅ ํฅ์
5. Consumer(์๋น์)
- Kafka์์ ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ๊ฐ๋ ์ญํ
- ํน์ Topic์ ํํฐ์ ์ ํ ๋น๋ฐ์ ๋ฉ์์ง๋ฅผ ์ฝ์
- Consumer Group์ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌ ์ฒ๋ฆฌ ๊ฐ๋ฅ
6. Consumer Group(์๋น์ ๊ทธ๋ฃน)
- ์ฌ๋ฌ Consumer๊ฐ ํ๋์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ฌ ๋ก๋ ๋ฐธ๋ฐ์ฑ ๊ฐ๋ฅํ๋ค.
- ๊ฐ์ ๊ทธ๋ฃน ๋ด Consumer๋ ์๋ก ๋ค๋ฅธ Partition์ ํ ๋น๋ฐ๋๋ค.
- ๋ชจ๋ Consumer๊ฐ ๋์ผํ ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ๊ฐ๋ ค๋ฉด ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ทธ๋ฃน ID๋ฅผ ์ค์ ํด์ผ ํ๋ค.
7. Zookeeper
- Kafka ๋ธ๋ก์ปค๋ค์ ๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐ ํด๋ฌ์คํฐ ์กฐ์ ์ ๋ด๋น
- Leader ์ ์ถ, ๋ ธ๋ ์ํ ๊ด๋ฆฌ, ์ปจํผ๊ทธ ๊ด๋ฆฌ ๋ฑ์ ์ญํ ์ํ
3. Kafka ๋ฉ์ธ์ง ์ ์ฅ & ์ ์ก ๋ฐฉ์
1. ๋ฉ์์ง ์ ์ฅ ๋ฐฉ์
Kafka๋ ๋ฉ์์ง๋ฅผ ๋์คํฌ(Log) ๊ธฐ๋ฐ์ผ๋ก ์ ์ฅํ๋ฉฐ, ์ง์ ๋ ๋ณด๊ด ๊ธฐ๊ฐ ๋์ ์ ์ง๋๋ค.
- ๊ณ ์ ๋ ํฌ๊ธฐ์ ์ธ๊ทธ๋จผํธ ํ์ผ(ํ์ผ ๋กค๋ง)๋ก ์ ์ฅ
- ๋ฉ์์ง ์คํ์ ๊ธฐ๋ฐ ์กฐํ ๊ฐ๋ฅ
- Consumer๋ ๋ฉ์์ง๋ฅผ ์ฝ๋๋ผ๋ ๋ฉ์์ง๋ ์ญ์ ๋์ง ์์
2.๋ฉ์์ง ์ ์ก ๋ณด์ฅ(Delivery Guarantees)
Kafka๋ ๋ค์ํ ๋ฉ์์ง ์ ์ก ๋ณด์ฅ ์์ค์ ์ ๊ณตํ๋ค.
- At Most Once(์ต์ 1ํ ์ ์ก)
- ์ค๋ณต ๋ฐฉ์ง, ๋ฐ์ดํฐ ์ ์ค ๊ฐ๋ฅ
- At Least Oncee(์ต์ 1ํ ๋ณด์ฅ)
- ์ค๋ณต ๋ฉ์์ง ๋ฐ์ ๊ฐ๋ฅ, ๋ฐ์ดํฐ ์ ์ค ์์
- Exactly Once(ํ ๋ฒ๋ง ์ ๋ฌ)
- Kafka Streams ๋๋ ํธ๋์ญ์ ์ ์ฌ์ฉํด ์ค๋ณต์์ด ๋จ ํ๋ฒ๋ง ๋ฉ์์ง ์ ๋ฌ
4. Kafka ํ์ฉ ์ฌ๋ก
1. ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
- ๋ก๊ทธ ์์ง(ELK, Splunk, Datadog)
- ๋ชจ๋ํฐ๋ง ์์คํ (Prometheus + Kafka)
- ์ด๋ฒคํธ ์คํธ๋ฆฌ๋ฐ(Kafka + Flink, Spark)
2. ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ(MSA)
- ์๋น์ค ๊ฐ ๋น๋๊ธฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ ํต์
3. ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ
- Kafka -> Spark/Flink -> HDFS/Elasticsearch
- ๋ฐ์ดํฐ ๋ ์ดํฌ ๊ตฌ์ถ, ETL ์ฒ๋ฆฌ
'์คํ๋ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Redis ZSet(Sorted Set) (0) | 2025.03.16 |
---|---|
์คํ๋ง ๋๊ท๋ชจ์์คํ ์ค๊ณ (3) (0) | 2025.03.15 |
์คํ๋ง ๋๊ท๋ชจ์์คํ ์ค๊ณ (2) (0) | 2025.01.11 |
์คํ๋ง ๋๊ท๋ชจ์์คํ ์ค๊ณ ๊ฐ์ (1) (0) | 2025.01.11 |
SimpleJdbcInsert ์ฌ์ฉ ์, ์๋ ์ปฌ๋ผ ๋ฌธ์ ๋ฐ์ (0) | 2024.04.11 |
Apache Kafka
๋ ๋ถ์ฐ ์คํธ๋ฆฌ๋ฐ ํ๋ซํผ์ผ๋ก, ๋๊ท๋ชจ ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ฉ์์ง ๋ธ๋ก์ปค ์ญํ ์ ํ๋ค.
Kafka๋ ๋์ ํ์ฅ์ฑ, ๋ด๊ฒฐํจ์ฑ(fault tolerance), ๋์ ์ฒ๋ฆฌ๋์ ์ ๊ณตํ๋ฉฐ, ๊ธฐ์
์ ๋ก๊ทธ ์ฒ๋ฆฌ, ์ด๋ฒคํธ ์คํธ๋ฆฌ๋ฐ, ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ ๋ฑ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ค.
1. Kafka๋?
- ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ณ ์์ ์ ์ผ๋ก ์ก์์ ํ๊ธฐ ์ํ ๋ถ์ฐ ๋ฉ์์ง ์์คํ
- Pub/Sub(๋ฐํ-๊ตฌ๋ ) ๋ชจ๋ธ ๊ธฐ๋ฐ์ ๋ฉ์์ง ๋ธ๋ก์ปค
- ์ด๋ฒคํธ ๊ธฐ๋ฐ ์์คํ ๊ตฌ์ถ ๊ฐ๋ฅ
- ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ์ฒ๋ฆฌ ๋ฐ ๋น๋๊ธฐ ๋ฉ์์ง ํ๋ก ํ์ฉ
2. Kafka ์ํคํ ์ฒ
1. Producer(์์ฐ์)
- Kafka์ ๋ฉ์์ง๋ฅผ ์ ์กํ๋ ์ญํ
- ๋ฉ์์ง๋ฅผ Topic์๊ฒ ๊ฒ์(Publish) ํจ
acks
์ค์ ์ผ๋ก ๋ฉ์์ง ์ ์ก ๋ณด์ฅ ์์ค ์กฐ์ ๊ฐ๋ฅ (acks=0, 1, all
)
2. Broker(๋ธ๋ก์ปค)
- Kafka ํด๋ฌ์คํฐ ๋ด์ ๊ฐ๋ณ ์๋ฒ
- ๋ฉ์์ง๋ฅผ ์ ์ฅํ๊ณ , ์๋น์์๊ฒ ์ ๋ฌํ๋ ์ญํ
- ์ฌ๋ฌ ๊ฐ์ Broker๋ก ๊ตฌ์ฑ๋์ด ๋ถ์ฐ ์ํคํ ์ฒ ์ง์
3. Topic(ํ ํฝ)
- Kafka์์ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ ๋ ผ๋ฆฌ์ ๋จ์
- ์ฌ๋ฌ Producer๊ฐ ๋์ผํ Topic์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์์
- ํํฐ์ (Partition) ๋จ์๋ก ๋ฉ์์ง๊ฐ ์ ์ฅ๋๋ค.
4. Partition(ํํฐ์ )
- Topic์ ์ฌ๋ฌ ๊ฐ์ ํํฐ์ ์ผ๋ก ๋๋์ด ์ ์ฅํ๋ค.
- ๊ฐ ํํฐ์ ์ ๋ก๊ทธ(append-only log) ๊ตฌ์กฐ๋ก ์ ์ฅ๋๋ค.
- ์ฌ๋ฌ Consumer๊ฐ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅํ์ฌ ์ฑ๋ฅ ํฅ์
5. Consumer(์๋น์)
- Kafka์์ ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ๊ฐ๋ ์ญํ
- ํน์ Topic์ ํํฐ์ ์ ํ ๋น๋ฐ์ ๋ฉ์์ง๋ฅผ ์ฝ์
- Consumer Group์ ์ฌ์ฉํ์ฌ ๋ณ๋ ฌ ์ฒ๋ฆฌ ๊ฐ๋ฅ
6. Consumer Group(์๋น์ ๊ทธ๋ฃน)
- ์ฌ๋ฌ Consumer๊ฐ ํ๋์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ฌ ๋ก๋ ๋ฐธ๋ฐ์ฑ ๊ฐ๋ฅํ๋ค.
- ๊ฐ์ ๊ทธ๋ฃน ๋ด Consumer๋ ์๋ก ๋ค๋ฅธ Partition์ ํ ๋น๋ฐ๋๋ค.
- ๋ชจ๋ Consumer๊ฐ ๋์ผํ ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ๊ฐ๋ ค๋ฉด ๊ฐ๊ธฐ ๋ค๋ฅธ ๊ทธ๋ฃน ID๋ฅผ ์ค์ ํด์ผ ํ๋ค.
7. Zookeeper
- Kafka ๋ธ๋ก์ปค๋ค์ ๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐ ํด๋ฌ์คํฐ ์กฐ์ ์ ๋ด๋น
- Leader ์ ์ถ, ๋ ธ๋ ์ํ ๊ด๋ฆฌ, ์ปจํผ๊ทธ ๊ด๋ฆฌ ๋ฑ์ ์ญํ ์ํ
3. Kafka ๋ฉ์ธ์ง ์ ์ฅ & ์ ์ก ๋ฐฉ์
1. ๋ฉ์์ง ์ ์ฅ ๋ฐฉ์
Kafka๋ ๋ฉ์์ง๋ฅผ ๋์คํฌ(Log) ๊ธฐ๋ฐ์ผ๋ก ์ ์ฅํ๋ฉฐ, ์ง์ ๋ ๋ณด๊ด ๊ธฐ๊ฐ ๋์ ์ ์ง๋๋ค.
- ๊ณ ์ ๋ ํฌ๊ธฐ์ ์ธ๊ทธ๋จผํธ ํ์ผ(ํ์ผ ๋กค๋ง)๋ก ์ ์ฅ
- ๋ฉ์์ง ์คํ์ ๊ธฐ๋ฐ ์กฐํ ๊ฐ๋ฅ
- Consumer๋ ๋ฉ์์ง๋ฅผ ์ฝ๋๋ผ๋ ๋ฉ์์ง๋ ์ญ์ ๋์ง ์์
2.๋ฉ์์ง ์ ์ก ๋ณด์ฅ(Delivery Guarantees)
Kafka๋ ๋ค์ํ ๋ฉ์์ง ์ ์ก ๋ณด์ฅ ์์ค์ ์ ๊ณตํ๋ค.
- At Most Once(์ต์ 1ํ ์ ์ก)
- ์ค๋ณต ๋ฐฉ์ง, ๋ฐ์ดํฐ ์ ์ค ๊ฐ๋ฅ
- At Least Oncee(์ต์ 1ํ ๋ณด์ฅ)
- ์ค๋ณต ๋ฉ์์ง ๋ฐ์ ๊ฐ๋ฅ, ๋ฐ์ดํฐ ์ ์ค ์์
- Exactly Once(ํ ๋ฒ๋ง ์ ๋ฌ)
- Kafka Streams ๋๋ ํธ๋์ญ์ ์ ์ฌ์ฉํด ์ค๋ณต์์ด ๋จ ํ๋ฒ๋ง ๋ฉ์์ง ์ ๋ฌ
4. Kafka ํ์ฉ ์ฌ๋ก
1. ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
- ๋ก๊ทธ ์์ง(ELK, Splunk, Datadog)
- ๋ชจ๋ํฐ๋ง ์์คํ (Prometheus + Kafka)
- ์ด๋ฒคํธ ์คํธ๋ฆฌ๋ฐ(Kafka + Flink, Spark)
2. ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ(MSA)
- ์๋น์ค ๊ฐ ๋น๋๊ธฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ ํต์
3. ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ
- Kafka -> Spark/Flink -> HDFS/Elasticsearch
- ๋ฐ์ดํฐ ๋ ์ดํฌ ๊ตฌ์ถ, ETL ์ฒ๋ฆฌ
'์คํ๋ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Redis ZSet(Sorted Set) (0) | 2025.03.16 |
---|---|
์คํ๋ง ๋๊ท๋ชจ์์คํ ์ค๊ณ (3) (0) | 2025.03.15 |
์คํ๋ง ๋๊ท๋ชจ์์คํ ์ค๊ณ (2) (0) | 2025.01.11 |
์คํ๋ง ๋๊ท๋ชจ์์คํ ์ค๊ณ ๊ฐ์ (1) (0) | 2025.01.11 |
SimpleJdbcInsert ์ฌ์ฉ ์, ์๋ ์ปฌ๋ผ ๋ฌธ์ ๋ฐ์ (0) | 2024.04.11 |