[Kafka] ๋ฆฌ๋ฐธ๋ฐ์ฑ ์ข ๋ฅ์ ํํฐ์ ํ ๋น ์ ๋ต
๊ฐ์
์นดํ์นด ์ปจ์๋จธ๋ ํ ํฝ์ ๊ฐ ํํฐ์ ์์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ํน์ ์ปจ์๋จธ๊ฐ ๋ฌธ์ ๋ฅผ ๊ฒช๊ฒ ๋๋ฉด ๊ทธ ์ปจ์๋จธ๊ฐ ์ฒ๋ฆฌํ๋ ํํฐ์ ์ ์์ ๊ถ์ ๋ค๋ฅธ ์ปจ์๋จธ๋ก ๋๊ฒจ์ผ ํฉ๋๋ค. ์ด๋ฐ ๊ณผ์ ์ '๋ฆฌ๋ฐธ๋ฐ์ฑ'์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ ์ฃผ๋ก ์๋ ๋ค ๊ฐ์ง ์ํฉ์์ ๋ฐ์ํฉ๋๋ค.
- ์ปจ์๋จธ ๊ทธ๋ฃน์ ์๋ก์ด ์ปจ์๋จธ๊ฐ ์ถ๊ฐ๋ ๋
- ๊ธฐ์กด ์ปจ์๋จธ๊ฐ ๊ทธ๋ฃน์์ ๋๊ฐ ๋
- ๊ตฌ๋ ํ๋ ํ ํฝ์ ์๋ก์ด ํํฐ์ ์ด ์๊ธธ ๋
- ์ปจ์๋จธ๊ฐ ๊ตฌ๋ ํ๋ ํ ํฝ์ด ๋ณ๊ฒฝ๋ ๋
๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ๊ฐ์ฅ ๋ง์ด ์ผ์ด๋๋ ์ผ๋ฐ์ ์ธ ์ํฉ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ์์ ๋๋ค. ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ข ๋ฃ ํ ์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋๋ฉด์, ๊ธฐ์กด ์ปจ์๋จธ๊ฐ ์ญ์ ๋๊ณ ์๋ก์ด ์ปจ์๋จธ๊ฐ ์์ฑ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด ๊ณผ์ ์์ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ์ต์ ๋ ๋ฒ ์ด์ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฆฌ๋ฐธ๋ฐ์ฑ ๊ณผ์ ์ ์๋์ ๊ฐ์ ๋ฌธ์ ์ ์ ๋๋ฐํฉ๋๋ค.
- ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ์งํ๋๋ ๋์ ์ปจ์๋จธ๋ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ์ง ์๋๋ค. ์ด๋ก ์ธํด ์ ํ๋ฆฌ์ผ์ด์ ์ฒ๋ฆฌ์ ์ง์ฐ์ด ๋ฐ์ํ ์ ์๋ค.
- ๋ฆฌ๋ฐธ๋ฐ์ฑ ๊ณผ์ ์์ ์ปจ์๋จธ๊ฐ ํํฐ์ ์ ์ด๋ ์์น๋ถํฐ ๋ฉ์์ง๋ฅผ ์ฝ์ด์ผ ํ ์ง ๊ฒฐ์ ํด์ผ ํ๋๋ฐ, ์ด ๊ณผ์ ์์ ๋ฉ์์ง๊ฐ ์ค๋ณต๋๊ฑฐ๋ ๋๋ฝ๋ ์ ์๋ค.
๋ฆฌ๋ฐธ๋ฐ์ฑ์ ๋ฌด๊ฑฐ์ด ์์ ์ด๊ธฐ์ ์์ฃผ ๋ฐ์ํ๊ฒ ๋๋ฉด ์์คํ ์ ๋ถ๋ด์ด ๋ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ต์ํํ๊ธฐ ์ํ ๋ค์ํ ๋ฐฉ๋ฒ๋ค์ด ์์ง๋ง, ์ด๋ฒ ๊ฒ์๊ธ์์๋ ๊ทธ์ค 'ํํฐ์ ํ ๋น ์ ๋ต'์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
Partition Assignment Strategy(ํํฐ์ ํ ๋น ์ ๋ต)์ด๋?
'Partition Assignment Strategy'๋ ์นดํ์นด ์ปจ์๋จธ๊ฐ ํ ํฝ์ ์ด๋ค ํํฐ์ ์ ์๋นํ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ ๋ฐฉ์์ ์๋ฏธํฉ๋๋ค. ์ด ์ ๋ต์ ๋ฐ๋ผ ์ปจ์๋จธ์ ํํฐ์ ๊ฐ์ ๊ด๊ณ๊ฐ ๊ฒฐ์ ๋๋ฉฐ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํจ์จ์ฑ๊ณผ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์นดํ์นด์ ํํฐ์ ํ ๋น ์ ๋ต์ ํฌ๊ฒ '์ ๊ทน์ ๋ฆฌ๋ฐธ๋ฐ์ฑ'๊ณผ 'ํ๋ ฅ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ'์ผ๋ก ๋๋๋ฉฐ, ์ด์ ๋ฐ๋ผ ์๋์ 4๊ฐ์ง์ ํํฐ์ ํ ๋น ์ ๋ต์ด ์กด์ฌํฉ๋๋ค.
- ๋ ์ธ์ง(Range) ํํฐ์ ํ ๋น ์ ๋ต
- ๋ผ์ด๋ ๋ก๋น(RoundRobin) ํํฐ์ ํ ๋น ์ ๋ต
- ์คํฐํค(Sticky) ํํฐ์ ํ ๋น ์ ๋ต
- ํ๋ ฅ์ ์คํฐํค(CooperativeSticky) ํํฐ์ ํ ๋น ์ ๋ต
๊ฐ๊ฐ ์ธ์ธํ๊ฒ ํ๋์ฉ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ ๊ทน์ ๋ฆฌ๋ฐธ๋ฐ์ฑ(Eager Rebalance)
'๋ ์ธ์ง(Range), ๋ผ์ด๋ ๋ก๋น(RoundRobin), ์คํฐํค(Sticky) ํํฐ์ ํ ๋น ์ ๋ต'์ด ํด๋นํ๋ ๋ฐฉ์์ ๋๋ค.
๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ์ผ์ด๋๊ฒ ๋๋ฉด ๋ชจ๋ ์ปจ์๋จธ๋ ์ํ์น ์นดํ์นด๋ก๋ถํฐ ๋ฐ์ดํฐ ์์ ์ ์ค๋จํ๊ณ , ์์ ๋ค์ด ๊ฐ์ง๊ณ ์๋ ํํฐ์ ์ ๊ทธ๋ฃน ๊ตฌ์ฑ์ ํฌ๊ธฐํฉ๋๋ค. ์ด ๊ณผ์ ์์ ๋ชจ๋ ์ปจ์๋จธ๊ฐ ๋์์ ์์ ์ ๋ฉ์ถ๋ 'stop the world' ํ์์ด ์ผ์ด๋๊ฒ ๋๋ฉฐ, ์ด๋ก ์ธํด ์ ์ฒด ์ปจ์๋จธ ๊ทธ๋ฃน์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ์ผ์์ ์ผ๋ก ์ค๋จ๋ฉ๋๋ค. ์ด ์๊ฐ ๋์ ์ปจ์๋จธ ๊ทธ๋ฃน์ ์ ํด ์ํ๊ฐ ๋์ด ๋ฉ์์ง๋ฅผ ์๋นํ๊ฑฐ๋ ์คํ์ ์ปค๋ฐ์ ํ์ฉํ์ง ์์ต๋๋ค. ์ด์ ๋ฐํด ํ๋ก๋์์ ๊ฒฝ์ฐ์๋ ๋ฆฌ๋ฐธ๋ฐ์ฑ๊ณผ ๋ฌด๊ดํ๊ฒ ํํฐ์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ํด์ ์ฐ๊ธฐ ๋๋ฌธ์ ๋๊ธฐ ์๊ฐ ๋์์๋ LAG๊ฐ ๊ธ๊ฒฉํ๊ฒ ์ฆ๊ฐํ๊ฒ ๋ฉ๋๋ค. ์ด๋ก ์ธํด ์ปจ์๋จธ ๊ทธ๋ฃน์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ์ผ์์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
๋ฆฌ๋ฐธ๋ฐ์ฑ ์ดํ์๋ ์ปจ์๋จธ๋ค์ด ๊ทธ๋ฃน์ ๋ค์ ์ฐธ์ฌํ๊ณ , ์๋ก์ด ํํฐ์ ์ ํ ๋น๋ฐ๊ฒ ๋ฉ๋๋ค. ์ด๋ ์ฃผ์ํ ์ ์, ์ปจ์๋จธ๋ค์ด ์ด์ ์ ๊ฐ์ก๋ ํํฐ์ ์ ๋ฐ๋์ ๋ค์ ๋ฐ๋๋ค๋ ๋ณด์ฅ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฆ ๋ฆฌ๋ฐธ๋ฐ์ฑ ํ์๋ ์ปจ์๋จธ๋ค์ด ์๋ก์ด ํํฐ์ ์ ํ ๋น๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
์ด๋ฌํ ํน์ฑ๋ค๋ก ์ธํด, '์ ๊ทน์ ๋ฆฌ๋ฐธ๋ฐ์ฑ'์ ๊ทธ๋ฃน์ ์์ ์ฑ์ด๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฏ๋ก ์ ์คํ๊ฒ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ํ๋ ฅ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ(Cooperative Rebalance, Incremental Rebalance)
'ํ๋ ฅ์ ์คํฐํค(CooperativeSticky) ํํฐ์ ํ ๋น ์ ๋ต'์ด ํด๋นํ๋ ๋ฐฉ์์ผ๋ก, ํ๋ ฅ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ Kafka v2.4๋ถํฐ ๋์ ๋ ๊ฝค๋ ์ต๊ทผ์ ๋์จ ์ง๋ณด๋ ๋ฆฌ๋ฐธ๋ฐ์ฑ ๋ฐฉ์์ ๋๋ค.
์ด ๋ฐฉ์์ ํํฐ์ ์ ์ผ๋ถ๋ง์ด ํ ์ปจ์๋จธ์์ ๋ค๋ฅธ ์ปจ์๋จธ๋ก ์ด๋ํ๋ ํน์ง์ ๊ฐ์ง๋ฉฐ, ์ด๋ ๋ฆฌ๋ฐธ๋ฐ์ฑ๊ณผ ์ง์ ์ ์ธ ๊ด๋ จ์ด ์๋ ๋ค๋ฅธ ์นดํ์นด ์ปจ์๋จธ๋ค์ด ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๊ณ์ ์งํํ ์ ์๊ฒ ํ์ฌ, ์ ์ฒด ๊ทธ๋ฃน์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํฉ๋๋ค.
'ํ๋ ฅ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ'์ ์์ ์ ์ธ ํํฐ์ ํ ๋น ์ํ๋ฅผ ์ ์ง์ ์ผ๋ก ์ฐพ์๊ฐ๋ ๊ณผ์ ์ผ๋ก, ์ฌ๋ฌ ์ฐจ๋ก์ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ๊ฑฐ์นฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋จ๊ณ์์๋ ๋ฆฌ๋๊ฐ ๋ชจ๋ ์ปจ์๋จธ์๊ฒ ์ผ๋ถ ํํฐ์ ์ ์์ ๊ถ์ ์๊ฒ ๋ ๊ฒ์์ ์๋ฆฌ๊ณ , ์ปจ์๋จธ๋ ์ด๋ฌํ ํํฐ์ ์ ์์ ๊ถ์ ํฌ๊ธฐํฉ๋๋ค. ๊ทธ ํ ๋จ๊ณ์์ ์กฐ์ ์๋ ์ด ๊ณ ์๊ฐ ๋ ํํฐ์ ์ ์๋ก์ด ์ปจ์๋จธ์๊ฒ ํ ๋นํฉ๋๋ค.
์ด๋ฐ ๋ฐฉ์์ ์์ ์ ์ธ ํํฐ์
ํ ๋น ์ํ๊ฐ ์ด๋ฃจ์ด์ง ๋๊น์ง ๋ช ๋ฒ์ ๋ฐ๋ณต์ด ํ์ํ ์ ์์ง๋ง, ์ ๊ทน์ ๋ฆฌ๋ฐธ๋ฐ์ฑ์์ ๋ฐ์ํ๋ ์๋น์ค ์ค๋จ ์ํฉ์ ํผํ ์ ์์ด, ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ๋ง์ ์๊ฐ์ด ์์๋๋ ํฐ ๊ท๋ชจ์ ์ปจ์๋จธ ๊ทธ๋ฃน์์ ํนํ ์ค์ํฉ๋๋ค.๋ฐ๋ผ์ ํ๋ ฅ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ์ ์ฒด ๊ทธ๋ฃน์ ์ฑ๋ฅ์ ์ ์งํ๋ฉด์ ํํฐ์
ํ ๋น์ ์ ์ฐํ๊ฒ ์กฐ์ ํ ์ ์๋ ์ฅ์ ์ด ์์ต๋๋ค. ํ์ง๋ง ์ด ๋ฐฉ์์ ํ์ฉํ ๋์๋ ์ ์คํ๊ฒ ์ ๊ทผํด์ผ ํ๋ฉฐ, ๊ทธ๋ฃน์ ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ์ ๋ต์ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
1. ๋ ์ธ์ง ํํฐ์ ํ ๋น ์ ๋ต
'๋ ์ธ์ง(Range) ํํฐ์ ํ ๋น ์ ๋ต'์ ์ํ์น ์นดํ์นด v2.4์ด์ ๊น์ง๋ ๊ธฐ๋ณธ์ผ๋ก ์ค์ ๋ '์ ๊ทน์ ๋ฆฌ๋ฐธ๋ฐ์ฑ' ๋ฐฉ์์ ํํฐ์ ํ ๋น ์ ๋ต์ ๋๋ค.
์ด ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์งํ๋ฉ๋๋ค.
- ๋จผ์ ๊ตฌ๋ ์ค์ธ ํ ํฝ์ ํํฐ์ ๊ณผ ์ปจ์๋จธ๋ฅผ ์์๋๋ก ๋์ดํ๋ค.
- ์ดํ ๊ฐ ์ปจ์๋จธ๊ฐ ๋ฐ์์ผ ํ ํํฐ์ ์ ์๋ฅผ ๊ฒฐ์ ํ๋๋ฐ, ์ด๋ ํด๋น ํ ํฝ์ ์ ์ฒด ํํฐ์ ์๋ฅผ ์ปจ์๋จธ ๊ทธ๋ฃน์ ์ด ์ปจ์๋จธ ์๋ก ๋๋ ๊ฐ์ด๋ค.
- ๋ง์ฝ ์ปจ์๋จธ ์์ ํํฐ์ ์๊ฐ ์ ํํ ์ผ์นํ๋ค๋ฉด, ๋ชจ๋ ์ปจ์๋จธ๋ ํํฐ์ ์ ๊ท ๋ฑํ๊ฒ ํ ๋น๋ฐ๋๋ค.
- ๊ทธ๋ฌ๋ ํํฐ์ ์๊ฐ ์ปจ์๋จธ ์๋ก ๊ท ๋ฑํ๊ฒ ๋๋์ด์ง์ง ์๋๋ค๋ฉด, ์์์ ์์ ์๋ ์ปจ์๋จธ๋ค์ด ์ถ๊ฐ๋ก ํํฐ์ ์ ํ ๋น๋ฐ๊ฒ ๋๋ค.
์ ๊ทธ๋ฆผ์์ ๊ฐ ํ ํฝ์ ์กด์ฌํ๋ ํํฐ์ ์ ์๋ ์ด 2๊ฐ, ์ปจ์๋จธ ์๋ ์ด 3๊ฐ์ ๋๋ค. ๋ฐ๋ผ์ 2๋ฅผ 3์ผ๋ก ๋๋ ๊ฒฐ๊ณผ์ธ 2/3์ด ๋์ด ํ ์ปจ์๋จธ๋ ํํฐ์ ์ ํ ๋น๋ฐ์ง ๋ชปํ๊ฒ ๋ฉ๋๋ค.
์ด ์ ๋ต์ ํฐ ์ฅ์ ์ค ํ๋๋ ํน์ ๋๋ฉ์ธ์ ๋ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํ ์ปจ์๋จธ์์ ์ผ๊ด๋๊ฒ ๊ด๋ฆฌํ ์ ์๋ค๋ ์ ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ค์๊ฐ ๋ก๊ทธ ๋ถ์ ์์คํ ์์ ํ ํฝ A๊ฐ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ, ํ ํฝ B๊ฐ ํด๋น ๋ก๊ทธ ๋ฐ์ดํฐ์ ๋ํ ์๋ฌ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด ๋ด ์๋ค. ๋ ์ธ์ง ์ ๋ต์ ์ฌ์ฉํ๋ฉด ๋์ผํ ํํฐ์ ๋ฒํธ๋ฅผ ๊ฐ์ง ๋ ์ข ๋ฅ์ ๋ฐ์ดํฐ๊ฐ ๋์ผํ ์ปจ์๋จธ๋ก ํ ๋น๋ฉ๋๋ค. ์ด๋ ๊ฒ ๋๋ฉด, ํ ์ปจ์๋จธ ๋ด์์ ๋ก๊ทธ ๋ฐ์ดํฐ์ ๊ทธ์ ๋ํ ์๋ฌ ์ ๋ณด๋ฅผ ํจ๊ป ์ฒ๋ฆฌํ๊ณ ๋ถ์ํ ์ ์์ด, ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๋ฉด์ ์ฒ๋ฆฌ ํจ์จ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด ์ ๋ต์ ๋จ์ ์ ํํฐ์ ์ ๋ถ๋ฐฐ๊ฐ ๊ท ๋ฑํ์ง ์์ ์ ์๋ค๋ ์ ์ ๋๋ค. ์ฆ ํน์ ์ปจ์๋จธ๊ฐ ๊ณผ๋ถํ๋ฅผ ๊ฒช์ ์ ์์ต๋๋ค. ๋ํ ์๋ก์ด ์ปจ์๋จธ๊ฐ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ๊ธฐ์กด ์ปจ์๋จธ๊ฐ ๊ทธ๋ฃน์์ ๋๊ฐ๋ฉด ์ ์ฒด์ ์ธ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ๋ฐ์ํ์ฌ, ์ ์ ๋์ ๋ชจ๋ ์ปจ์๋จธ๊ฐ ์์ ์ ์ค๋จํ๊ฒ ๋ฉ๋๋ค.
2. ๋ผ์ด๋ ๋ก๋น ํํฐ์ ํ ๋น ์ ๋ต
'๋ผ์ด๋ ๋ก๋น(Round Robin) ํํฐ์ ํ ๋น ์ ๋ต'์ '์ ๊ทน์ ๋ฆฌ๋ฐธ๋ฐ์ฑ' ๋ฐฉ์์ ํํฐ์ ํ ๋น ์ ๋ต ์ค ํ๋๋ก, ํํฐ์ ์ ์ปจ์๋จธ ๊ทธ๋ฃน์ ๋ชจ๋ ์ปจ์๋จธ์๊ฒ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐํ๋ ๋ฐฉ์์ ๋๋ค. '๋ ์ธ์ง(Range)' ์ ๋ต๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, ํํฐ์ ๊ณผ ์ปจ์๋จธ๋ ํ ๋น ์ ์ ์ฌ์ ์ ์์๋ก ์ ๋ ฌ๋ฉ๋๋ค.
๋ผ์ด๋ ๋ก๋น ์ ๋ต์ ์ฃผ์ ์ฅ์ ์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ์ปจ์๋จธ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ์์ต๋๋ค. ์ฆ, ๋ชจ๋ ์ปจ์๋จธ๊ฐ ๊ท ๋ฑํ๊ฒ ์์ ์ ๋ถ์ฐ๋ฐ์ ์ฒ๋ฆฌํ๊ฒ ๋๋ฏ๋ก, ํจ์จ์ ์ธ ๋ฆฌ์์ค ํ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด ์ ๋ต์ ์ฃผ์ ๋จ์ ์ ์ปจ์๋จธ ์๊ฐ ๋ณ๊ฒฝ๋ ๋(์ฆ, ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ๋ฐ์ํ ๋) ํํฐ์ ์ด๋์ ์ต์ํํ๋ ค๋ ์๋๋ฅผ ํ์ง ์๋๋ค๋ ์ ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ์ปจ์๋จธ์ ์ฐ๊ฒฐ์ด ๋์ด์ง๋ฉด, ํด๋น ์ปจ์๋จธ์ ํ ๋น๋์๋ ํํฐ์ ๋ค์ ๋ค๋ฅธ ์ปจ์๋จธ๋ค์๊ฒ ์ฌํ ๋น๋์ด์ผ ํฉ๋๋ค. ์ด๋ฌํ ๋ถํ์ํ ํํฐ์ ์ด๋์ ์ปจ์๋จธ์ ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
์ ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ฉด, ์ปจ์๋จธ 2์ ์ฐ๊ฒฐ์ด ๋์ด์ง ๊ฒฝ์ฐ ํํฐ์ A-1, B-0, B-1์ ํ ๋น์ด ๋ณ๊ฒฝ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด 4๊ฐ์ ํํฐ์ ์ค 3๊ฐ์ ํํฐ์ ์ด ๋ค๋ฅธ ์ฌ์ฉ ๊ฐ๋ฅํ ์ปจ์๋จธ์๊ฒ ๋ค์ ์ฌํ ๋น๋๋ ์ํฉ์ด ๋ฐ์ํฉ๋๋ค. ์ด๋ฌํ ๋ถํ์ํ ํํฐ์ ์ด๋์ ์ปจ์๋จธ๊ฐ ์๋ก์ด ํํฐ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ณ ์ฒ๋ฆฌํ๋ ๋ฐ ์ถ๊ฐ์ ์ธ ์๊ฐ๊ณผ ๋ฆฌ์์ค๊ฐ ์์๋๋ฏ๋ก ์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
3. ์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต
'์คํฐํค(Sticky) ํํฐ์ ํ ๋น ์ ๋ต'๋ '์ ๊ทน์ ๋ฆฌ๋ฐธ๋ฐ์ฑ' ๋ฐฉ์์ ํํฐ์ ํ ๋น ์ ๋ต ์ค ํ๋์ ๋๋ค. ์ด ์ ๋ต์ ๋ฆฌ๋ฐธ๋ฐ์ฑ ์์ ์ด ํ์ํ ๋, ๋ฆฌ๋ฐธ๋ฐ์ฑ ์์ ์ด ์ผ์ด๋๊ธฐ ์ ์ ์ปจ์๋จธ์ ํํฐ์ ์ ๋ณด๋ฅผ ์ฐ์ ์ ์ผ๋ก ๋งคํํ์ฌ ๋ฆฌ๋ฐธ๋ฐ์ฑ ๊ณผ์ ์์ ๋ฐ์ํ ์ ์๋ ๋ถํ์ํ ํํฐ์ ์ด๋์ ์ต์ํํฉ๋๋ค.
์คํฐํค ํ ๋น ๋ฐฉ์์ ๋ผ์ด๋ ๋ก๋น ํ ๋น ์ ๋ต์์ ๋ฐ์ํ ์ ์๋ ๋ถํ์ํ ํํฐ์ ์ด๋ ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ์ต๋๋ค. ์คํฐํค ๋ฐฉ์์ ํํฐ์ ์ด๋์ ์ต์ํํ๋ฉด์๋ ์ฌ์ฉ ๊ฐ๋ฅํ ์ปจ์๋จธ ๊ฐ์ ๊ฐ๋ฅํ ํ ๊ท ํ ์กํ ํ ๋น์ ์ ์งํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ ์ด๋ฏธ์ง์์ ์ปจ์๋จธ 2์ ์ธ์คํด์ค๊ฐ ๋ค์ด๋๊ฑฐ๋ ์คํจํ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ด ์๋ค. ์ปจ์๋จธ 1๊ณผ ์ปจ์๋จธ 3์ ๊ธฐ์กด์ ํ ๋น๋ฐ์๋ ํํฐ์ ์ ๊ทธ๋๋ก ์ ์งํ๊ณ , ์ปจ์๋จธ 2๊ฐ ๊ฐ์ง๊ณ ์๋ ํํฐ์ ์ ์๋ก์ด ์ปจ์๋จธ 3์๊ฒ ํ ๋น๋ฉ๋๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก์จ ๋ถํ์ํ ํํฐ์ ์ด๋์ ์ต์ํํ๊ณ ์์คํ ์ ๊ท ํ์ ์ ์งํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต์ด ํญ์ ๊ธฐ์กด์ ํํฐ์ ๊ณผ ์ปจ์๋จธ๋ฅผ ์ ์งํ๋ ๊ฒ์ ์๋๋๋ค. ์ด ์ ๋ต์ ์ต์ฐ์ ์์๋ ๊ฐ๋ฅํ ํ ๊ท ํ ์กํ ํํฐ์ ํ ๋น์ ์ ์งํ๋ ๊ฒ์ด๋ฉฐ, ๊ทธ๋ค์ ๋ชฉํ๊ฐ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ๋ฐ์ํ ๋ ๊ธฐ์กด์ ํ ๋น๋ ํํฐ์ ์ ๋ณด๋ฅผ ์ต๋ํ ์ ์งํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฐ๋ผ์ ์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต์ ๋ถํ์ํ ํํฐ์ ์ด๋์ ์ต์ํํ๊ณ ๊ท ํ ์กํ ์ฒ๋ฆฌ๋์ ์ ์งํ๋ฉด์ ํจ์จ์ ์ธ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด ์ ๋ต์ด ์ ์ฉ๋๋ ํ๊ฒฝ์์๋ ํํฐ์ ์ ๊ท ํ๊ณผ ๋ฆฌ๋ฐธ๋ฐ์ฑ ๊ณผ์ ์ ํจ์จ์ฑ์ด ์ค์ํ ์์๊ฐ ๋ฉ๋๋ค.
4. ํ๋ ฅ์ ์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต
'ํ๋ ฅ์ ์คํฐํค(CooperativeSticky) ํํฐ์ ํ ๋น ์ ๋ต'์ ๊ธฐ์กด์ '์คํฐํค ํ ๋น ์ ๋ต'์ 'ํ๋ ฅ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ'์ด๋ผ๋ ์๋ก์ด ๊ฐ๋ ์ ์ถ๊ฐํ ๊ฒ์ ๋๋ค. ์ด ์ ๋ต์ ์ ์ฒด ์ปจ์๋จธ ๊ทธ๋ฃน์ด ์๋ ๊ฐ๋ณ ์ปจ์๋จธ์ ์ด์ ์ ๋ง์ถฐ ๋์ฑ ์ ์ฐํ๊ณ ํจ์จ์ ์ธ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์นดํ์นด v2.4๋ถํฐ default๋ก ์ง์ ๋์์ต๋๋ค.
ํ๋ ฅ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ํ์ํ ํน์ ํํฐ์ ์๋ง ์ง์คํ๋ฉฐ, ๊ทธ ์ธ์ ๋๋จธ์ง ํํฐ์ ๋ค์ ๊ทธ๋๋ก ์ ์ง๋๋ ๋ฐฉ์์ ๋๋ค. ์ฆ, ์ปจ์๋จธ ์ฌํ ๋น์ด ํ์ํ ํน์ ํํฐ์ ์ ์๋น๋ง ์ค์งํ๊ณ , ๋ค๋ฅธ ๋๋จธ์ง ํํฐ์ ์์๋ ๊ณ์ํด์ ๋ฐ์ดํฐ๋ฅผ ์๋นํฉ๋๋ค. ์ ์ฒด ์ปจ์๋จธ ๊ทธ๋ฃน์ด ์๋ ๊ฐ๋ณ ์ปจ์๋จธ์ ์์ ์ค๋จ์ ์ต์ํํ๋ฏ๋ก, ์ ์ฒด์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋ ์ ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
๋ฐ๋ผ์ ํ๋ ฅ์ ์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต์ ์ปจ์๋จธ๊ฐ ์ฌํ ๋น๋์ง ์์ ํํฐ์ ์์ ๊ณ์ ๋ฐ์ดํฐ๋ฅผ ์๋นํ ์ ์๋๋ก ์ง์ํ๋ฉฐ, ์ด๋ก ์ธํด ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ์ํฅ์ ์ต์ํํ๋ฉด์ ํจ์จ์ ์ธ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์ด๋ฏธ์ง์ ์์ชฝ์ ์๋ก์ด ์ปจ์๋จธ๊ฐ ์ถ๊ฐ๋ ๋์ด๊ณ , ์๋๋ ๊ธฐ์กด์ ์ปจ์๋จธ๊ฐ ์ ์ธ๋ ๋๋ฅผ ๋ํ๋ ๋๋ค.
ํ๋ ฅ์ ์คํฐํค ์ ๋ต์ ์ปจ์๋จธ ๊ทธ๋ฃน์ ๊ตฌ์ฑ ๋ณ๊ฒฝ์ด ์์ฃผ ๋ฐ์ํ๋ ํ๊ฒฝ์ ํนํ ์ ์ฉํ๋ฉฐ ์ปจ์๋จธ์ ์ถ๊ฐ๋ ์ ๊ฑฐ ๋๋ ํํฐ์ ์ ์ฌํ ๋น์ด ํ์ํ ์ํฉ์์๋ ์ด ์ ๋ต์ ๋น ๋ฅด๊ฒ ์ ์ํ์ฌ ํจ์จ์ ์ธ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ์ํํฉ๋๋ค. ๋ํ '๋์ ๋ฉค๋ฒ์ญ'๊ณผ '์ ์ ๋ฉค๋ฒ์ญ' ๋ชจ๋๋ฅผ ์ง์ํ๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ์ปจ์๋จธ ๊ทธ๋ฃน์ ๊ตฌ์ฑ์ ๋์ ์ผ๋ก ์ ์ฐํ๊ฒ ์กฐ์ ํ ์ ์์ต๋๋ค.
์ด ๋ชจ๋ ํน์ฑ๋ค์ ํตํด ํ๋ ฅ์ ์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต์ ๋ฆฌ๋ฐธ๋ฐ์ฑ ๊ณผ์ ์์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ง์ฐ์ ์ต์ํํ๋ฉฐ, ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ์ ์ฒด์ ์ธ ์ปจ์๋จธ ๊ทธ๋ฃน์ ์ฑ๋ฅ ํฅ์๊ณผ ์์ ์ฑ์ ์ง์ํฉ๋๋ค.
์ ๋ฆฌ
๋ฆฌ๋ฐธ๋ฐ์ฑ ๋ฐฉ์ | ์ค๋ช | ์ํฅ ๋ฒ์ | ์ ์ฉ ์ ๋ต |
์ ๊ทน์ ๋ฆฌ๋ฐธ๋ฐ์ฑ(EAGER) | ๋ฆฌ๋ฐธ๋ฐ์ฑ ๋ฐ์ ์ ๋ชจ๋ ์ปจ์๋จธ๊ฐ ๋ฐ์ดํฐ ์์ ์ ์ค๋จํ๊ณ ํํฐ์ ์ ์์ ๊ถ์ ํฌ๊ธฐ | ์ ์ฒด ์ปจ์๋จธ ๊ทธ๋ฃน | Range, RoundRobin, Sticky |
ํ๋ ฅ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ(COOPERATIVE) | ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ํ์ํ ํน์ ํํฐ์ ์๋ง ์ํฅ์ ์ฃผ๋ฉฐ, ๊ทธ ์ธ์ ํํฐ์ ๋ค์ ๊ทธ๋๋ก ์ ์ง. ๊ฐ๋ณ ์ปจ์๋จธ์ ์์ ์ค๋จ์ ์ต์ํ | ํน์ ํํฐ์ | CooperativeSticky |
ํํฐ์ ํ ๋น ์ ๋ต | ์ค๋ช | Rebalancing Protocol |
Range Partition ํ ๋น ์ ๋ต | Topic ๋ณ๋ก ๋์ผํ Partition์ ํน์ Consumer์๊ฒ ํ ๋นํ๋ ๋ฐฉ์ | EAGER |
Round Robin Partition ํ ๋น ์ ๋ต | ์ฌ์ฉ ๊ฐ๋ฅํ Partition๊ณผ Consumer๋ฅผ ์์ฐจ์ ์ผ๋ก ํ ๋น | EAGER |
Sticky Partition ํ ๋น ์ ๋ต | Consumer๊ฐ ๊ตฌ๋ ์ค์ธ Partition์ ๊ณ์ ์ ์งํ๊ฒ ๋ ํ ๋น | EAGER |
Cooperative Sticky Partition ํ ๋น ์ ๋ต | Sticky์ ์ ์ฌํ์ง๋ง, ์ ์ฒด Rebalancing์ด ์๋ ํ์ํ Partition๋ผ๋ฆฌ ์ ์ง์ ์ผ๋ก Rebalancing ํ๋ ๋ฐฉ์ | COOPERATIVE |