๋ค์๊ณผ ๊ฐ์ด Partition์ด ์ฌ๋ฌ๊ฐ์ผ ๊ฒฝ์ฐ producer๊ฐ ๋ณด๋ธ ๋ฉ์ธ์ง์ ์์๋ ๋ณด์ฅ ๋ชปํ๋ค. ํ์ง๋ง ๊ฐ์ partition์์์ ์์๋ ๋ณด์ฅ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์์๊ฐ ๋ณด์ฅ๋ ์ ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ผ๊น?
producer๊ฐ ์์๊ฐ ๋ณด์ฅ๋๊ณ ์ถ์ ๋ฉ์์ง๋ฅผ ํ๋์ partition์ ๋ฃ์ผ๋ฉด ๋๋ค. ๋ฉ์์ง๋ key์ ๋ฐ๋ผ ๊ฐ์ ๋ค๋ฅธ partition์ผ๋ก ํ ๋น ๋๋๋ก ํ ์์๋ค. ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ partition์ ์๋ฅผ 1๊ฐ๋ก ๊ณ ์ ํ๋ ๋ฐฉ๋ฒ๋ ์๋ค. ๋ชจ๋ ์ํฉ๊ณผ ์ฌ์ฉ๋์ ๋ฐ๋ผ ์ ์ ํ๊ฒ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
๋ kafka๋ ๋ค์ํ ์๋ฒ(consumer)๊ฐ ๋ฉ์ธ์ง๋ฅผ ๊ฐ์ ธ๊ฐ ์ ์๋ค. ๊ทธ๋ ๋ค๋ฉด ํ consumer๊ฐ ๋จผ์ ๋ฉ์์ง๋ฅผ ๊บผ๋ด๊ฐ๋ฉด ๋ค๋ฅธ consumer๋ ๊ทธ ๋ฉ์ธ์ง๋ฅผ ์ฒ๋ฆฌํ์ง ๋ชปํ๋๊ฒ์ผ๊น?
์๋๋ค. ์ปจ์๋จธ๊ฐ ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ๊ฐ๋ ํ์์ ์ฆ์ ์ญ์ ๋์ง ์์ผ๋ฉฐ , ํ๋์ ํ ํฝ์ ์ฌ๋ฌ Consumer ๊ทธ๋ฃน์ด ๋ถ์ด ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ๊ฐ์ ์๋ค. ์ด๊ฒ์ด ๊ฐ๋ฅํ ์ด์ ๋ ๊ฐ ์ปจ์๋จธ๊ฐ ๊ฐ topic์ ๋ํด ๋ณ๊ณ ์ offset์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ group์ consumer๊ฐ ์ถ๊ฐ/์ ๊ฑฐ ๋ ๋๋ง๋ค rebalancing์ ํ์ฌ consumer๋ค์๊ฒ partition์ ํ ๋นํ๊ฒ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ฐ๊ฐ์ ํํฐ์ ์๋ ์ฌ๋ฌ consumer๊ฐ ํ ๋น ๋ ์ ์๋ค๋ ๊ฑด๊ฐ?
ํ๋์ consumer group์์๋ ๊ฐ๊ฐ์ ํ๋์ ์ ๋ํด ํ๋์ consumer๋ง ํ ๋น ๋๋ค. ์๋ฅผ๋ค์ด ํํฐ์ 3๊ฐ ํ๋์ consumer group์์ ์ปจ์๋จธ๊ฐ 2๊ฐ๋ผ๋ฉด ํ๋์ ์ปจ์๋จธ๋ ๋๊ฐ์ ํํฐ์ ์ ๋ฐ๋ผ๋ณด๊ฒ ๋๋ค. ๋ฐ๋๋ก ํํฐ์ 2๊ฐ , ํ๋์ consumer group์์ ์ปจ์๋จธ๊ฐ 3๊ฐ๋ผ๋ฉด ํ ์ปจ์๋จธ๋ ํํฐ์ ์ ํ ๋น ๋ฐ์ง ๋ชปํ๊ณ ๋๊ฒ ๋๋ค.
Offset์?
offset์ ์ปจ์๋จธ๊ฐ ๋ฉ์์ง๋ฅผ ์ด๋๊น์ง ์ฝ์๋์ง ์ ์ฅํ๋ ๊ฐ์ด๋ค. ์๋ฅผ๋ค์ด offset์ด 5๋ผ๋ฉด 0~4๋ ์ฝ์ ๊ฒ์ด๋ค. offset์ broker์ ๊ธฐ๋ก์ด ๋๋ฉฐ ๊ธฐ๋ก์ด ์ ์ง๋๋ ์๊ฐ์ offsets.retention.minutes ์ ๋ช ์๋ ์๊ฐ๋์ ์ ์ฅ์ด ๋๋ฉฐ ์ด๊ธฐ๊ฐ์ด ์ง๋๋ฉด ๋ฆฌ์ ์ด ๋๋ค. ๊ทธ๋์ ์ด๋ด๋๋ฅผ ๋๋นํ์ฌ auto.offset.reset ์ ์ง์ ํ์ฌ ๋ฆฌ์ ๋ ๋ ๋ฐ๋ผ๋ณด๋ ๊ฐ์ ์ค์ ํ ์ ์๋ค.
์ฐธ๊ณ
Apache Kafka ๊ธฐ๋ณธ ๊ฐ๋ (Partition / Consumer / Consumer Group/ Offset Management)