[ํ์ต ํ ์คํธ๋ก ๋ฐฐ์๋ณด๋ kafka] 7. ํ์ต ํ ์คํธ๋ก consumer group ๊ณผ rebalancing ์์๋ณด๊ธฐ
ํด๋น ์๋ฆฌ์ฆ์์ ์ ๊ณตํ๋ ๋ชจ๋ ์์ค์ฝ๋๋ github repository ์์ ์ ๊ณต๋ฉ๋๋ค. ์์ธํ ์ฝ๋์ ํ ์คํธ ์ผ์ด์ค๋ github repository ์์ ํ์ธํด์ฃผ์ธ์.
์ด๋ฒ [ํ์ต ํ ์คํธ๋ก ๋ฐฐ์๋ณด๋ kafka] ์๋ฆฌ์ฆ๋ ์๋ ์์๋๋ก ์ฑํฐ๊ฐ ๊ตฌ์ฑ๋๊ณ , ์๋ฆฌ์ฆ ์ธ๋ก kafka ๊ด๋ จํ์ฌ ๋์ฑ ๋ง์ ํ์ต ์ ๋ณด๋ kafka ์ฌํ ์ธ์ ์์ ํ์ธํ ์ ์์ต๋๋ค.
์๋ฆฌ์ฆ ๋ชฉ์ฐจ
- ์๋ฆฌ์ฆ๋ฅผ ์์ํ๋ฉฐ
- kafka ๋น ๋ฅด๊ฒ ํ์ด๋ณด๊ณ ์๋์ฒดํ๊ธฐ
- kafka ์ปจ์ ๊ณผ ์ฉ์ด ์ ๋ฆฌ
- ํ์ตํ ์คํธ ์ค๋นํ๊ธฐ
- ํ์ต ํ ์คํธ๋ก kafka producer ์์๋ณด๊ธฐ
- ํ์ต ํ ์คํธ๋ก kafka consumer ์์๋ณด๊ธฐ
- ํ์ต ํ ์คํธ๋ก partitioning ์์๋ณด๊ธฐ
- ํ์ต ํ ์คํธ๋ก consumer group ๊ณผ rebalancing ์์๋ณด๊ธฐ <-- ํ์ฌ ๊ธ
ํ์ต์ ๋จ๊ณ๋ณ ์์๋ก ๋ชฉ์ฐจ๊ฐ ๊ตฌ์ฑ๋์ด์์ผ๋ฏ๋ก ์ ํ๋์ด์ผ ํ๋ ์ฑํฐ๊ฐ ์กด์ฌํฉ๋๋ค
consumer group
์นดํ์นด์๋ ์ปจ์๋จธ ๊ทธ๋ฃน์ด๋ผ๋ ๊ฐ๋ ์ด ์กด์ฌํ๋ค.
์ฌ๋ฌ ๊ฐ์ ์ปจ์๋จธ๋ค์ ํ๋์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๋ฏธํ๋ค.
์ปจ์๋จธ ๊ทธ๋ฃน์ ๋จ์ํ๊ฒ ์ปจ์๋จธ์ ๊ฐฏ์๋ฅผ ๋๋ฆฐ๊ฒ์ด ์๋๋ค.
์ปจ์๋จธ ๊ทธ๋ฃน์ single logical consumer
์ด๋ค.
์ค์ ์ฐ๋ฆฌ๊ฐ ์์ฑํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ consumer ๋ฅผ physical consumer
๋ผ๊ณ ํ ๋, ๋์ผํ ์ฒ๋ฆฌ๋ฅผ ํ๋ consumer ๋ค์ ๋
ผ๋ฆฌ์ ํ๋๋ก ๋ฌถ์ด๋์๊ฒ ๋ฐ๋ก consumer group
์ด๋ค.
์ด๋ ๊ฒ๋ง ๋งํด์๋ ์ดํด๊ฐ ์ ์๋ ์ ์์ผ๋ ๊ทธ๋ฆผ์ผ๋ก ์์๋ณด๋๋ก ํ์
consumer scaling ๊ณผ consumer group ์ ๊ด๊ณ
๋ค์๊ณผ ๊ฐ์ด consumer ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์
์ด consuemr ๋ ํ๋์ ํ ํฝ์ ๋ํด์ message 2๋ฒ๊น์ง ์ฒ๋ฆฌ๋ฅผ ์๋ฃํ์๋ค.
๊ทธ๋ฆฌ๊ณ message 3๋ฒ์ ๋ํด์ ์ด์ consume ์ ํ ์ฐจ๋ก์ธ๋ฐ, ์ฒ๋ฆฌ๋์ ๋๋ฆฌ๊ธฐ ์ํด consumer ๋ฅผ ํ๋ ์ถ๊ฐํ๋ค๊ณ ํด๋ณด์.
์ด๋ ๊ฒ ๋จ์ํ๊ฒ ์ปจ์๋จธ๋ง ์ถ๊ฐํ์ ๋, ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์์ ์ปจ์๋จธ๊ฐ 1๋ฒ๊ณผ 2๋ฒ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ์์์๋ ๋ถ๊ตฌํ๊ณ ์๋ก์ด ์ปจ์๋จธ๋ ์์ ์ปจ์๋จธ์ ๋ํ ์ ๋ณด๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค์ 1๋ฒ๊ณผ 2๋ฒ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๊ฒ ๋๋ค.
ํ์ง๋ง ์ฌ๊ธฐ์ consumer group ๊ฐ๋ ์ด ๋ฑ์ฅํ๋ค๋ฉด ์ด์ผ๊ธฐ๊ฐ ๋ฌ๋ผ์ง๋ค.
consumer group ์ ๋ค์ ํ ๋ฒ ์ด์ผ๊ธฐํ๋ฉด, single logical consumer
์ด๋ค
์นดํ์นด ๋ธ๋ก์ปค ์ ์ฅ์์ ํ๋์ ๋ ผ๋ฆฌ์ ์ธ ์ปจ์๋จธ๋ก, ๋์ผํ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๋ฌผ๋ฆฌ์ ์ปจ์๋จธ๋ค์ ๋ฌถ์ด์ฃผ๋ ์ญํ ์ ํ๋ค
์ปจ์๋จธ ๊ทธ๋ฃน ๋ด์ ์๋ก์ด ์ปจ์๋จธ๊ฐ ์ถ๊ฐ๋์๋ค๊ณ ํ๋๋ผ๋ ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋ ์ง์ ๋ถํฐ ๋ค์ ์๋น๋ฅผ ์์ํ๊ฒ ๋๋ค.
์ฒ๋ฆฌ๊ฐ ์๋ฃ๋ ์ง์ ์ ์ดํดํ๊ธฐ ์ํด์๋ ๋ค์ ์๊ฐ์ ์ด์ผ๊ธฐํ offset ๊ณผ commit ์ ์์์ผ ํ๋ค. ๋ค์ ๊ธ๋ ๊ณ์ ํ์ตํ๋ค๋ฉด ๋ ๊น์ ์ดํด๊ฐ ๊ฐ๋ฅํ ๊ฒ์ด๋ค
์ด๋ ๊ฒ ์นดํ์นด๋ ํ๋์ ๋ ผ๋ฆฌ์ ์ปจ์๋จธ์ธ ์ปจ์๋จธ ๊ทธ๋ฃน์ ํตํด ๋ค๋ฅธ ์ปจ์๋จธ๋ค๊ณผ ๊ตฌ๋ถํ์ฌ ํ ํฝ์ ์กด์ฌํ๋ ๋ฉ์์ง๋ฅผ ์ ๊ณตํ๋ค
๋ฐ๋ก ํ์ต ํ ์คํธ๋ฅผ ํตํด์ ์์๋ณด๋๋ก ํ์
ํ ์คํธ 1. ๋์ผํ ์ปจ์๋จธ ๊ทธ๋ฃน์ ์ํ consumer ์ ๋ฉ์์ง ์๋น ํ ์คํธ
ํ ์คํธ ์ค๋ช
- ์ฃผ์ 1
my-topic
์ ๋ฉ์์ง๋ฅผ ์ด 6๊ฐ ๋ฐํํ์๋ค.
- ์ฃผ์ 2 & 3
- consumer ์ธ์คํด์ค 2๊ฐ๋ฅผ ์์ฑํ๋ค.
- ๋ ๋ค kafka ์ consumer config ์ธ groupId ๋ก ๋์ผํ
fancy-consumer-group
์ ์ง์ ํ๋ค - ๋ ์ปจ์๋จธ์
my-topic
์ ๊ตฌ๋ ํ์๋ค
- ์ฃผ์ 4.
ExecutorService
๋ฅผ ํตํด ์๋ก์ด ์ค๋ ๋๋ก ๋ฉ์์ง๋ฅผ ์๋นํ๋ค
- ์ฃผ์ 5. & 6.
- ๋ฉ์์ง๋ฅผ ์๋นํ๊ณ ์๋นํ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋๋ก ํ๋ค
โ๏ธ expect: ๋์ผํ ์ปจ์๋จธ ๊ทธ๋ฃน์ด๋ฏ๋ก ์ถ๋ ฅ๋๋ ๋ฉ์์ง๋ ์ด 6๊ฐ
ํ ์คํธ ๊ฒฐ๊ณผ
๋๊ฐ์ ์ปจ์๋จธ๊ฐ ๋ธ๋ก์ปค์ ์ฐ๊ฒฐ๋์์ ์ง๋ผ๋ ํ๋์ ๋ ผ๋ฆฌ์ ์ปจ์๋จธ(์ปจ์๋จธ ๊ทธ๋ฃน) ์ด ๋ธ๋ก์ปค์ ์ฐ๊ฒฐ๋์๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋๊ฐ์ ์ปจ์๋จธ๊ฐ ์ค๋ณต๋์ง ์๋ ๋ฉ์์ง๋ฅผ ์๋นํ๋ค
์ด์ ๋ฐ๋์ ๊ฒฝ์ฐ๋ฅผ ํ ์คํธ ํด๋ณด์
ํ ์คํธ 2. ๋ค๋ฅธ ์ปจ์๋จธ ๊ทธ๋ฃน์ ์ํ consumer ์ ๋ฉ์์ง ์๋น ํ ์คํธ
์ด๋ฒ ํ ์คํธ๋ ์์ ํ ์คํธ์์ consumer group ์ id value ๋ง ๋ณ๊ฒฝํด์ฃผ๋ฉด ํ ์คํธ๊ฐ ๊ฐ๋ฅํ๋ค
ํ ์คํธ ์ค๋ช
- ์ฃผ์ 1
my-topic
์ ๋ฉ์์ง๋ฅผ ์ด 6๊ฐ ๋ฐํํ์๋ค.
- ์ฃผ์ 2 & 3
- consumer ์ธ์คํด์ค 2๊ฐ๋ฅผ ์์ฑํ๋ค.
- ์ฒซ๋ฒ์งธ ์ปจ์๋จธ๋ groupId ๋ก
fancy-consumer-group
์ ์ง์ ํ๋ค - ์ฒซ๋ฒ์งธ ์ปจ์๋จธ๋ groupId ๋ก
not-fancy-consumer-group
์ ์ง์ ํ๋ค
- ์ฃผ์ 5. & 6.
- ๋ฉ์์ง๋ฅผ ์๋นํ๊ณ ์๋นํ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋๋ก ํ๋ค
โ๏ธ expect: ๋ค๋ฅธ ์ปจ์๋จธ ๊ทธ๋ฃน์ด๋ฏ๋ก ์ถ๋ ฅ๋๋ ๋ฉ์์ง๋ ์ด 12๊ฐ
ํ ์คํธ ๊ฒฐ๊ณผ
์นดํ์นด ๋ธ๋ก์ปค ์ ์ฅ์์ ๋ ผ๋ฆฌ์ ์ปจ์๋จธ๊ฐ ์๋ก ๋ค๋ฅด๋ฏ๋ก 2๊ฐ์ ์ปจ์๋จธ๊ฐ 6๊ฐ์ ๋ฉ์์ง๋ฅผ ์๋นํ์๋ค.
๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์ฐ๋ฆฌ์ ์์๋๋ก ์ด 12๊ฐ์ ๋ฉ์์ง๋ฅผ ์๋นํ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๊ทธ๋์ consumer group ์ด ์ ํ์ํ๋ฐ? -> ์ ๋ต์ ์ฒ๋ฆฌ๋
์์ ํ ์คํธ๋ฅผ ํตํด ์ฐ๋ฆฌ๋ consumer group ์ด๋ผ๋ ๋ ผ๋ฆฌ์ ์ปจ์๋จธ์ ๋ํด์ ์ดํดํ์๋ค.
๊ทธ๋ผ ์ด consumer group ์ด ์ ํ์ํ ๊น?
์ง๊ธ๋ถํฐ๋ ์ง๋ ์๊ฐ์ ๋ฐฐ์ด partition ์ด๋ผ๋ ๊ฐ๋ ์ ์ถ๊ฐํด ์ค๋ช ์ ์งํํ๋ ค ํ๋ค. ๋ง์ฝ partition ์ ๋ํ ์ดํด๊ฐ ์์ผ๋ฉด ์๋ ๋ด์ฉ์ ๋ฐ๋ผ๊ฐ๊ธฐ ํ๋ค ์ ์์ผ๋ฏ๋ก ๋์๊ฐ์ ํ์ตํ๊ธธ ๊ถ์ฅํ๋ค
์ปจ์๋จธ๊ฐ ํ ํฝ์ ๋ฉ์์ง๋ฅผ ์๋นํ๋ค
๋ ๋ง์ ์ ํํ ์ด์ผ๊ธฐํ๋ฉด ์ปจ์๋จธ๊ฐ ํํฐ์
์ ๋ฉ์์ง๋ฅผ ์๋นํ๋ค
๋ ๊ฒ๊ณผ ๋์ผํ๋ค.
์ด ๋ง์ ๊ทธ๋ฆผ์ผ๋ฃ ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
ํ๋์ ํ ํฝ์ 3๊ฐ์ ํํฐ์ ์ด ์กด์ฌํ๋ ํ๋์ ์ปจ์๋จธ๊ฐ ๋ฉ์์ง๋ค์ ์๋นํ๊ณ ์๋ ๊ทธ๋ฆผ์ด๋ค.
๋ง์ฝ ์ฌ๊ธฐ์ ํ ํฝ์ ๋งค์ฐ ๋ง์ ์์ ๋ฉ์์ง๊ฐ ๋ฐํ๋๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
์ปจ์๋จธ ํ๋๊ฐ ์ฒ๋ฆฌํ ์ ์๋ ๋ฉ์์ง์ ์ฒ๋ฆฌ๋์ ์ ํด์ ธ์๊ธฐ ๋๋ฌธ์ ์์คํ ์ ์ฒ๋ฆฌ์จ ์ ๋ฎ์์ง๊ฒ ๋ ๊ฒ์ด๋ค
๋ฐ๋ก ์ด๋ฐ ์ํฉ์์ ์นดํ์นด๋ consumer group
์ ์ด์ฉํ๋ค.
์ปจ์๋จธ๊ฐ ์ฒ๋ฆฌํ๋ ๋ฉ์์ง์ ์ฒ๋ฆฌ๋์ ๋๋ฆฌ๊ธฐ ์ํด ๋์ผํ ๊ธฐ๋ฅ์ ์ํํ๋ consumer instance ๋ฅผ ๋๋ ค ์ฒ๋ฆฌ๋ฅผ ๋ณ๋ ฌ๋ก ์คํ์ํค๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์ ์ค์ํ ๊ฐ๋ ์ด ์กด์ฌํ๋๋ฐ,
consumer group ๊ณผ partition
์ปจ์๋จธ ๊ทธ๋ฃน์ ์ดํดํ๊ธฐ ์ํด์ partition ์ ๋งค์ฐ ์ค์ํ๋ค.
kafka ๋ ๋ฉ์์ง์ ์์๋ณด์ฅ์ ์ํด ํ๋์ partition ์๋ ํ๋์ consumer ๋ง ์ ์ ํ ์ ์๋๋ก ์ค๊ณ๋์๋ค.
๊ทธ๋์ ๊ฐ์ ์ปจ์๋จธ ๊ทธ๋ฃน ๋ด์ ์๋ ์ปจ์๋จธ ์ธ์คํด์ค ํ๋๋, ์ค๋ก์ง ํ๋์ ํํฐ์ ์ ๋ฉ์์ง๋ง ์๋นํ ์ ์๋ค.
๊ฒฐ๊ตญ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ํํ์ ๊ตฌ์ฑ์ ๋ถ๊ฐ๋ฅํ๋ค
๊ทธ๋ผ ๋ฐ๋๋ก ํ๋์ ์ปจ์๋จธ๊ฐ ๋๊ฐ์ ํํฐ์ ์ ๋ฉ์์ง๋ฅผ ์๋นํ๋ ๊ฒ์ ๊ฐ๋ฅํ ๊น?
๊ฐ๋ฅํ๋ค.
๊ฒฐ๋ก ์ ์ด๋ ๋ค.
- ํํฐ์ : ๋ฌด์กฐ๊ฑด ํ๋์ ์ปจ์๋จธ์๋ง ํ ๋น์ด ๋์ด์ผ ํจ
- ์ปจ์๋จธ: ํ๋ ๋๋ ํ๋ ์ด์์ ํํฐ์ ์ ๋ฉ์์ง๋ฅผ ์๋นํ ์ ์์
๋๋ง ํ ๊ฑฐ ์์ด ์์์ ๋ฐฐ์ด ๋ด์ฉ์ ํ์ต ํ ์คํธ๋ก ์์๋ณด์
ํ ์คํธ 3. [ํํฐ์ -3] : [1-์ปจ์๋จธ] ํ ์คํธ
ํ ์คํธ ์ค๋ช
- ์ฃผ์ 1
my-topic
์ ๋ฉ์์ง๋ฅผ ์ด 6๊ฐ ๋ฐํํ์๋ค.- 3๊ฐ์ ํํฐ์ ์ ์ ํ๊ฒ ๋ถ๋ฐฐ๋์์ ๊ฒ์ด๋ค(ํํฐ์ ์ค์ ์ kafka test ์ธํ ์ ํด์ฃผ์๋ค)
- ์ฃผ์ 2
- consumer ์ธ์คํด์ค ํ๋๋ง ์์ฑํ๋ค
- ์ฃผ์ 3
- ์๋ก์ด ์ค๋ ๋๋ฅผ ์ด๊ณ ๋ฉ์์ง๋ฅผ ์๋นํ๋ค
- ์ฃผ์ 4
- ๋ฉ์์ง๋ฅผ ์๋นํ๊ณ ์๋นํ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋๋ก ํ๋ค
โ๏ธ expect: ํ๋์ ์ปจ์๋จธ๊ฐ 3๊ฐ์ ํํฐ์ ๋ฉ์์ง 6๊ฐ๋ฅผ ๋ชจ๋ ์๋น
ํ ์คํธ ๊ฒฐ๊ณผ
์์ํ๋ค ์ถ์ด ํ๋์ ์ปจ์๋จธ๊ฐ 3๊ฐ์ ํํฐ์ ์ ๋ฉ์์ง๋ฅผ ๋ชจ๋ ์๋นํ ๊ฒ์ ์ ์ ์๋ค
ํ ์คํธ 4. [ํํฐ์ -1] : [3-์ปจ์๋จธ] ํ ์คํธ
ํ ์คํธ ์ค๋ช
- ์ฃผ์ 1
my-topic
์ ๋ฉ์์ง๋ฅผ ์ด 6๊ฐ ๋ฐํํ์๋ค.- 1๊ฐ์ ํํฐ์ ์๊ฒ ๋ชจ๋ ๋ฉ์์ง๊ฐ ๋ค์ด๊ฐ์ ๊ฒ์ด๋ค
- ์ฃผ์ 2
- consumer ์ธ์คํด์ค 3๊ฐ ์์ฑํ๋ค
- ์ฃผ์ 3
- ์๋ก์ด ์ค๋ ๋๋ฅผ ์ด๊ณ ๋ฉ์์ง๋ฅผ ์๋นํ๋ค
- ์ฃผ์ 4
- ๋ฉ์์ง๋ฅผ ์๋นํ๊ณ ์๋นํ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋๋ก ํ๋ค
โ๏ธ expect: ํ๋์ ์ปจ์๋จธ์์๋ง ๋ฉ์์ง๋ฅผ ์ถ๋ ฅ
ํ ์คํธ ๊ฒฐ๊ณผ
์ค์ ๋ก 3๊ฐ์ ์ปจ์๋จธ๊ฐ ์ฐ๊ฒฐ์ ์๋ํ์ง๋ง, ์ค์ ๋ก ํํฐ์ ์ ์ ์ ํ ์ปจ์๋จธ๋ 1๊ฐ ๋ฟ์ด๋ค.
๊ฒฐ๊ตญ ๊ฒฐ๊ณผ๋ก ํ๋์ ์ปจ์๋จธ์์๋ง ๋ฉ์์ง๋ฅผ ์๋นํ๋ ๊ฒ์ ์ ์ ์๋ค
ํํฐ์ ์์ ์ปจ์๋จธ ๊ทธ๋ฃน์ ์ปจ์๋จธ ์์ ๊ด๊ณ
์์ ํ ์คํธ๋ฅผ ํตํด์ ํํฐ์ ์์ ์ปจ์๋จธ ์์ ๊ด๊ณ์ ๋ํด์๋ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ฆฌํ ์ ์๋ค
ํํฐ์ ์ > ์ปจ์๋จธ ์
- ํน์ ์ปจ์๋จธ๋ ํน์ ํํฐ์ 2๊ฐ ์ด์์ ์ปจ์ํ ์ ์์
ํํฐ์ ์ < ์ปจ์๋จธ ์
- ํน์ ์ปจ์๋จธ๋ ๋๊ณ ์์ (1 ํํฐ์ :1 ์ปจ์๋จธ ์์น๋๋ฌธ์)
ํํฐ์ ์ == ์ปจ์๋จธ ์
- ๊ฐ์ฅ ์ต์ ์ ์ฒ๋ฆฌ๋
consumer group ๊ณผ rebalancing
์์์ ํ๋์ ์ปจ์๋จธ๊ฐ ๋๊ฐ์ ํํฐ์ ์ ๋ฉ์์ง๋ฅผ ์๋นํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค๊ณ ํ๋ค.
์นดํ์นด๋ ์ด๋ฌํ ํน์ฑ์ ์ด์ฉํด์ ํ๋ ฅ์ฑ(resilience) ๋ฅผ ์ ๊ณตํ๋ค.
๊ทธ๋ฆผ์ผ๋ก ์์๋ณด์.
์๋ฅผ ๋ค์ด 3๊ฐ์ ํํฐ์ ์ ๊ฐ๊ฐ ์ปจ์๋จธ๊ฐ ์ฐ๊ฒฐ๋์ด์๋ ์ํ๋ก ์๋น์ค๊ฐ ์ ๊ณต๋๊ณ ์์๋ค.
ํ์ง๋ง ํน์ ํํฐ์ ์ ์ฐ๊ฒฐ๋ ์ปจ์๋จธ๊ฐ ์ ๊ธฐ๋ฅ์ ํ์ง ๋ชปํ๋ ์ํ๊ฐ ๋์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
๊ทธ๋ผ ํน์ ํํฐ์ ์ ๋ฉ์์ง๊ฐ ์๋น๋์ง ๋ชปํ ๋ฉ์์ง๋ค์ ์๊ฐ ๋์ด๋๊ฒ ๋๊ณ , ์ ๋ฐ์ ์ธ ์ฒ๋ฆฌ๋์ด ๋ฎ์์ง๊ฒ ๋๋ค.
์ด๋ฌํ ์ํฉ์์ ์นดํ์นด๋ rebalance
๋ผ๋ ๊ณผ์ ์ ํตํด ์ปจ์๋จธ ๊ทธ๋ฃน ๋ด์ ๊ฐ์ฉ ์ปจ์๋จธ๋ฅผ ์ ์ ํ์ฌ ํํฐ์
์ ๋ฉ์์ง ์์ ๊ถ์ ์ด์ ํ๋ค.
์์ ๊ทธ๋ฆผ์ rebalance ๋ฅผ ํตํด์ ์ฅ์ ๊ฐ ๋ฐ์ํ ์ปจ์๋จธ์ ๋ฌผ๋ ค์๋ ํํฐ์ ์ ๋ค๋ฅธ ์ปจ์๋จธ์๊ฒ ์์ ๊ถ์ ์ด์ ํ ๊ฒ์ ํํํ ๊ทธ๋ฆผ์ด๋ค.
์ด๋ป๊ฒ ์ปจ์๋จธ๋ ํํฐ์ ์ ์์ ๊ถ์ ์ ์งํ ๊น?
ํน์ ํํฐ์ ์ ์ปจ์๋จธ๊ฐ ์ ์์ ์ผ๋ก ์ฐ๊ฒฐ๋์์์ ๋ณด์ฅํ๋ ๋ฐฉ์์ hart beat check ๋ฅผ ํตํด ์งํ๋๋ค.
์ผ์ ์ฃผ๊ธฐ๋ก ์ฒดํฌํ๋ ํํธ๋นํธ
๊ฐ ๋ธ๋ก์ปค์ ์ ๋์ฐฉํ๋ค๋ฉด ์ปจ์์ด ์ ๋๋ก ๋๊ณ ์๋ค๋ ๋ป์ด๋ฏ๋ก ๊ณ์ํด์ ์์ ๊ถ์ ์ ์ง์ํจ๋ค
์ด๋ฌํ ํํธ๋นํธ๋ ์ปจ์๋จธ๊ฐ poll()
์ฐ์ฐ์ ์ํํ ๋์ ๊ฐ์ ธ๊ฐ ๋ฉ์์ง์ offset ์ commit ํ ๋ ํจ๊ป ๋ณด๋ด๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
๋ง์ฝ ์ค๋ ์๊ฐ๋์ ํํธ๋นํธ ์ฒดํฌ๊ฐ ๋์ง ์์ผ๋ฉด ํํฐ์ ์ ์ฐ๊ฒฐ๋ ์ธ์ ์ ํ์์์์ด๋ผ ํ๋จํ๊ณ ์ปจ์๋จธ๊ฐ ๋ค์ด๋์๋ค๊ณ ์์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ์์๋๋ ๊ฒ์ด๋ค.
๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ์์๋๋ฉด ์ผ์ ์๊ฐ๋์ ๋ฉ์์ง๋ ์ฒ๋ฆฌํ ์ ์๋ ์ํ๊ฐ ๋๋ค. ์ฆ, ๋ชจ๋ ์ปจ์๋จธ๊ฐ ๋ฉ์์ง๋ฅผ ์๋นํ ์ ์๊ฒ ๋๋ค.
๊ทธ๋์ ์ปจ์๋จธ๊ฐ ๊ณ์ํด์ ์ฃฝ์๋ค ์ด์๋๋ ๊ฒฝ์ฐ์๋ ๋จ์ ๋ฉ์์ง ์ฒ๋ฆฌ๋์ ๋ํ ๋ฌธ์ ๋ฅผ ๋์ด ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ๋ํ side-effect ๋ ํจ๊ป ๊ณ ๋ คํด์ผ ํ๋ค
ํ์ต ํ ์คํธ ์ ๋ฆฌ
- โ ๋์ผํ ์ปจ์๋จธ ๊ทธ๋ฃน์ ์๋ ์ปจ์๋จธ๋ผ๋ฉด ์๋ก ์ปจ์๋จธ
- โ ์๋ก ๋ค๋ฅธ ์ปจ์๋จธ ๊ทธ๋ฃน์ ํ ํฝ์ ๋ฉ์์ง๋ฅผ ์๋นํ๋ offset ์ ๊ฐ๊ฐ ๋ฐ๋ก ๊ด๋ฆฌํ๋ค
- โ ์ปจ์๋จธ ๊ทธ๋ฃน ๋ด์ ์ปจ์๋จธ๋ ํ๋ ํน์ ๊ทธ ์ด์์ ํํฐ์ ์ ์์ ๊ถ์ ๊ฐ๋๋ค.(๋ฉ์์ง ์๋น์ ๋ํ)
- โ ๊ฐ์ ์ปจ์๋จธ ๊ทธ๋ฃน ๋ด์์ ํ๋์ ํํฐ์ ์ ๋๊ฐ์ ์ปจ์๋จธ๊ฐ ๋์์ ์์ ๊ถ์ ๊ฐ์ง ์ ์๋ค
- โ
ํํฐ์
๊ณผ ์ปจ์๋จธ์ ์ต์ ์ ์๋
ํํฐ์ ์ == ์ปจ์๋จธ ์
- โ ํํฐ์ ์ ์ฐ๊ฒฐ๋ ์ปจ์๋จธ์ ์ฅ์ ๊ฐ ๋ฐ์ํ์์ ๋ rebalance ๋ฅผ ํตํด ๊ฐ์ฉ ์ปจ์๋จธ์๊ฒ ๊ทธ ๊ถํ์ ์์ํ๋ค
- โ ์ปจ์๋จธ๋ ์์ ์ด ๋ฌธ์ ์์์ ๋ณด์ฅํ๊ธฐ ์ํด heartbeat check ์ ์ํํ๋ค