Skip to content

Latest commit

ย 

History

History
90 lines (62 loc) ยท 5.19 KB

kafka.md

File metadata and controls

90 lines (62 loc) ยท 5.19 KB

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 ์‹คํ–‰

# ์••์ถ•ํ•ด์ œํ•œ ํŒŒ์ผ ๊ฒฝ๋กœ๋กœ ์ด๋™
cd C:\์••์ถ•ํ•ด์ œํ•œ ํŒŒ์ผ ๊ฒฝ๋กœ

# zookeeper ์‹คํ–‰
bin\windows\zookeeper-server-start.bat config\zookeeper.properties

zookeper.properties์„ค์ •ํŒŒ์ผ์„ ํ† ๋Œ€๋กœ batํŒŒ์ผ๋กœ ์‹คํ–‰์‹œํ‚ค๊ฒŒ ๋˜๋Š”๋ฐ bin\windows ๋‚ด์˜ batํŒŒ์ผ์„ ์‹คํ–‰ํ•ด์•ผ ์œˆ๋„์šฐ์—์„œ ์‹คํ–‰์ด๋œ๋‹ค.

์ด๋•Œ zookeeper์˜ default ํฌํŠธ๋Š” 2181๋ฒˆ์ด๋‹ค.

4. kafka ์‹คํ–‰

# kafka ์‹คํ–‰
bin\windows\kafka-server-start.bat config\server.properties

default ํฌํŠธ๋ฒˆํ˜ธ๋Š” 9092๋ฒˆ.


์‹คํ–‰ ์˜ˆ์ œ

topic ์ƒ์„ฑ

bin\windows\kafka-topics.bat --create --topic topickname --bootstrap-server localhost:9092

topic check

bin\windows\kafka-topics.bat --describe --topic topickname --bootstrap-server localhost:9092

console์ด์šฉํ•ด ๋ฉ”์‹œ์ง€ ๋ฐœํ–‰/์†Œ๋น„ํ•˜๊ธฐ

#producer
bin\windows\kafka-console-producer.bat --topick topickname --bootstrap-server localhost:9092

#consumer
bin\windows\kafka-console-consumer.bat --topic topickname --bootstrap-server localhost:9092





Reference

https://github.com/HomoEfficio/dev-tips/blob/master/Kafka%20%EB%91%98%EB%9F%AC%EB%B3%B4%EA%B8%B0.md