05. Consumer

Consumer

Partition์œผ๋กœ๋ถ€ํ„ฐ Record๋ฅผ ๊ฐ€์ ธ์˜ด(Poll)

Consumer Offset

  • consumer๊ฐ€ ์ž๋™์ด๋‚˜ ์ˆ˜๋™์œผ๋กœ ์ฝ์€ ์œ„์น˜๋ฅผ commitํ•˜์—ฌ ๋‹ค์‹œ ์ฝ์Œ์„ ๋ฐฉ์ง€

  • __consumer_offsets Topic์— ConsumerGroup, Topic, Partition, next Offset ์ •๋ณด ์ €์žฅ.

Consuming as a Group

  • ๋™์ผํ•œ group.id๋กœ ๊ตฌ์„ฑ๋œ ๋ชจ๋“  Consumer๋“ค์€ ํ•˜๋‚˜์˜ Consumer Group์„ ํ˜•์„ฑ

  • 4๊ฐœ์˜ ํŒŒํ‹ฐ์…˜์ด ์žˆ๋Š” Topic์„ consume ํ•˜๋Š” 4๊ฐœ์˜ Consumer๊ฐ€ ํ•˜๋‚˜์˜ Consumer Group์— ์ž‡๋‹ค๋ฉด, ๊ฐ Consumer๋Š” ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ Partition์—์„œ Record๋ฅผ consumeํ•จ.

  • Partition์€ ํ•ญ์ƒ Consumer Group ๋‚ด์˜ ํ•˜๋‚˜์˜ Consumer์— ์˜ํ•ด์„œ๋งŒ ์‚ฌ์šฉ๋จ

  • Consumer๋Š” ์ฃผ์–ด์ง„ Topic์—์„œ 0๊ฐœ ์ด์ƒ์˜ ๋งŽ์€ Partition์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.

Multi Consumer Group

  • Partition์„ ๋ถ„๋ฐฐํ•˜์—ฌ Consume

  • ๋™์ผํ•œ group.id๋กœ ๊ตฌ์„ฑ๋œ ๋ชจ๋“  Consumer๋“ค์€ ํ•˜๋‚˜์˜ Consumer Group์„ ํ˜•์„ฑ

  • Consumer Group์˜ Consumer๋“ค์€ ์ž‘์—…๋Ÿ‰์„ ์–ด๋Š ์ •๋„ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„ํ• ํ•จ

  • ๋™์ผํ•œ Topic์—์„œ Consumeํ•˜๋Š” ์—ฌ๋Ÿฌ Consumer Group์ด ์žˆ์„ ์ˆ˜ ์žˆ์Œ

Key๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

  • Partition๋ณ„ ๋™์ผํ•œ Key๋ฅผ ๊ฐ€์ง€๋Š” ๋ฉ”์‹œ์ง€ ์ €์žฅ โ†’ key๋ฅผ ํ†ตํ•ด ์ €์žฅ๋  Partition์„ ๊ณ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

Message Ordering(์ˆœ์„œ)

  • Partition์ด 2๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ ๋ชจ๋“  ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ์ „์ฒด ์ˆœ์„œ ๋ณด์žฅ ๋ถˆ๊ฐ€๋Šฅ

  • Partition์„ 1๊ฐœ๋กœ ๊ตฌ์„ฑํ•˜๋ฉด ๋ชจ๋“  ๋ฉ”์‹œ์ง€์—์„œ ์ „์ฒด ์ˆœ์„œ ๋ณด์žฅ ๊ฐ€๋Šฅ โ†’ ์ฒ˜๋ฆฌ๋Ÿ‰ ์ €ํ•˜, ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์˜ ์ด์ ์„ ์žƒ๊ฒŒ ๋œ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์ˆœ์„œ ๋ณด์žฅ์˜ ํ•„์š”์„ฑ์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ํŒ๋‹จ์ด ํ•„์š” โ†’ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ, Key๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์‹œ์ง€๋“ค์˜ ์ˆœ์„œ ๋ณด์žฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

  • ๋™์ผํ•œ Key๋ฅผ ๊ฐ€์ง„ ๋ฉ”์‹œ์ง€๋Š” ๋™์ผํ•œ Partition์—๋งŒ ์ „๋‹ฌ๋˜์–ด Key ๋ ˆ๋ฒจ์˜ ์ˆœ์„œ ๋ณด์žฅ ๊ฐ€๋Šฅ โ†’ ๋ฉ€ํ‹ฐ Partition ์‚ฌ์šฉ ๊ฐ€๋Šฅ

  • ์šด์˜์ค‘์— Partition ๊ฐœ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜๋ฉด ์ˆœ์„œ ๋ณด์žฅ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.

Cardinality(๊ณ ์œ ์„ฑ)

  • ํŠน์ • ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์—์„œ ์œ ๋‹ˆํฌ(Unique)ํ•œ ๊ฐ’์˜ ๊ฐœ์ˆ˜

  • Key Cardinality๋Š” Consumer Group์˜ ๊ฐœ๋ณ„ Consumer๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์˜ ์–‘์— ์˜ํ–ฅ

  • Key ์„ ํƒ์ด ์ž˜๋ชป๋˜๋ฉด ์ž‘์—… ๋ถ€ํ•˜๊ฐ€ ๊ณ ๋ฅด์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.(skewed ๋ฐœ์ƒ)

  • Key๋Š” Integer, String ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹จ์ˆœํ•œ ์œ ํ˜•์ผ ํ•„์š”๊ฐ€ ์—†๋‹ค.

  • Key๋Š” Value์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Avro, Json ๋“ฑ ์—ฌ๋Ÿฌ ํ•„๋“œ๊ฐ€ ์ž‡๋Š” ๋ณต์žกํ•œ ๊ฐ์ฒด ์ผ ์ˆ˜ ์žˆ๋‹ค.

  • ๋”ฐ๋ผ์„œ, Partition ์ „์ฒด์— Record๋ฅผ ๊ณ ๋ฅด๊ฒŒ ๋ฐฐํฌํ•˜๋Š” Key๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ค‘์š”

Consumer Failure

  • ์žฅ์•  ๋ฐœ์ƒ ์‹œ, Consumer Rebalancing ๋ฐœ์ƒ

  • Consumer Group ๋‚ด์˜ ๋‹ค๋ฅธ Consumer๊ฐ€ ์‹คํŒจํ•œ Consumer๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ Partition์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์ฒ˜๋ฆฌ

  • Partition์€ ํ•ญ์ƒ Consumer Group๋‚ด์˜ ํ•˜๋‚˜์˜ Consumer์— ์˜ํ•ด์„œ๋งŒ ์‚ฌ์šฉ

  • Consumer๋Š” ์ฃผ์–ด์ง„ Topic์—์„œ 0๊ฐœ ์ด์ƒ์˜ ๋งŽ์€ Partition์„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

Last updated