kafka
LinkedIn์์ ์ฒ์ ๊ฐ๋ฐ ํ ๊ฒ์ผ๋ก, ์ผ์ข ์ Pub-Sub๋ชจ๋ธ๋ก ๊ตฌ์ฑ๋ ๋ฉ์ธ์ง ํ ๊ตฌ์กฐ์ ๋ฉ์์ง ๋ธ๋ก์ปค. ๋ถ์ฐ ํธ๋์ญ์ ๋ก๊ทธ๋ก ๊ตฌ์ฑ๋์ด ์ค์๊ฐ ๋ฐ์ดํฐ ํผ๋๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ํต์ผ๋, ๋์ ์ฒ๋ฆฌ๋, ๋ฎ์ ์ง์ฐ์๊ฐ์ ๊ฐ๋ ๊ฒ์ด ๋ชฉํ์ธ ํ๋ก์ ํธ.
RabitMQ์ ์ฐจ์ด์
kafka๋ single consumer๊ฐ ์๋๋ผ multi consumer๋ฅผ ์ผ๋์ ๋๊ณ ์ค๊ณ ๋์๊ธฐ ๋๋ฌธ์ consumer๊ฐ broker๋ก ๋ถํฐ ๋ฉ์์ง๋ฅผ pullํด์ค๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋ค. rabitMQ๋ broker๊ฐ consumer์๊ฒ ๋ฉ์์ง๋ฅผ pushํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์ด๋ ๋ฉ์์ง ์๋น์๋๋ณด๋ค ์์ฐ์๋๊ฐ ๋น ๋ฅผ ๊ฒฝ์ฐ ๋ณ๋ชฉํ์์ด ๋ฐ์ํด consumer์๊ฒ ๋ง์ ๋ถํ๋ฅผ ์ค ์ ์์ผ๋ฉฐ ๊ธฐ์กด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ๋ค ์ฌ์ฉํ๋ฉด disk๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ด๋ํ ๋ณ๋ชฉํ์์ด ๋ฐ์ํ ์ ์๋ค.
kafka๋ ์ ์ด์ ๋ฉ์์ง๋ฅผ disk์ ์ ์ฅํ๊ณ offset์ด๋ผ๋ ๊ฐ๋ ์ ํตํด ๋ฉ์์ง๋ฅผ ์์ ๋กญ๊ฒ ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ, ๋์คํฌ์ ์ ์ฅํ ๋๋ BTree๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํ์ผ๋์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ ๋จ์ ์ ์ฅ๋ฐฉ์์ผ๋ก ๋์คํฌ์ ์์ฐจํ์์ ์ด์ฉํด ์ฝ์ด์ค๋ ๋ฐฉ์์ผ๋ก ํจ์จ์ ๋์ด์ฌ๋ ธ๋ค.
๋ฌผ๋ก pull๋ฐฉ์๋ ๋จ์ ์ด ์กด์ฌํ๋๋ฐ, ์ฃผ๊ธฐ์ ์ผ๋ก pollingํ๊ธฐ ๋๋ฌธ์ ์์์ด ๋ญ๋น๋ ์ ์๋ค๋ ๋ถ๋ถ์ด๋ค.
๊ตฌ์ฑ์์
zookeeper : ํด๋ฌ์คํฐ ์ต์ ์ค์ ์ ๋ณด ๊ด๋ฆฌ๋ ๋๊ธฐํ, ๋ฆฌ๋ ์ ์ ๋ฑ ํด๋ฌ์คํฐ์ ์๋ฒ๋ค์ด ๊ณต์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋์ด kafka์๋ฒ๋ฅผ ์คํ์ํค๊ธฐ ์ํด์๋ zookeeper๊ฐ ์ ํ๋์ด์ผ ํ๋ฉฐ, ํ์ฌ๋ ์ด ์์กด์ฑ์ ์ ๊ฑฐํ๊ธฐ ์ํ ํ๋ก์ ํธ๋ ์งํ์ค์ด๋ค.
broker : ํ๊ฐ์ kafka sever ์ด๋ฉฐ, ํ ํด๋ฌ์คํฐ ๋ด์ ์ฌ๋ฌ broker๋ฅผ ์คํํ ์ ์๋ค.
topic : ๋ฉ์์ง๊ฐ ์์ฐ๋๊ณ ์๋น๋๋ ํฐ
์ฃผ์
,์ ๋ชฉ
์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.partition : ํ ํ ํฝ๋ด์ ๋ฉ์์ง๊ฐ ๋ถ์ฐ๋์ด ์ ์ฅ๋๋ ๋จ์์ด๋ฉฐ, ํ ๋ฐฉ์์ผ๋ก ์ ์ฅ๋์ด ํ ํํฐ์ ๋ด์์๋ ์์๋ฅผ ๋ณด์ฅํ์ง๋ง ์๋ก ๋ค๋ฅธ ํํฐ์ ๋ผ๋ฆฌ๋ ๋ฉ์์ง ์์๋ฅผ ๋ณด์ฅํด์ฃผ์ง ์๊ธฐ ๋๋ฌธ์ topic๋ด์ ์ฌ๋ฌ ํํฐ์ ์ด ์๋ค๋ฉด ๊ทธ์ ๋ง๊ฒ ์ฒ๋ฆฌ๋ฐฉ๋ฒ์ด ๋ฌ๋ผ์ง๋ค.
log : partition์ ํ ์นธ ํ์นธ์ log๋ผ๊ณ ํ๋ฉฐ key,value,timestamp๋ก ๊ตฌ์ฑ๋๋ค.
offset : partition์ ๊ฐ ๋ฉ์์ง๋ฅผ ์๋ณํ ์ ์๋ ์ ๋ํฌํ ๊ฐ์ผ๋ก ์ด๋ฅผ ์ด์ฉํด consumer์์ ๋ฐ์ดํฐ๋ฅผ ์ด๋๊น์ง ์๋นํ๋์ง ํ์ ํ๋ค.
producer : ํน์ topic์ ๋ฉ์์ง๋ฅผ ๋ฐํํ๋ ์ฃผ์ฒด. ํ topic๋ด์ ์ฌ๋ฌ partition์ด ์๋ค๋ฉด default๋ก๋ RR๋ฐฉ์์ผ๋ก ์ ์ฅ์ด ๋๋ค. ํ partition๋ด์์๋ ๋ง์ง๋ง offset ๋ค์ ์ ๊ท ๋ฉ์์ง๊ฐ ์ ์ฅ์ด ๋๊ธฐ ๋๋ฌธ์ ์์๊ฐ ๋ณด์ฅ์ด ๋๋ค.
consumer : ๋ฉ์์ง๋ฅผ ์๋นํ๋ ์ฃผ์ฒด.
consumer group : ํ๋์ consumer group์์๋ ํ๋์ topic์ ๋ด๋นํ๊ธฐ ๋๋ฌธ์ ํ๋์ topic๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ์ง๋ง, topic์ ์ฌ๋ฌ๊ฐ์ consumer group์ด ์ ๊ทผ ํ ์ ์๋ค.
๋ชฉ์
partition์ ๊ทผํ๋ consumer ๊ด๋ฆฌ : ์ฌ๋ฌ๊ฐ์ consumer๊ฐ ํ partition์ ์ ๊ทผํ์ฌ ๋ฉ์์ง๋ฅผ ์๋นํ๋ ค๊ณ ํ ๋ ๋ฐ๋ก ๊ด๋ฆฌ์๊ฐ ์๋ค๋ฉด ๋ช๋ฒ์งธ์ ๋ฉ์์ง๋ฅผ ์๋นํ๋์ง ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด consumer group์ด ์กด์ฌํ์ฌ ๊ด๋ฆฌ
offset ๊ณต์ : partition์๋ ํ๋์ consumer๋ง ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด consumer๊ฐ ์๋ฌ๋ฐ์ํ์ ๋๋ฅผ ๋๋นํด์ consumer๋ค์ offset์ ๊ณต์ ํ๊ณ ์์ด ๊ณ ๊ฐ์ฉ์ฑ์ด ํ๋ณด๋๋ค.
์์ ๊ฐ์ ์ด์ ๋ก partition์ ๊ฐ์์ consumer์ ๊ฐ์๋ฅผ ์ ์ค๊ณํด์ผ ํ๋๋ฐ partition >= consumer ๊ฐ ์ ์ ํ๋ค. consumer๊ฐ ๋ง์๋ดค์ ์ค๋ณตํด์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๊ณ ์๋ consumer๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ.
์๋์ฐ ์ค์น
1. java ์ค์น
1.8 ๋ฒ์ ์ด์์ java ์ค์นํ๊ธฐ
2. kafka ์ค์น
kafka ๊ณต์ ํํ์ด์ง์์ binary downloads
ํ์ผ ๋ค์ด๋ฐ์ ์์ถํด์
3. zookeeper ์คํ
zookeper.properties์ค์ ํ์ผ์ ํ ๋๋ก batํ์ผ๋ก ์คํ์ํค๊ฒ ๋๋๋ฐ bin\windows ๋ด์ batํ์ผ์ ์คํํด์ผ ์๋์ฐ์์ ์คํ์ด๋๋ค.
์ด๋ zookeeper์ default ํฌํธ๋ 2181๋ฒ์ด๋ค.
4. kafka ์คํ
default ํฌํธ๋ฒํธ๋ 9092๋ฒ.
์คํ ์์
topic ์์ฑ
topic check
console์ด์ฉํด ๋ฉ์์ง ๋ฐํ/์๋นํ๊ธฐ
Reference
https://github.com/HomoEfficio/dev-tips/blob/master/Kafka%20%EB%91%98%EB%9F%AC%EB%B3%B4%EA%B8%B0.md
Last updated