Kafka-point.md
Last updated
Last updated
๊ธฐ์กด e2e(End-to-End) ๊ธฐ๋ฐ ์์นดํ ์ฒ์์๋ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์๋ก ์ฝํ์๊ฒ ๋๋ค.
์ด๋ ๋์ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ง์์ง ์๋ก ๋ณต์กํด์ง๊ฒ ๋๊ณ ์ ์ง๋ณด์๊ฐ ๋งค์ฐ ํ๋ ์ํฉ์ ๋ง์ฃผํ๊ฒ ๋๋ค.
Kafka๋ Source Application๊ณผ Target Application ๊ฐ์ Coupling์ ์ฝํ๊ฒ ํ๊ธฐ ์ํด ๋ง๋ค์ด์ก๋ค.
Source App: Kafka์ ๋ฐ์ดํฐ ์์ฑ
Target App: Kafka์ ์ ์ฅ๋ ๋ฐ์ดํฐ ์๋น
Topic
Topic์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ, ํ์ผ์์คํ ์ ํด๋์ ๊ฐ์ ์ญํ ์ ํ๋ค. ๋ฐ๋ผ์ Topic์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ์๋ ์๊ณ ์ด๋ฅผ ๋ค์ ๊ฐ์ ธ์์ ์ฌ์ฉํ ์๋ ์๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋(์์ฑ) ์ญํ ์ด ๋ฐ๋ก Producer์ด๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉํ๋ ์ญํ ์ด Consumer์ด๋ค.
๊ตฌ์ฑ์์
Partition
ํ๋์ Topic์ ํ ๊ฐ ์ด์์ Partition์ผ๋ก ๊ตฌ์ฑ๋๋ค. Partition์ Queue ํ์์ผ๋ก ๋ฐ์ดํฐ์ ์ ์ถ๋ ฅ์ด ์งํ๋๋ค. Partition์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ ๋๋ Queue์ FIFO ๊ตฌ์กฐ์ฒ๋ผ ๋งจ๋ค์ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ๊ณ ๊ฐ์ฅ ์ค๋๋ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋น ์ ธ๋๊ฐ๊ฒ ๋๋ค.
Consumer๊ฐ Topic์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ๋๋ ํด๋น topic์ partition์ ์ ์ฅ๋์ด์๋ ์ ๋ณด๋ค์ค ๊ฐ์ฅ ์ค๋๋ ๋ฐ์ดํฐ๋ถํฐ ๊ฐ์ ธ๊ฐ๊ณ ๋์ด์ ๊ฐ์ ธ๊ฐ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ฌ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค.
์ด๋ ์ค์ํ ๋ถ๋ถ์ ์ปจ์๋จธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๊ฐ๋ค๊ณ ํด๋ partition์ ์๋ ๋ฐ์ดํฐ๋ ์ญ์ ๋์ง ์๋๋ค. ์ด๋ Kafka์ ํน์ง์ธ Undeleted Log์ ํด๋นํ๋ค. ๋ฐ๋ผ์ ๋ค๋ฅธ ์ปจ์๋จธ ๊ทธ๋ฃน์์ ํด๋น ํํฐ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ฐ์ด ๊ฐ์ ธ๊ฐ ์ ์๊ฒ ๋๋ค.
ํ์ง๋ง ์ด ํน์ง์๋ ๋ช ๊ฐ์ง ์กฐ๊ฑด์ด ์๋๋ฐ
์ปจ์๋จธ ๊ทธ๋ฃน์ด ๋ค๋ฅผ ๊ฒฝ์ฐ
auto.offset.reset ์ต์ ์ด earliest๋ก ์ค์ ๋์ด์์ด์ผ ์ฑ๋ฆฝํ๋ค.
Multi Partition
ํํฐ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋๋ 'key'๋ฅผ ์ง์ ํ ์ ์๋๋ฐ, ๋ง์ฝ ํค๋ฅผ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ์๋ round-robin ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ํํฐ์ ์ ๋๋์ด์ ธ ๋ค์ด๊ฐ๊ฒ ๋๋ค.
๋ง์ฝ ํค๋ฅผ ์ง์ ํ ๊ฒฝ์ฐ์๋ ํค๋ฅผ ํด์ฌํ์ฌ ๊ทธ ์ด๋ฆ์ ํํฐ์ ์ด ํ๋ ํ ๋น๋์ด ํด๋น ํค๊ฐ์ผ๋ก ๋ค์ด์ค๋ ๋ฐ์ดํฐ๋ ํด๋น ํํฐ์ ์ ์ ์ฌ๋๊ฒ ๋๋ค.
ํ์ง๋ง ํํฐ์ ์ ๋๋ฆฌ๊ฒ ๋๋ ๊ฒฝ์ฐ ๊ต์ฅํ ์กฐ์ฌํด์ผํ๋๋ฐ,
ํ ๋น๋ ํํฐ์ ์ ๊ตฌ์กฐ๊ฐ ๊นจ์ง๊ธฐ๋ ํ๊ณ ํํฐ์ ์ ๋๋ฆด ์๋ ์์ง๋ง ์ค์ผ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ธ๋ก์ปค๋ Kafka๊ฐ ์ค์น๋ ์๋ฒ๋ฅผ ์๋ฏธํ๋ค.