Liam
Liam
I'm studying ๐Ÿฅธ

What is Apache Kafka?

What is Apache Kafka?



๐Ÿ’ก Intro

Kafka๋Š” ๋งŽ์€ ์„œ๋น„์Šค์—์„œ ๋ฐฑ์—”๋“œ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” Kafka์˜ โ€˜Kโ€™ ์ •๋„๋งŒ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์˜ค๋Š˜์€ Kafka์˜ ๊ฐœ๋…๊ณผ ๊ธฐ๋ณธ ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.



๐Ÿ”Ž Kafka์˜ ํƒ„์ƒ

๋งํฌ๋“œ์ธ์€ ์‚ฌ์ดํŠธ๊ฐ€ ๊ธ‰์†๋„๋กœ ์„ฑ์žฅํ•˜๋ฉด์„œ ๊ธฐ์กด์˜ End to End ์—ฐ๊ฒฐ ๋ฐฉ์‹์ด์—ˆ๋˜ ์•„ํ‚คํ…์ฒ˜๋กœ๋Š” ๋ณต์žก๋„, ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ ๊ด€๋ฆฌ ๋“ฑ์˜ ์–ด๋ ค์›€ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜๊ฐ€ ํ•„์š”๋กœ ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋งํฌ๋“œ์ธ์€ Kafka๋ผ๋Š” ๋ฉ”์‹œ์ง• ๋ถ„์‚ฐ ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ์„ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹œ ๋งํฌ๋“œ์ธ์˜ ์š”๊ตฌ์‚ฌํ•ญ์€ 1.๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ ํ•ด์•ผ ํ•˜๋ฉฐ, 2.๋ฉ”์‹œ์ง€์˜ ์˜์†์„ฑ์„ ๋ณด์žฅํ•ด ์ฃผ๊ณ , 3.Scale out์ด ์šฉ์ด ํ•ด์•ผ ํ•œ๋‹ค ๋“ฑ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹น์‹œ์˜ ์ œํ’ˆ๋“ค์€ ๋†’์€ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์šฐ์„  ์ˆœ์œ„์˜€๋˜ ๋งํฌ๋“œ์ธ์˜ ์š”๊ตฌ์‚ฌํ•ญ๋ณด๋‹ค ํŠธ๋žœ์ ์…˜์˜ ๊ด€๋ฆฌ๊ฐ€ ๋„ˆ๋ฌด ์˜ค๋ฒ„์ŠคํŽ™์ด๊ฑฐ๋‚˜, ๋ฉ”์‹œ์ง€ ํ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์Œ“๊ธด ํ•˜์ง€๋งŒ ์žฅ์‹œ๊ฐ„ ์Œ“์ด๋Š” ๊ฒƒ์€ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š” ๋“ฑ์˜ ๋ฌธ์ œ๋กœ ์ถฉ์กฑ์‹œํ‚ค์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ ๋งํฌ๋“œ์ธ์˜ ์ž์„ธํ•œ ์š”๊ตฌ์‚ฌํ•ญ์€ ๐ŸŒŽํ•œ๋น›๋ฏธ๋””์–ด-๋งํฌ๋“œ์ธ์€ ์™œ ์นดํ”„์นด๋ฅผ ๋งŒ๋“ค์—ˆ๋‚˜์„ ํ†ตํ•ด ํ™•์ธ ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



What is Apache Kafka?

Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications. - ์ถœ์ฒ˜: Apache Kafka

Apache Kafka์˜ ๊ณต์‹์‚ฌ์ดํŠธ์—์„œ๋Š” Apache Kafka๋ž€ ์ˆ˜์ฒœ ๊ฐœ์˜ ๊ธฐ์—…์ด ๊ณ ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ ํŒŒ์ดํ”„๋ผ์ธ, ์ŠคํŠธ๋ฆฌ๋ฐ ๋ถ„์„, ๋ฐ์ดํ„ฐ ํ†ตํ•ฉ, ๋ฏธ์…˜ ํฌ๋ฆฌํ‹ฐ์ปฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋ถ„์‚ฐ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ์ด๋ผ๊ณ  ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, Kafka๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ๋น„ํ•˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ์ค‘์žฌ์ž ์—ญํ• ์„ ํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ์˜ ์ „์†ก ์ œ์–ด, ์ฒ˜๋ฆฌ, ๊ด€๋ฆฌ ์—ญํ• ์„ ํ•˜๋ฉฐ Publish-Subscribe ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•œ ๋ถ„์‚ฐ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

Message Queue๋ž€? ํ”„๋กœ๊ทธ๋žจ ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ†ต์‹  ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ ๐ŸŒŽMessage-Oriented Middleware์˜ ๊ตฌํ˜„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.


Apache Kafka์˜ ํŠน์ง•

  1. Kafka์˜ topic์— ์—ฌ๋Ÿฌ ํ”„๋กœ๋“€์„œ๊ฐ€ ๋™์‹œ์— ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Kafka topic์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์—ฌ๋Ÿฌ ์ปจ์Šˆ๋จธ๋“ค์ด ๋™์‹œ์— ์ฝ์–ด ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์—, ๋‹ค์ค‘ ํ”„๋กœ๋“€์„œ/์ปจ์Šˆ๋จธ์˜ ์ง€์›์œผ๋กœ ํ•˜๋‚˜์˜ Kafka ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. Kafka๋Š” ํ”„๋กœ๋“€์„œ๊ฐ€ ์ƒ์„ฑํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ธŒ๋กœ์ปค๊ฐ€ ์œ„์น˜ํ•œ ์„œ๋ฒ„์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ์ดํ„ฐ์˜ ์˜์†์„ฑ์„ ๋ณด์žฅํ•ด ์ค๋‹ˆ๋‹ค.
  3. Scale out ์ฆ‰, ํ™•์žฅ์„ฑ์ด ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋“€์„œ, ์ปจ์Šˆ๋จธ, ๋ธŒ๋กœ์ปค๋“ฑ์„ ์šด์˜์ค‘์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์˜ˆ๋ฅผ ๋“ค์–ด ์ดˆ์ฐฝ๊ธฐ์— ์ ์€ ์ˆ˜์˜ ๋ธŒ๋กœ์ปค๋“ค๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์šด์˜ํ•˜๋‹ค๊ฐ€ ์‹œ์Šคํ…œ ํŠธ๋ž˜ํ”ฝ์ด ๋†’์•„์ง€๋ฉด ๋ธŒ๋กœ์ปค๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. Kafka๋Š” Push๊ฐ€ ์•„๋‹Œ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ธŒ๋กœ์ปค์—๊ฒŒ์„œ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” Pull๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์ปจ์Šˆ๋จธ์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋ธŒ๋กœ์ปค๊ฐ€ ๊ณ ๋ฏผํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ปจ์Šˆ๋จธ๋Š” ์ž์‹ ์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒํผ์˜ ๋ฉ”์‹œ์ง€๋งŒ ๋ธŒ๋กœ์ปค์—๊ฒŒ์„œ ๊ฐ€์ ธ๊ฐ€๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์ ์˜ ๋ฉ”์‹œ์ง€์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Apache Kafka์˜ ์•„ํ‚คํ…์ฒ˜


Kafka Architecture์ด๋ฏธ์ง€ 1. Kafka ์•„ํ‚คํ…์ฒ˜(์ถœ์ฒ˜: Developer.holee Blog)

Kafka๋Š” Publish-Subscribe ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ์œ„ ์ด๋ฏธ์™€ ๊ฐ™์ด ํฌ๊ฒŒ producer, consumer, broker, Zookeeper๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. Producer๋Š” ํŠน์ • topic์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•œ ๋’ค ํ•ด๋‹น ๋ฉ”์‹œ์ง€๋ฅผ broker์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. Broker๊ฐ€ ์ „๋‹ฌ๋ฐ›์€ ๋ฉ”์‹œ์ง€๋ฅผ topic๋ณ„๋กœ(Foo, bar) ๋ถ„๋ฅ˜ํ•˜์—ฌ ์Œ“์•„๋†“์œผ๋ฉด, ํ•ด๋‹น topic์„ ๊ตฌ๋…ํ•˜๋Š” consumer๋“ค์ด ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€์ ธ๊ฐ€์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ broker์— ๋Œ€ํ•œ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ๋Š” ์ด๋ฏธ์ง€ 1. Kafka ์•„ํ‚คํ…์ฒ˜์™€ ๊ฐ™์ด ๐ŸŒŽApache ZooKeeper๊ฐ€ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋‹ด์œผ๋กœ, Apache Kafka์— ๋Œ€ํ•œ ์ž๋ฃŒ๋ฅผ ์ฐพ๋‹ค๊ฐ€ Apache Kafka์—์„œ Zookeeper์„ ์ œ๊ฑฐํ•œ๋‹ค๋Š” ์†Œ์‹์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๐ŸŒŽ์•„ํŒŒ์น˜ ์นดํ”„์นด์—์„œ โ€˜์ฃผํ‚คํผโ€™ ๋น ์ง„๋‹คโ€ฆโ€๋‚ด๋ถ€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ”„๋กœํ† ์ฝœ๋กœ ๋Œ€์ฒดโ€


์กฐ๊ธˆ ๋” ๊นŠ์ด ๋“ค์–ด ๊ฐ€๊ธฐ ์ „, Apache Kafka์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํ”„๋กœ๋“€์„œ(Producer) : ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ  Kafka ํด๋Ÿฌ์Šคํ„ฐ์— ์ ์žฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค.
  • ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ(Kafka Cluster) : ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์นดํ”„์นด ์„œ๋ฒ„๋กœ ์ด๋ฃจ์–ด์ง„ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งํ•˜๋ฉฐ, ์นดํ”„์นด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ด๋ฃจ๋Š” ๊ฐ ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ํ† ํ”ฝ(Topic) : Kafka ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์‹œ ๊ทธ ๊ธฐ์ค€์ด ๋˜๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ํ† ํ”ฝ์€ Kafka ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ•˜๋‚˜์˜ ํ† ํ”ฝ์€ 1๊ฐœ ์ด์ƒ์˜ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ธŒ๋กœ์ปค(Broker) : Broker๋Š” ์‹คํ–‰ ๋œ Kafka serve ์ค‘ 1๋Œ€๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค.
  • ํŒŒํ‹ฐ์…˜(Partition) : ๊ฐ ํ† ํ”ฝ ๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌํ•˜๋Š” ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. Kafka์—์„œ๋Š” ํ† ํ”ฝ ์•ˆ์— ํŒŒํ‹ฐ์…˜์„ ๋‚˜๋ˆ„์–ด ๊ทธ ์ˆ˜ ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • Offset : ํŒŒํ‹ฐ์…˜ ๋‚ด์˜ ๊ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ์ˆœ์ฐจ์ ์ธ ID๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค.
  • ์ฃผํ‚คํผ(Zookeeper) : ์ฃผํ‚คํผ๋Š” ๋ถ„์‚ฐ ์ฝ”๋””๋„ค์ด์…˜ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. Kafka ๋ธŒ๋กœ์ปค๋ฅผ ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์ฝ”๋””๋„ค์ดํŒ…ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน(Consumer Group) : ์ปจ์Šˆ๋จธ์˜ ์ง‘ํ•ฉ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์นดํ”„์นด์—์„œ๋Š” ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์œผ๋กœ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉฐ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน ์•ˆ์˜ ์ปจ์Šˆ๋จธ ์ˆ˜๋งŒํผ ํŒŒํ‹ฐ์…˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ์ฒ˜๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • Broker Partition Replication : Replication์€ ๊ฐ Topic์˜ Partition๋“ค์„ Kafka Cluster๋‚ด์˜ ๋‹ค๋ฅธ Broker๋“ค๋กœ ๋ณต์ œํ•˜๋Š” ๊ฒƒ์„ ๋งํ•˜๋ฉฐ Topic์ƒ์„ฑ ์‹œ Replication์˜ ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ๋œ Replication์€ Leader์™€ Follower๋กœ ๋‚˜๋‰˜์–ด ISR(In Sync Replica)์ด๋ผ๋Š” ์ผ์ข…์˜ Replication Group์„ ํ˜•์„ฑํ•˜์—ฌ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  • ISR(In Sync Replica) : Reader, Follower ํŒŒํ‹ฐ์…˜์ด ๋ชจ๋‘ ๋™๊ธฐํ™”๋œ ์ƒํƒœ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.


Kafka ์•„ํ‚คํ…์ฒ˜์˜ ๊ตฌ์„ฑ์š”์†Œ

1. Topic๊ณผ Partition


Topic์ด๋ฏธ์ง€ 2. Kafka Topic(์ถœ์ฒ˜: Apache Kafka)

ํ•˜๋‚˜์˜ topic์ด 3๊ฐœ์˜ partition์— ๋ถ„์‚ฐ๋˜์–ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ๋˜์–ด์ง€๋Š”๋ฐ, ์ด ๋•Œ ๊ฐ partition์€ 0๋ถ€ํ„ฐ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” offset ๊ฐ’(๊ณ ์œ  ID)์„ ๋ฉ”์‹œ์ง€์— ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. offset ๊ฐ’์€ partition๋งˆ๋‹ค ๋ณ„๋„๋กœ ๊ด€๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— topic๋‚ด์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์‹๋ณ„ํ•  ๋•Œ๋Š” partition ๋ฒˆํ˜ธ์™€ offset ๊ฐ’์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


2. Broker

Kafka Cluster๋Š” ์—ฌ๋Ÿฌ๋Œ€์˜ broker(server)๋กœ ๊ตฌ์„ฑ๋˜์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต 3๊ฐœ ์ด์ƒ์˜ broker๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์šด์˜ํ•˜๋ฉฐ, ๊ฐ๊ฐ์˜ broker๋Š” ๊ณ ์œ ํ•œ id ๊ฐ’์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด์ง‘๋‹ˆ๋‹ค.


Replication์ด๋ฏธ์ง€ 3. Replication(ํŒŒ๋ž€์ƒ‰์ด ๋ฆฌ๋”)

Replication์€ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ฌถ์ธ ๋ธŒ๋กœ์ปค ์ค‘ ์ผ๋ถ€์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์‹คํ•˜์ง€ ์•Š๊ณ  ์•ˆ์ „ ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Kafka์˜ ๋ฐ์ดํ„ฐ ๋ณต์ œ๋Š” ํŒŒํ‹ฐ์…˜ ๋‹จ์œ„๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์œ„์™€ ๊ฐ™์ด 3๊ฐœ์˜ broker๊ฐ€ ์žˆ์„ ๋•Œ, ๋ณต์ œ๋œ ํŒŒํ‹ฐ์…˜์€ 1๊ฐœ์˜ ๋ฆฌ๋”(leader)์™€ N-1๊ฐœ์˜ ํŒ”๋กœ์›Œ(follower)๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ํŒ”๋กœ์›Œ๋Š” ๋ฆฌ๋”์˜ ์˜คํ”„์…‹์„ ํ™•์ธํ•˜๊ณ , ํ˜„์žฌ ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์˜คํ”„์…‹๊ณผ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ ๋ฆฌ๋”๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ž์‹ ์˜ ํŒŒํ‹ฐ์…˜์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํŒŒํ‹ฐ์…˜์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณต์ œ๋˜๋ฏ€๋กœ ๋ณต์ œ ๊ฐœ์ˆ˜๋งŒํผ์˜ ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜์ง€๋งŒ ๋ฐ์ดํ„ฐ์˜ ์•ˆ์ „์ด ๋ณด์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๋น„์šฉ์„ ๊ฐ์ˆ˜ํ•˜๊ณ  ๋ณต์ œ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.


Replication-error์ด๋ฏธ์ง€ 4. Replication-error

์—ฌ๊ธฐ์„œ ๊ฐ‘์ž๊ธฐ ๋ฆฌ๋”์˜ broker์— error๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ํŒ”๋กœ์›Œ ํŒŒํ‹ฐ์…˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฆฌ๋” ํŒŒํ‹ฐ์…˜์˜ ์ง€์œ„๋ฅผ ๋„˜๊ฒจ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ์˜ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


3. Consumers์™€ Consumer Groups


Consumer Groups์ด๋ฏธ์ง€ 5. Consumer Groups

Kafka์˜ ํŒŒํ‹ฐ์…˜์€ consumer group๋‹น ์˜ค๋กœ์ง€ ํ•˜๋‚˜์˜ ์ปจ์Šˆ๋จธ์˜ ์ ‘๊ทผ๋งŒ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋™์ผํ•œ consumer group์— ์†ํ•˜๋Š” ์ปจ์Šˆ๋จธ๋ผ๋ฆฌ๋Š” ๋™์ผํ•œ ํŒŒํ‹ฐ์…˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋งŒ์ผ, ์ปจ์Šˆ๋จธ๊ฐ€ ์ถ”๊ฐ€/์ œ๊ฑฐ๋˜๋ฉด ์ถ”๊ฐ€/์ œ๊ฑฐ๋œ ์ปจ์Šˆ๋จธ๊ฐ€ ์†ํ•œ consumer group ๋‚ด์˜ ์ปจ์Šˆ๋จธ๋“ค์˜ ํŒŒํ‹ฐ์…˜ ์žฌ๋ถ„๋ฐฐ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ , broker๊ฐ€ ์ถ”๊ฐ€/์ œ๊ฑฐ๋˜๋ฉด ์ „์ฒด consumer group์—์„œ ํŒŒํ‹ฐ์…˜ ์žฌ๋ถ„๋ฐฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด consumer group์„ ๊ตฌ์„ฑํ•˜๋Š” ์ปจ์Šˆ๋จธ์˜ ์ˆ˜๊ฐ€ ํŒŒํ‹ฐ์…˜์˜ ์ˆ˜๋ณด๋‹ค ์ž‘์œผ๋ฉด ํ•˜๋‚˜์˜ ์ปจ์Šˆ๋จธ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์„ ์†Œ์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ฐ˜๋Œ€๋กœ ์ปจ์Šˆ๋จธ์˜ ์ˆ˜๊ฐ€ ํŒŒํ‹ฐ์…˜์˜ ์ˆ˜๋ณด๋‹ค ๋งŽ๋‹ค๋ฉด ๋ช‡๋ช‡ ์ปจ์Šˆ๋จธ๋Š” ์ˆ˜ํ–‰ ํ•˜๋Š” ๊ฒƒ์ด ์—†์ด ๋†€๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜์™€ ์ปจ์Šˆ๋จธ ์ˆ˜์˜ ์ ์ ˆํ•œ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.



๋๋งบ์Œ

Apache Kafka๋Š” ๊ทผ๋ž˜์— ๊ฐ€์กŒ๋˜ ๊ฐ€์žฅ ์ตœ๊ณ ์˜ ๊ด€์‹ฌ์‚ฌ ์˜€๋Š”๋ฐ, ์˜ค๋Š˜ ๊ณต๋ถ€๋ฅผ ํ•ด๋ณด๋ฉด์„œ ์ด๋ก ๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•˜๋‹ค๋Š” ๋Š๋‚Œ์„ ์ ˆ์‹คํžˆ ๊ฒฝํ—˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํฌ์ŠคํŒ…์—๋Š” ์ด๋ก ์ด ์•„๋‹Œ ์‹ค์ „ํŽธ์˜ Kafka๋ฅผ ํฌ์ŠคํŒ… ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๊ณต๋ถ€ํ•˜๋ฉด์„œ ํฌ์ŠคํŒ…์„ ํ•˜๋‹ค๋ณด๋‹ˆ ๋งŽ์€ ๋ถ€์กฑํ•œ ์ ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜น์—ฌ๋‚˜ ๋‚ด์šฉ์— ์ด์ƒ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๐Ÿ˜€๐Ÿ‘



[์ฐธ๊ณ ์ž๋ฃŒ]

comments powered by Disqus