03. Broker, Zookeeper

Kafka Broker

Partition์— ๋Œ€ํ•œ Read ๋ฐ Write๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด

  • Kafka Server๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•จ.

  • Topic ๋‚ด์˜ Partition ๋“ค์„ ๋ถ„์‚ฐ, ์œ ์ง€ ๋ฐ๊ด€๋ฆฌ

  • ๊ฐ๊ฐ์˜ Broker๋“ค์€ ID๋กœ ์‹๋ณ„๋จ (๋‹จ, ID๋Š” ์ˆซ์ž)

  • Topic์˜ ์ผ๋ถ€ Partition๋“ค์„ ํฌํ•จ โ†’ Topic ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๋ถ„(Partition)์„ ๊ฐ–์„ ๋ฟ ๋ฐ์ดํ„ฐ ์ „์ฒด๋ฅผ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์Œ

  • Client๋Š” ํŠน์ • Broker์— ์—ฐ๊ฒฐํ•˜๋ฉด ์ „์ฒด ํด๋Ÿฌ์Šคํ„ฐ์— ์—ฐ๊ฒฐ๋จ

  • Kafka Cluster : ์—ฌ๋Ÿฌ ๊ฐœ์˜ Broker๋“ค๋กœ ๊ตฌ์„ฑ๋จ

  • ์ตœ์†Œ 3๋Œ€ ์ด์ƒ์˜ Broker๋ฅผ ํ•˜๋‚˜์˜ Cluster๋กœ ๊ตฌ์„ฑํ•ด์•ผ ํ•จ โ†’ 4๋Œ€ ์ด์ƒ์„ ๊ถŒ์žฅํ•จ

Bootstrap Servers

๋ชจ๋“  Kafka Broker๋Š” Bootstrap(๋ถ€ํŠธ์ŠคํŠธ๋žฉ) ์„œ๋ฒ„๋ผ๊ณ  ๋ถ€๋ฆ„

  • ํ•˜๋‚˜์˜ broker์—๋งŒ ์—ฐ๊ฒฐํ•˜๋ฉด Cluster ์ „์ฒด์— ์—ฐ๊ฒฐ๋จ โ†’ ํ•˜์ง€๋งŒ, ํŠน์ • Broker ์žฅ์• ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ, ์ „์ฒด Broker List(IP, port)๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ž…๋ ฅ ๊ถŒ์žฅ

  • ๊ฐ๊ฐ์˜ Broker๋Š” ๋ชจ๋“  Broker, Topic, Partition์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์Œ(Metadata)

Zookeeper

Zookeeper๋Š” Broker๋ฅผ ๊ด€๋ฆฌ(Broker ๋“ค์˜ ๋ชฉ๋ก/์„ค์ •์„ ๊ด€๋ฆฌ)ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด

  • Zookeeper๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ๋Œ€ํ•ด kafka์— ์•Œ๋ฆผ โ†’ Topic ์ƒ์„ฑ/์ œ๊ฑฐ, Broker ์ถ”๊ฐ€/์ œ๊ฑฐ ๋“ฑ

  • Zookeeper ์—†์ด๋Š” Kafka๊ฐ€ ์ž‘๋™ํ•  ์ˆ˜ ์—†์Œ โ†’KIP-500์„ ํ†ตํ•ด Zookeeper ์ œ๊ฑฐ๊ฐ€ ์ง„ํ–‰์ค‘ โ†’2022๋…„์— Zookeeper๋ฅผ ์ œ๊ฑฐํ•œ ์ •์‹ ๋ฒ„์ „ ์ถœ์‹œ ์˜ˆ์ •

  • Zookeeper๋Š” ํ™€์ˆ˜์˜ ์„œ๋ฒ„๋กœ ์ž‘๋™ํ•˜๊ฒŒ ์„ค๊ณ„ (์ตœ์†Œ 3, ๊ถŒ์žฅ 5)

  • Zookeeper์—๋Š” Leader(writes)๊ฐ€ ์žˆ๊ณ  ๋‚˜๋จธ์ง€ ์„œ๋ฒ„๋Š” Follower(reads)

์•„ํŒŒ์น˜ ์ฃผํ‚คํผ๋ฅผ ๊ฑท์–ด๋‚ธ KIP-500์˜ ์–ผ๋ฆฌ ์–ต์„ธ์Šค๊ฐ€ 2.8 ๋ฆด๋ฆฌ์ฆˆ์— ํฌํ•จ

โ†’ Kafka Raft Metadata ๋ชจ๋“œ, ์ค„์—ฌ์„œ KRaft (ํฌ๋ผํ”„ํŠธ)๋ฐฐํฌ ๋ฐ ์šด์˜์ด ํ›จ์”ฌ ๋” ๊ฐ„๋‹จํ•˜๊ณ , Kafka ์ „์ฒด๋ฅผ ์‹ฑ๊ธ€ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅ

โ†’ ํด๋Ÿฌ์Šคํ„ฐ๋‹น ๋” ๋งŽ์€ ํŒŒํ‹ฐ์…˜ ์ˆ˜์šฉ ๊ฐ€๋Šฅ

โ†’ ์•„์ง ACL ๋ฐ ๊ธฐํƒ€ ๋ณด์•ˆ๊ธฐ๋Šฅ ๋ฐ ํŠธ๋žœ์žญ์…˜์€ ์ง€์› ์•ˆํ•จ

โ†’ ํŒŒํ‹ฐ์…˜ ์žฌํ• ๋‹น ๋ฐ JBOD๋Š” KRaft๋ชจ๋“œ์—์„œ ๋ฏธ์ง€์›(๋…„๋ง์— ์ถœ์‹œ๋  ์นดํ”„์นด ๋ฆด๋ฆฌ์ฆˆ์—์„œ ๊ฐ€๋Šฅํ•ด์งˆ ์—์ •) Event-Driven Consensus ๋กœ ๋™์ž‘ํ•˜๋Š” Quorum Controller

โ†’ KRaft ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•˜์—ฌ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋Ÿผ ์ „์ฒด์— ์ •ํ™•ํ•˜๊ฒŒ ๋ณต์ œ

โ†’ ZooKeeper์˜ ZAB ํ”„๋กœํ† ์ฝœ ๋ฐ Raft ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉ

Zookeeper ์•„ํ‚คํ…์ฒ˜

  • Leader/Follower ๊ธฐ๋ฐ˜ Master/Slave ์•„ํ‚คํ…์ฒ˜

  • Zookeeper๋Š” ๋ถ„์‚ฐํ˜• Configuration ์ •๋ณด ์œ ์ง€, ๋ถ„์‚ฐ ๋™๊ธฐํ™” ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๋Œ€์šฉ๋Ÿ‰ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ๋„ค์ด๋ฐ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด

  • ๋ถ„์‚ฐ ์ž‘์—…์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ Tree ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ โ†’ Zookeeper๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ€ํ‹ฐ Kafka Broker๋“ค ๊ฐ„์˜ ์ •๋ณด(๋ณ€๊ฒฝ ์‚ฌํ•ญ ํฌํ•จ) ๊ณต์œ , ๋™๊ธฐํ™” ๋“ฑ์„ ์ˆ˜ํ–‰

Zookeeper Failover

  • Quorum ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฐ˜

  • Quorum(์ฟผ๋Ÿผ): ํ•ฉ์˜์ฒด๊ฐ€ ์˜์‚ฌ๋ฅผ ์ง„ํ–‰์‹œํ‚ค๊ฑฐ๋‚˜ ์˜๊ฒฐ์„ ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ตœ์†Œํ•œ๋„์˜ ์ธ์›์ˆ˜

  • ๋ถ„์‚ฐ ์ฝ”๋””๋„ค์ด์…˜ ํ™˜๊ฒฝ์—์„œ์˜ ์žฅ์•  ๋Œ€์‘์„ ์œ„ํ•ด ์‚ฌ์šฉ

Last updated