๋ณธ๋ฌธ
Kafka Overview
๐ก ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ํ์น Kafka ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
๐ก kafka ๋ฉ์์ง ์ฒ๋ฆฌ ์ ์ฐจ
๐ก Apache Kafka ํน์ง
LinkedIn์์ ์ต์ด๋ก ๋ง๋ค๊ณ opensourceํ ํ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ ๋ถ์ฐ ๋ฉ์์ง ํ(FIFO : First In First Out)
→ ๋ถ์ฐ ์ํคํ ์ณ ๊ตฌ์ฑ, Fault-toleranceํ architecture(with zookeeper), ๋ฐ์ดํฐ ์ ์ค ๋ฐฉ์ง๋ฅผ ์ํ ๊ตฌ์ฑ์ด ์๋์ด ์์
→ AMQP, JMS API๋ฅผ ์ฌ์ฉํ์ง ์์ TCP๊ธฐ๋ฐ ํ๋กํ ์ฝ ์ฌ์ฉ
→ Pub / Sub ๋ฉ์์ง ๋ชจ๋ธ์ ์ฑ์ฉ
→ ์ฝ๊ธฐ / ์ฐ๊ธฐ ์ฑ๋ฅ์ ์ค์
→ Producer๊ฐ Batchํํ๋ก broker๋ก ๋ฉ์์ง ์ ์ก์ด ๊ฐ๋ฅํ์ฌ ์๋ ๊ฐ์
→ ํ์ผ ์์คํ ์ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ฏ๋ก, ๋ฐ์ดํฐ์ ์์์ฑ ๋ณด์ฅ
→ Consume๋ ๋ฉ์์ง๋ฅผ ๊ณง๋ฐ๋ก ์ญ์ ํ์ง ์๊ณ offset์ ํตํ consumer-group๋ณ ๊ฐ๋ณ consume๊ฐ๋ฅ
๐ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ํ ํฝ
ํ ํฝ: ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๋ ๊ณต๊ฐ
* partition์ record ์๋ช
์ฃผ๊ธฐ
→ log.retention.ms: ์ต๋ record ๋ณด์กด ์๊ฐ
→ log.retention.byte: ์ต๋ record ๋ณด์กด ํฌ๊ธฐ(byte)
- ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ณ ์๊ฐํํ๊ธฐ ์ํด ์๋ผ์คํฑ์์น์ ์ ์ฅ
- ๋ฐ์ดํฐ ๋ฐฑ์ ์ ์ํด ํ๋ก์ ์ ์ฅ
๐ก ๋ฐ์ดํฐ๋ฅผ ์นดํ์นด๋ก ์ ์กํ๋ ํ๋ก๋์
์นดํ์นด ํ๋ก๋์: ๋ฐ์ดํฐ๋ฅผ ํ ํฝ์ ๋ณด๋ด๋ ์ญํ
- Topic์ ํด๋นํ๋ ๋ฉ์์ง๋ฅผ ์์ฑ
- ํน์ Topic์ผ๋ก ๋ฐ์ดํฐ๋ฅผ publish
- ์ฒ๋ฆฌ ์คํจ/์ฌ์๋
๐ก Broker, Replication, ISR ํต์ฌ์์ 3๊ฐ์ง!
broker๋ kafka๊ฐ ์ค์น๋ ์๋ฒ๋จ์๋ฅผ ์๋ฏธ
๐ก ์นดํ์นด ์ปจ์๋จธ ์ญํ
์นดํ์นด ์ปจ์๋จธ
- Topic์ partition์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ polling: ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ์์ ํน์ DB์ ์ ์ฅํ๊ฑฐ๋ ๋ค๋ฅธ ํ์ดํ๋ผ์ธ์ ์ ๋ฌํ ์ ์๋ค
- Partition offset ์์น ๊ธฐ๋ก(commit): offset์ ํํฐ์
์ ์๋ ๋ฐ์ดํฐ ์์น๋ฅผ ์๋ฏธ
- Consumer group์ ํตํด ๋ณ๋ ฌ์ฒ๋ฆฌ: ํํฐ์
๊ฐ์์ ๋ฐ๋ผ ์ปจ์๋จธ๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋ค๋ฉด ๋ณ๋ ฌ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅ → ๋์ฑ ๋น ๋ฅธ ์๋๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ
* ์นดํ์นด ์ปจ์๋จธ์ ๋์์ ๋ค๋ฅธ ๋ฉ์์ง ์์คํ
๊ณผ๋ ๋ค์ ๋ค๋ฆ
- ๋ค๋ฅธ ๋ฉ์์ง ์์คํ
: ์ปจ์๋จธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๊ฐ๋ฉด ํ ๋ด๋ถ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง
- ์นดํ์นด์์๋ ์ปจ์๋จธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๊ฐ๋๋ผ๋ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง์ง ์์
→ ์ด ํน์ง์ ์นดํ์นด ์ปจ์๋จธ๊ฐ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ผ๋ก ์ด์ํ๋๋ฐ ํต์ฌ์ ์ธ ์ญํ ์ ํจ
* ์นดํ์นด ์ฅ์ ๋ฐ ์ปจ์๋จธ ์ฌ์คํ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
__consumer_offsets ํ ํฝ์ offset ์ ๋ณด๋ฅผ ํ ๋๋ก ์์์์น ๋ณต๊ตฌ ๊ฐ๋ฅ → ๊ณ ๊ฐ์ฉ์ฑ์ ํน์ง์ ๊ฐ์
๐ก ์นดํ์นด ์ปจ์๋จธ Lag์ด๋?
lag๋ ์นดํ์นด๋ฅผ ์ด์ํ๋๋ฐ ์์ด์ ์์ฃผ ์ค์ํ ๋ชจ๋ํฐ๋ง ์งํ
- ํ๋ก๋์๋ ํ ํฝ์ ํํฐ์
์ ๋ฐ์ดํฐ๋ฅผ ์ฐจ๊ณก์ฐจ๊ณก ๋ฃ๋๋ค
- ์ด ํํฐ์
์ ๋ฐ์ดํฐ๊ฐ ํ๋ํ๋ ๋ค์ด๊ฐ๊ฒ๋๋ฉด, ๊ฐ ๋ฐ์ดํฐ์๋ ์คํ์
์ด๋ผ๊ณ ํ๋ ์ซ์๊ฐ ๋ถ๊ฒ ๋๋ค.
→ ์ปจ์๋จธ๊ฐ ๋ง์ง๋ง์ผ๋ก ์ฝ์ offset, ํ๋ก๋์๊ฐ ๋ง์ง๋ง์ผ๋ก ๋ฃ์ offset์ ์ฐจ์ด: Lag
๋๊ธ