๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Kafka

Consumer - 1

by Soono991 2023. 4. 16.
๐Ÿ’ก ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Consumer์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

Consumer(์ดํ•˜ ์ปจ์Šˆ๋จธ)๋Š” ํ”„๋กœ๋“€์„œ๊ฐ€ ๋ธŒ๋กœ์ปค์— ์ „์†กํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ปจ์Šˆ๋จธ๋Š” ๋ฐ˜๋“œ์‹œ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์— ์†ํ•ด์•ผ ํ•˜๋ฉฐ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจ์Šˆ๋จธ๋“ค์€ ํ† ํ”ฝ ํŒŒํ‹ฐ์…˜ ๋ณ„๋กœ ๋ถ„๋ฐฐ๋ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜: https://ooeunz.tistory.com/136

 

 

์•„ํŒŒ์น˜์™€ ์ปจํ”Œ๋ฃจ์–ธํŠธ ๊ณต์‹ ๋ฌธ์„œ์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ถœ์ฒ˜: https://kafka.apache.org/documentation/#theconsumer
์ถœ์ฒ˜: https://docs.confluent.io/platform/current/clients/consumer.html#ak-consumer

์ปจ์Šˆ๋จธ๋Š” ์˜คํ”„์…‹ ์œ„์น˜์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๋กœ๊ทธ๋ฅผ ๋ฐ›๋Š”๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์˜คํ”„์…‹ ์œ„์น˜๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ ๊ฐ€์ ธ์™”๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ ๋˜ํ•œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ ์˜คํ”„์…‹ ์œ„์น˜๋Š” __consumer_offset ํ† ํ”ฝ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“ข ์•ž์„œ ์ปจ์Šˆ๋จธ๊ฐ€ ํ”„๋กœ๋“€์„œ๊ฐ€ ๋ธŒ๋กœ์ปค์— ์ „์†กํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์–ด์˜จ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ์ •ํ™•ํžˆ ์–˜๊ธฐํ•˜๋ฉด ์ปจ์Šˆ๋จธ๊ฐ€ subscribe(๊ตฌ๋…)ํ•˜๊ณ  ์žˆ๋Š” ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜ ์ค‘ ๋ฆฌ๋” ํŒŒํ‹ฐ์…˜์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.

์•„๋ž˜ ์ปจํ”Œ๋ฃจ์–ธํŠธ ๊ณต์‹ ๋ฌธ์„œ์˜ consumer groups์— ๋ณด๋‹ค ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

consumer groups

์ถœ์ฒ˜: https://docs.confluent.io/platform/current/clients/consumer.html#consumer-groups

 

 

์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์€ ์ผ๋ถ€ ํ† ํ”ฝ์˜ ๋ฐ์ดํ„ฐ๋ฅผ consume ํ•˜๊ธฐ ์œ„ํ•ด ํ˜‘๋ ฅํ•˜๋Š” ์ปจ์Šˆ๋จธ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ํ† ํ”ฝ์˜ ํŒŒํ‹ฐ์…˜์€ ๊ทธ๋ฃน์˜ ์ปจ์Šˆ๋จธ ๊ฐ„์— ๋ถ„ํ• ๋ฉ๋‹ˆ๋‹ค. ์ƒˆ ๊ทธ๋ฃน ๊ตฌ์„ฑ์›์ด ๋„์ฐฉํ•˜๊ณ  ์ด์ „ ๊ตฌ์„ฑ์›์ด ๋– ๋‚˜๋ฉด ๊ฐ ๊ตฌ์„ฑ์›์ด ํŒŒํ‹ฐ์…˜์˜ ๋น„๋ก€์  ๋ชซ์„ ๋ฐ›๋„๋ก ํŒŒํ‹ฐ์…˜์ด ๋‹ค์‹œ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ Group Rebalancing์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์ด์ „ ๋ฒ„์ „์˜ ์ปจ์Šˆ๋จธ์™€ ์ƒˆ๋กœ์šด ์ปจ์Šˆ๋จธ์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ ์ „์ž๋Š” ๊ทธ๋ฃน ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ZooKeeper์— ์˜์กดํ•˜๋Š” ๋ฐ˜๋ฉด ํ›„์ž๋Š” Kafka ์ž์ฒด์— ๋‚ด์žฅ๋œ ๊ทธ๋ฃน ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋กœํ† ์ฝœ์—์„œ ๋ธŒ๋กœ์ปค ์ค‘ ํ•œ ๋ช…์ด ๊ทธ๋ฃน์˜ ์ฝ”๋””๋„ค์ดํ„ฐ๋กœ ์ง€์ •๋˜๊ณ  ๊ทธ๋ฃน ๊ตฌ์„ฑ์› ๋ฐ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
๊ฐ ๊ทธ๋ฃน์˜ ์ฝ”๋””๋„ค์ดํ„ฐ๋Š” ์ปค๋ฐ‹๋œ ์˜คํ”„์…‹์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋‚ด๋ถ€ ์˜คํ”„์…‹ ํ•ญ๋ชฉ __consumer_offsets์˜ ๋ฆฌ๋”์—์„œ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ทธ๋ฃน์˜ ID๋Š” ์ด ํ† ํ”ฝ์— ๋Œ€ํ•œ ํŒŒํ‹ฐ์…˜ ์ค‘ ํ•˜๋‚˜์— ํ•ด์‹œ๋˜๊ณ  ํ•ด๋‹น ํŒŒํ‹ฐ์…˜์˜ ๋ฆฌ๋”๊ฐ€ ์ฝ”๋””๋„ค์ดํ„ฐ๋กœ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ๊ด€๋ฆฌ๋Š” ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ๋ธŒ๋กœ์ปค์— ๊ฑธ์ณ ๋Œ€๋žต ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„ํ• ๋˜๋ฉฐ, ์ด๋Š” ๋ธŒ๋กœ์ปค ์ˆ˜๋ฅผ ๋Š˜๋ ค ๊ทธ๋ฃน ์ˆ˜๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
์ปจ์Šˆ๋จธ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ํ•ด๋‹น ๊ทธ๋ฃน์˜ ์ฝ”๋””๋„ค์ดํ„ฐ๋ฅผ ์ฐพ๊ณ  ๊ทธ๋ฃน ๊ฐ€์ž… ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ฝ”๋””๋„ค์ดํ„ฐ๋Š” ๊ทธ๋ฃน ์žฌ์กฐ์ •์„ ์‹œ์ž‘ํ•˜์—ฌ ์ƒˆ ๊ตฌ์„ฑ์›์ด ๊ทธ๋ฃน ํŒŒํ‹ฐ์…˜์˜ ๊ณตํ‰ํ•œ ๋ชซ์„ ํ• ๋‹น๋ฐ›๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์žฌ์กฐ์ •์€ ๊ทธ๋ฃน์˜ ์ƒˆ๋กœ์šด ์„ธ๋Œ€๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.
๊ทธ๋ฃน์˜ ๊ฐ ๊ตฌ์„ฑ์›์€ ๊ทธ๋ฃน ๊ตฌ์„ฑ์›์œผ๋กœ ๋‚จ์•„ ์žˆ์œผ๋ ค๋ฉด ์ฝ”๋””๋„ค์ดํ„ฐ์—๊ฒŒ heartbeat๋ฅผ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ๋œ session timeout์ด ๋งŒ๋ฃŒ๋˜๊ธฐ ์ „์— heartbeat๊ฐ€ ์ˆ˜์‹ ๋˜์ง€ ์•Š์œผ๋ฉด ์ฝ”๋””๋„ค์ดํ„ฐ๋Š” ํ•ด๋‹น ๊ตฌ์„ฑ์›์„ ๊ทธ๋ฃน์—์„œ ์ถ”๋ฐฉํ•˜๊ณ  ํ•ด๋‹น ํŒŒํ‹ฐ์…˜์„ ๋‹ค๋ฅธ ๊ตฌ์„ฑ์›์—๊ฒŒ ์žฌํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

 

์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์—์„œ ์–ธ๊ธ‰๋œ ๋‚ด์šฉ ์ค‘  Group Coordinator์™€ Heartbeat ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๋” ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

Group Coordinator

group coordinator๋Š” ์ƒˆ๋กœ์šด ์ปจ์Šˆ๋จธ๊ฐ€ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ๊ธฐ์กด ์ปจ์Šˆ๋จธ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ, ๋˜๋Š” ํ† ํ”ฝ์— ์ƒˆ๋กœ์šด ํŒŒํ‹ฐ์…˜์ด ์ถ”๊ฐ€๋  ๋•Œ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน ๋‚ด์˜ ์ปจ์Šˆ๋จธ๋“ค์—๊ฒŒ ํŒŒํ‹ฐ์…˜์„ ์žฌ ํ• ๋‹นํ•˜๋Š” Rebalancing์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜: https://seonkyukim.github.io/kafka-rebalancing/

 

์ปจ์Šˆ๋จธ ๊ทธ๋ฃน, group coordinator์™€ ์ปจ์Šˆ๋จธ์˜ ๋™์ž‘ ์ˆœ์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1. ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน ๋‚ด์˜ ์ปจ์Šˆ๋จธ๊ฐ€ ๋ธŒ๋กœ์ปค์— ์ตœ์ดˆ ์ ‘์† ์š”์ฒญ ์‹œ Group Coordinator ์ƒ์„ฑ
2. ๋™์ผ group.id๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจ์Šˆ๋จธ๋กœ ๋ธŒ๋กœ์ปค์˜ Group Coordinator๋กœ ์ ‘์†
3. ๊ฐ€์žฅ ๋นจ๋ฆฌ ๊ทธ๋ฃน์— join ์š”์ฒญ์„ ํ•œ ์ปจ์Šˆ๋จธ์—๊ฒŒ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน ๋‚ด์˜ ๋ฆฌ๋” ์ปจ์Šˆ๋จธ๋กœ ์ง€์ •
4. ๋ฆฌ๋”๋กœ ์ง€์ •๋œ ์ปจ์Šˆ๋จธ๋Š” ํŒŒํ‹ฐ์…˜ ํ• ๋‹น ์ „๋žต์— ๋”ฐ๋ผ ์ปจ์Šˆ๋จธ๋“ค์—๊ฒŒ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น
5. ๋ฆฌ๋” ์ปจ์Šˆ๋จธ๋Š” ์ตœ์ข… ํ• ๋‹น๋œ ํŒŒํ‹ฐ์…˜ ์ •๋ณด๋ฅผ Group Coordinator๋กœ ์ „๋‹ฌ
6. ์ •๋ณด ์ „๋‹ฌ ์„ฑ๊ณต์„ ๊ณต์œ ํ•œ ๋’ค ๊ฐœ๋ณ„ ์ปจ์Šˆ๋จธ๋“ค์€ ํ• ๋‹น๋œ ํŒŒํ‹ฐ์…˜์—์„œ ๋ฉ”์‹œ์ง€ ์ฝ์Œ

์ •๋ฆฌํ•˜๋ฉด Group Coordinator๋Š” ๊ฐ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน ๋ณ„๋กœ ์ƒ์„ฑ๋˜๊ณ , ์†ํ•ด ์žˆ๋Š” ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์˜ ๋ฆฌ๋” ์ปจ์Šˆ๋จธ๋ฅผ ์„ ๋ณ„ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋ฉฐ ๊ฐ ๊ทธ๋ฃน ๋‚ด์˜ ์ปจ์Šˆ๋จธ๋“ค์ด ์ƒ์„ฑ/์ข…๋ฃŒ๋จ์— ๋”ฐ๋ผ Rebalancing์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ƒํƒœ๋ฅผ ๊ฐ–๋Š”๋ฐ ์ด๋ฅผ Consumer Group State๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

Consumer Group State

์ถœ์ฒ˜: https://chrzaszcz.dev/2019/06/kafka-rebalancing/

๋ชจ๋“  ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์€ ํ•˜๋‚˜์˜ ํŠน์ • ์ƒํƒœ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ํ—ˆ์šฉ๋˜๋Š” ์ƒํƒœ๋Š” GroupMetatda ํด๋ž˜์Šค์— ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉฐ ์•„๋ž˜์™€ ๊ฐ™์ด 5๊ฐœ์˜ ์ƒํƒœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Empty: ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์€ ์กด์žฌํ•˜์ง€๋งŒ ๋” ์ด์ƒ ์ปจ์Šˆ๋จธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • Stable: Rebalance๊ฐ€ ์ข…๋ฃŒ๋˜๊ณ  ์•ˆ์ •์ ์œผ๋กœ ์ปจ์Šˆ๋จธ๊ฐ€ ์šด์˜๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • Rebalance
    • PreparingRebalance: ๋ฌด์–ธ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฉฐ ํŒŒํ‹ฐ์…˜ ์žฌํ• ๋‹น์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์นดํ”„์นด๊ฐ€ ์žฌ์กฐ์ • ์ค‘์ž…๋‹ˆ๋‹ค.
    • CompletingRebalance: ์นดํ”„๊ฐ€ ์žฌ์กฐ์ •์— ์„ฑ๊ณตํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
    • Dead: ๊ทธ๋ฃน์ด ๊ณง ์นดํ”„์นด ๋…ธ๋“œ์—์„œ ์ œ๊ฑฐ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ํ™œ๋™์ด ์—†๊ฑฐ๋‚˜ ๊ทธ๋ฃน์ด ๋‹ค๋ฅธ Group Coordinator๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Rebalance(์žฌ์กฐ์ •)์— ๊ด€๋ จํ•ด์„œ๋Š” ์œ„ ์ด๋ฏธ์ง€์™€ ๊ฐ™์ด ํฌ๊ฒŒ Empty, Stable, Rebalance 3๊ฐœ์˜ ์ƒํƒœ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, Rebalance๋ฅผ ๋‹ค์‹œ PreparingRebalance, CompletingRebalance, Dead ์ƒํƒœ๋กœ ์„ธ๋ถ„ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Heartbeat

์œ„์— Group Coordinator๊ฐ€ ํŒŒํ‹ฐ์…˜์„ ์žฌ์กฐ์ •ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ Heartbeat failure detected(heartbeat ์‹คํŒจ ๊ฐ์ง€)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

heartbeat๋Š” ์ง์—ญํ•˜๋ฉด '์‹ฌ์žฅ ๋ฐ•๋™' ์ธ๋ฐ, ์ปจ์Šˆ๋จธ์—์„œ heartbeat๋ž€ ๊ฐ ์ปจ์Šˆ๋จธ๋“ค์ด session์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๊ธฐ์ ์œผ๋กœ Group Coordinator์—๊ฒŒ heartbeat ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

์ปจ์Šˆ๋จธ๊ฐ€ Group Coordinator์—๊ฒŒ join, leave๋“ฑ์˜ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์ง€๋งŒ, ์ปจ์Šˆ๋จธ ์žฅ์• ๋กœ ์ธํ•ด leave ์š”์ฒญ์„ ๋ณด๋‚ด์ง€ ๋ชปํ•  ๊ฒฝ์šฐ Group Coordinator๊ฐ€ ์ด๋ฅผ ๊ฐ์ง€ํ•  ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— Group Coordinator๋Š” ์ด๋Ÿฐ ์ปจ์Šˆ๋จธ ์žฅ์•  ๊ฐ์ง€๋ฅผ ์œ„ํ•ด Heartbeat๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

 

heartbeat.interval.ms ์„ค์ •์„ ํ†ตํ•ด ์–ผ๋งˆ์˜ ์ฃผ๊ธฐ๋กœ Group Coordinator๋กœ heartbeat ์š”์ฒญ์„ ๋ณด๋‚ผ์ง€ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ๋งŒ์•ฝ ์„ค์ •ํ•œ ์‹œ๊ฐ„ ๋™์•ˆ heartbeat ์š”์ฒญ์ด ์˜ค์ง€ ์•Š๋Š”๋‹ค๋ฉด Group Coordinator๋Š” ํ•ด๋‹น ์ปจ์Šˆ๋จธ๊ฐ€ ์ด์ƒ์ด ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ Rebalancing์„ ์ง€์‹œํ•˜์—ฌ ํ•ด๋‹น ์ปจ์Šˆ๋จธ๋ฅผ ์ปจ์Šˆ๋จธ ๊ทธ๋ฃน์—์„œ ์ œ์™ธํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

 

heartbeat ์š”์ฒญ์€ heartbeat thread๊ฐ€ ๋ณด๋‚ด๊ฒŒ ๋˜๋ฉฐ heartbeat์™€ ๊ด€๋ จ๋œ ์„ค์ •์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํŒŒ๋ผ๋ฏธํ„ฐ ๊ธฐ๋ณธ๊ฐ’(ms) ์„ค๋ช…
heartbeat.interval.ms 3000 Heartbeat Thread๊ฐ€ Heartbeat๋ฅผ ๋ณด๋‚ด๋Š” ๊ฐ„๊ฒฉ.
session.timeout.ms ๋ณด๋‹ค ๋‚ฎ๊ฒŒ ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
session.timeout.ms์˜ 1/3๋ณด๋‹ค ๋‚ฎ๊ฒŒ ์„ค์ •์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
session.timeout.ms 45000 ๋ธŒ๋กœ์ปค๊ฐ€ ์ปจ์Šˆ๋จธ๋กœ Hearbeat๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.
๋ธŒ๋กœ์ปค๋Š” ์ด ์‹œ๊ฐ„ ๋™์•ˆ Heartbeat๋ฅผ ์ปจ์Šˆ๋จธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์ง€ ๋ชปํ•˜๋ฉด ํ•ด๋‹น ์ปจ์Šˆ๋จธ๋ฅผ ๊ทธ๋ฃน์—์„œ ์ œ์™ธํ•˜๋„๋ก Rebalancing์„ ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค.

 

Consumer - 2

Consumer - 3

 

์ฐธ๊ณ  ์ž๋ฃŒ

 

 

'Kafka' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Consumer - 3  (0) 2023.04.17
Consumer - 2  (0) 2023.04.17
Producer - 2  (0) 2023.04.09
Partitioner & Partition  (0) 2023.04.08
kafka CLI ์‚ฌ์šฉํ•˜๊ธฐ - kafka-configs.(sh | bat)  (0) 2023.04.08

๋Œ“๊ธ€