Kafka-point.md

Kafka ํ•ต์‹ฌ๊ธฐ๋Šฅ

๊ธฐ์กด e2e(End-to-End) ๊ธฐ๋ฐ˜ ์•„์นดํ…์ฒ˜์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋กœ ์–ฝํ˜€์žˆ๊ฒŒ ๋œ๋‹ค.

์ด๋Š” ๋„์ž…ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋งŽ์•„์งˆ ์ˆ˜๋ก ๋ณต์žกํ•ด์ง€๊ฒŒ ๋˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๋งค์šฐ ํž˜๋“  ์ƒํ™ฉ์— ๋งˆ์ฃผํ•˜๊ฒŒ ๋œ๋‹ค.

Kafka๋Š” Source Application๊ณผ Target Application ๊ฐ„์˜ Coupling์„ ์•ฝํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ๋‹ค.

  • Source App: Kafka์— ๋ฐ์ดํ„ฐ ์ƒ์„ฑ

  • Target App: Kafka์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ์†Œ๋น„

ํ•ต์‹ฌ ๊ธฐ๋Šฅ

    - Broker
    - Producer/consumer
    - Topic
    - Partition
    - Record
    - Replication
    - ISR
    - Lag

Topic & Partition

  • 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 ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ํŒŒํ‹ฐ์…˜์— ๋‚˜๋ˆ„์–ด์ ธ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.

๋งŒ์•ฝ ํ‚ค๋ฅผ ์ง€์ •ํ•œ ๊ฒฝ์šฐ์—๋Š” ํ‚ค๋ฅผ ํ•ด์‰ฌํ•˜์—ฌ ๊ทธ ์ด๋ฆ„์— ํŒŒํ‹ฐ์…˜์ด ํ•˜๋‚˜ ํ• ๋‹น๋˜์–ด ํ•ด๋‹น ํ‚ค๊ฐ’์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋Š” ํ•ด๋‹น ํŒŒํ‹ฐ์…˜์— ์ ์žฌ๋˜๊ฒŒ ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ํŒŒํ‹ฐ์…˜์„ ๋Š˜๋ฆฌ๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ ๊ต‰์žฅํžˆ ์กฐ์‹ฌํ•ด์•ผํ•˜๋Š”๋ฐ,

ํ• ๋‹น๋œ ํŒŒํ‹ฐ์…˜์˜ ๊ตฌ์กฐ๊ฐ€ ๊นจ์ง€๊ธฐ๋„ ํ•˜๊ณ  ํŒŒํ‹ฐ์…˜์„ ๋Š˜๋ฆด ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์ค„์ผ ์ˆ˜๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Broker

๋ธŒ๋กœ์ปค๋Š” Kafka๊ฐ€ ์„ค์น˜๋œ ์„œ๋ฒ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

Last updated