Community

๐Ÿงฉ Kafka ์˜ Rack Awareness ๋ฅผ ์•„์‹œ๋‚˜์š”?

Kafka ๋Š” ์ดˆ๊ธฐ ๋ฒ„์ „๋ถ€ํ„ฐ "broker.rack" ์ด๋ž€ ์„ค์ •์„ ์ œ๊ณตํ•˜์—ฌ, ํŠน์ • ์„œ๋ฒ„ Rack ์ „์ฒด์— ์ „๋ ฅ์ด ๋‚˜๊ฐ€๋Š” ์žฅ์•  ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ Rack ์— ์œ„์น˜ํ•œ Broker Node ์— Replica ๋ฅผ ํ• ๋‹น์‹œ์ผœ ๋™์ž‘ ๋ถˆ๋Šฅ์— ๋น ์ง€์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๊ณ ๊ฐ€์šฉ์„ฑ์˜ ํ‘œ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ์ด๋Ÿฐ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š”๊ฒƒ๊นŒ์ง„ ์ข‹์•˜๋Š”๋ฐ, Kafka ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Leader Replica ์— ๋ฉ”์„ธ์ง€๋ฅผ Write ํ•˜๊ณ  Read ํ•˜๋Š” ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— Client ์ธ Producer ๋‚˜ Consumer ๋Š” ์ž์นซ ๋ฉ”์„ธ์ง€๋ฅผ ์ž๊ธฐ์™€ ๊ฐ€๊น์ง€ ์•Š๋Š” ๋…ธ๋“œ์™€ ํ†ต์‹ ์„ ํ•˜๊ฒŒ ๋˜์–ด ์„ฑ๋Šฅ ์ด์Šˆ๋ฅผ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด Kafka ๋ฒ„์ „ 2.4 ๋ถ€ํ„ฐ Consumer ์„ค์ •์— "client.rack" ์„ ์ถ”๊ฐ€ํ•˜์—ฌ, ISR ์ƒํƒœ์ธ Follower Replica ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์ง€๋งŒ ์ด ๋˜ํ•œ Consumer ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ์— ๊ด€์—ฌํ•˜๋Š” Partition Assignor ๊ฐ€ Rack ์„ค์ •์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ๊ณผ Rack ์ด ๋™์ผํ•˜์ง€ ์•Š๋Š” ๋…ธ๋“œ์˜ ํŒŒํ‹ฐ์…˜ ์˜ค๋„ˆ์‰ฝ์„ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ์–ด ์™„๋ฒฝํ•œ ํ•ด๊ฒฐ์€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ์€ 2023๋…„ DEVIEW ๋•Œ ์ด๋™์ง„๋‹˜๊ป˜์„œ ๋ฐœํ‘œํ•˜์‹  "๋„ค์ด๋ฒ„ ์Šค์ผ€์ผ๋กœ ์นดํ”„์นด ์ปจ์Šˆ๋จธ ์‚ฌ์šฉํ•˜๊ธฐ" ์—์„œ๋„ ๋‹ค๋ค˜์—ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“บ ๋„ค์ด๋ฒ„ ์Šค์ผ€์ผ๋กœ ์นดํ”„์นด ์ปจ์Šˆ๋จธ ์‚ฌ์šฉํ•˜๊ธฐ : https://tv.naver.com/v/33857687 ๊ทธ๋Ÿฌ๋‹ค ๋“œ๋””์–ด Kafka 3.5 ๋ถ€ํ„ฐ ๊ธฐ๋ณธ์ ์œผ๋กœ Built-In ๋˜์–ด์žˆ๋Š” Partition Assignor ์— ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ฒŒ ๋˜์–ด Consumer ์˜ Rack Awareness ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง€๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ์ฒจ๋ถ€๋“œ๋ฆฐ Introducing Apache Kafka 3.5 ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”. ๐Ÿ“ข Introducing Apache Kafka 3.5: https://www.confluent.io/blog/introducing-apache-kafka-3-5/ ๋‹ค๋งŒ ์ง€๊ธˆ๊นŒ์ง€ ์–ธ๊ธ‰๋œ ๋‚ด์šฉ์€ Consumer ์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด๊ณ  ํ˜„์žฌ๊นŒ์ง€ Producer ์— ๋Œ€ํ•ด์„œ๋Š” ์ด๋ ‡๋‹คํ•  ํ•ด๋ฒ•์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ๋‚ด์šฉ์„ ๊ฒ€์ƒ‰ํ•ด๋ณด๋ฉด Producer ์—์„œ ์‚ฌ์šฉํ•˜๋Š” Partitioner ๋ฅผ Customizing ํ•˜๋Š” ๋ฐฉ๋ฒ•(https://levelup.gitconnected.com/rack-aware-partition-assignment-for-kafka-producers-and-consumers-bdf706960491)๋„ ๋‚˜์˜ค์ง€๋งŒ ์—ฌ๊ธฐ์„œ ์ œ์•ˆํ•œ ๋ฐฉ๋ฒ•์€ ๋™์ผํ•œ key ๊ฐ’์„ ๊ฐ€์ง„ message ๋Š” ๋™์ผํ•œ partition ์œผ๋กœ ๊ฐ€์•ผํ•˜๋Š” ์ˆœ์„œ๋ณด์žฅ ๋ฒ•์น™์„ ์œ„๋ฐฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์„œ๋ณด์žฅ์ด ํ•„์š”์—†๋Š” ์ผ€์ด์Šค์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค