05. Consumer
Last updated
Last updated
Partition์ผ๋ก๋ถํฐ Record๋ฅผ ๊ฐ์ ธ์ด(Poll)
consumer๊ฐ ์๋์ด๋ ์๋์ผ๋ก ์ฝ์ ์์น๋ฅผ commitํ์ฌ ๋ค์ ์ฝ์์ ๋ฐฉ์ง
__consumer_offsets Topic์ ConsumerGroup, Topic, Partition, next Offset ์ ๋ณด ์ ์ฅ.
๋์ผํ group.id๋ก ๊ตฌ์ฑ๋ ๋ชจ๋ Consumer๋ค์ ํ๋์ Consumer Group์ ํ์ฑ
4๊ฐ์ ํํฐ์ ์ด ์๋ Topic์ consume ํ๋ 4๊ฐ์ Consumer๊ฐ ํ๋์ Consumer Group์ ์๋ค๋ฉด, ๊ฐ Consumer๋ ์ ํํ ํ๋์ Partition์์ Record๋ฅผ consumeํจ.
Partition์ ํญ์ Consumer Group ๋ด์ ํ๋์ Consumer์ ์ํด์๋ง ์ฌ์ฉ๋จ
Consumer๋ ์ฃผ์ด์ง Topic์์ 0๊ฐ ์ด์์ ๋ง์ Partition์ ์ฌ์ฉํ ์ ์์.
Partition์ ๋ถ๋ฐฐํ์ฌ Consume
๋์ผํ group.id๋ก ๊ตฌ์ฑ๋ ๋ชจ๋ Consumer๋ค์ ํ๋์ Consumer Group์ ํ์ฑ
Consumer Group์ Consumer๋ค์ ์์ ๋์ ์ด๋ ์ ๋ ๊ท ๋ฑํ๊ฒ ๋ถํ ํจ
๋์ผํ Topic์์ Consumeํ๋ ์ฌ๋ฌ Consumer Group์ด ์์ ์ ์์
Partition๋ณ ๋์ผํ Key๋ฅผ ๊ฐ์ง๋ ๋ฉ์์ง ์ ์ฅ โ key๋ฅผ ํตํด ์ ์ฅ๋ Partition์ ๊ณ ์ ํ ์ ์๋ค.
Partition์ด 2๊ฐ ์ด์์ธ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฉ์์ง์ ๋ํ ์ ์ฒด ์์ ๋ณด์ฅ ๋ถ๊ฐ๋ฅ
Partition์ 1๊ฐ๋ก ๊ตฌ์ฑํ๋ฉด ๋ชจ๋ ๋ฉ์์ง์์ ์ ์ฒด ์์ ๋ณด์ฅ ๊ฐ๋ฅ โ ์ฒ๋ฆฌ๋ ์ ํ, ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์ด์ ์ ์๊ฒ ๋๋ค.
๋ฐ์ดํฐ ์์ ๋ณด์ฅ์ ํ์์ฑ์ ๋ํ ์ ํํ ํ๋จ์ด ํ์ โ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ, Key๋ก ๊ตฌ๋ถํ ์ ์๋ ๋ฉ์์ง๋ค์ ์์ ๋ณด์ฅ์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
๋์ผํ Key๋ฅผ ๊ฐ์ง ๋ฉ์์ง๋ ๋์ผํ Partition์๋ง ์ ๋ฌ๋์ด Key ๋ ๋ฒจ์ ์์ ๋ณด์ฅ ๊ฐ๋ฅ โ ๋ฉํฐ Partition ์ฌ์ฉ ๊ฐ๋ฅ
์ด์์ค์ Partition ๊ฐ์๋ฅผ ๋ณ๊ฒฝํ๊ฒ ๋๋ฉด ์์ ๋ณด์ฅ์ด ๋์ง ์๋๋ค.
ํน์ ๋ฐ์ดํฐ ์งํฉ์์ ์ ๋ํฌ(Unique)ํ ๊ฐ์ ๊ฐ์
Key Cardinality๋ Consumer Group์ ๊ฐ๋ณ Consumer๊ฐ ์ํํ๋ ์์ ์ ์์ ์ํฅ
Key ์ ํ์ด ์๋ชป๋๋ฉด ์์ ๋ถํ๊ฐ ๊ณ ๋ฅด์ง ์์ ์ ์๋ค.(skewed ๋ฐ์)
Key๋ Integer, String ๋ฑ๊ณผ ๊ฐ์ ๋จ์ํ ์ ํ์ผ ํ์๊ฐ ์๋ค.
Key๋ Value์ ๋ง์ฐฌ๊ฐ์ง๋ก Avro, Json ๋ฑ ์ฌ๋ฌ ํ๋๊ฐ ์๋ ๋ณต์กํ ๊ฐ์ฒด ์ผ ์ ์๋ค.
๋ฐ๋ผ์, Partition ์ ์ฒด์ Record๋ฅผ ๊ณ ๋ฅด๊ฒ ๋ฐฐํฌํ๋ Key๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ค์
์ฅ์ ๋ฐ์ ์, Consumer Rebalancing ๋ฐ์
Consumer Group ๋ด์ ๋ค๋ฅธ Consumer๊ฐ ์คํจํ Consumer๋ฅผ ๋์ ํ์ฌ Partition์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ์ฒ๋ฆฌ
Partition์ ํญ์ Consumer Group๋ด์ ํ๋์ Consumer์ ์ํด์๋ง ์ฌ์ฉ
Consumer๋ ์ฃผ์ด์ง Topic์์ 0๊ฐ ์ด์์ ๋ง์ Partition์ ์ฌ์ฉ ๊ฐ๋ฅ