2024. 5. 4. 01:19ใBackend/๐ Kafka
๊ฐ์
์นดํ์นด ์ปจ์๋จธ๋ ๋ธ๋ก์ปค์ ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ์ ์ฒ๋ฆฌํ๋ ์ญํ ์ ๋งก๋๋ค. ๊ฐ๋ณ ์ปจ์๋จธ๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ์ปจ์๋จธ ๊ทธ๋ฃน์ผ๋ก ๊ด๋ฆฌํ ์๋ ์์ผ๋ฉฐ ์ปจ์๋จธ ๊ทธ๋ฃน ๋ด์์ ์ด๋ค ํ ํฝ์ ํํฐ์ ๊ณผ ๋งค์นญ๋๋์ง๋ฅผ ํน์ ์ ๋ต์ ๋ฐ๋ผ ์ง์ ํ ์ ์๋ค.
ํน์ ์ปจ์๋จธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ์ปจ์๋จธ๊ฐ ์ฒ๋ฆฌํ๋ ํํฐ์ ์ ๊ทธ๋ฃน ๋ด ๋ค๋ฅธ ์ปจ์๋จธ์๊ฒ ๋งค์นญํด์ผ ๋๋ ์ํฉ์ด ๋ฐ์ํ ์ ์๋ค. ์ด๋ฐ '๋ฆฌ๋ฐธ๋ฐ์ฑ' ๊ณผ์ ์ ์๋์ ์ํฉ์์ ๋ฐ์ํ ์ ์๋ค.
1. ์ปจ์๋จธ ๊ทธ๋ฃน์ ์ ๊ท ์ปจ์๋จธ๊ฐ ์ถ๊ฐ ๋ ๋
2. ์ปจ์๋จธ ๊ทธ๋ฃน์ ๊ธฐ์กด ์ปจ์๋จธ๊ฐ ์ดํํ ๋
3. ํ ํฝ์ ํํฐ์ ์ ์๊ฐ ๋ณ๊ฒฝ๋ ๋ (์ถ๊ฐ/๊ฐ์)
4. ์ปจ์๋จธ๊ฐ ๊ตฌ๋ ํ๋ ํ ํฝ์ด ๋ณ๊ฒฝ๋ ๋
(๋ฌผ๋ก ์คํํฑ ๋ฉค๋ฒ์ญ์ ์ ์ฉํ๋ฉด ์ปจ์๋จธ ๊ทธ๋ฃน ์ดํ ํ ์ฌํฉ๋ฅํด๋ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ์ผ์ด๋์ง ์๋๋ค.)
๋ฆฌ๋ฐธ๋ฐ์ฑ์ ๋จ์ํ ์ปจ์๋จธ์ ๋ด๋น ํํฐ์ ์ด ๋ณ๊ฒฝ๋๋ ๊ฒ์ผ๋ก ์๊ฐํ๊ธฐ์ ์ฌ๋ฌ ๋ฌธ์ ์ ์ด ์๋ค.
- ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ์งํ๋๋ ๋์ ์ปจ์๋จธ๋ ๋ธ๋ก์ปค๋ก๋ถํฐ ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ๋ค. ํ๋ก๋์๋ ์ง์์ ์ผ๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ์๊ธฐ ๋๋ฌธ์ ์ปจ์๋จธ๊ฐ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ ๋งํผ Lag ์ด ๋ฐ์ํ๋ค.
- ๋ฆฌ๋ฐธ๋ฐ์ฑ ๊ณผ์ ์์ ํํฐ์ ์ ์ด๋ ์์น์์ ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ์์ผ ํ๋์ง ๊ฒฐ์ ํ๋ ํ๋ก์ธ์ค๊ฐ ๋ณต์กํด์ง ์ ์๋ค. ์ด ๊ณผ์ ์์ ๋ฉ์์ง๊ฐ ์ค๋ณต๋๊ฑฐ๋ ๋๋ฝ๋ ์ ์๋ค.
๋ฆฌ๋ฐธ๋ฐ์ฑ์ ์ปจ์๋จธ ๊ทธ๋ฃน์ ๊ฐ ์ปจ์๋จธ์๊ฒ ํํฐ์ ์ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐํ๋ ์์ ์ผ๋ก ๋ง์ ๋ฆฌ์์ค๋ฅผ ์๋ชจํ์ฌ ์์คํ ์ ๋ถ๋ด์ด ๋ ์ ์๋ค. ์ด๋ฒ ๊ธ์์๋ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ์ต์ํ ํ ์ ์๋ ์ปจ์๋จธ์ ํํฐ์ ํ ๋น ์ ๋ต 4๊ฐ์ง๋ฅผ ์์๋ณด๊ฒ ๋ค.
์ปจ์๋จธ ํํฐ์ ํ ๋น ์ ๋ต
ํํฐ์ ํ ๋น ์ ๋ต์ด๋ ์นดํ์นด ์ปจ์๋จธ๊ฐ ๊ตฌ๋ ํ๋ ๋์ ํ ํฝ ์ค ์ด๋ ํํฐ์ ์ ๋ ์ฝ๋๋ฅผ ์ฝ์์ง ๊ฒฐ์ ํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ค. ์ด 4๊ฐ์ง ์ ๋ต์ด ์๋ ค์ ธ ์์ผ๋ฉฐ, ์ปจ์๋จธ ๊ทธ๋ฃน์ ์ค์ ๋ ์ ๋ต์ ๋ฐ๋ผ ์ปจ์๋จธ-ํํฐ์ ๊ฐ์ ๋งค์นญ์ด ๊ฒฐ์ ๋๋ค. ์ฆ ๋ฆฌ๋ฐธ๋ฐ์ฑ ์ ๋ฐ์ํ๋ ๋ชจ๋ ๋์์ ์ปจ์๋จธ(๋ฆฌ๋)๊ฐ ๊ด์ฅํ๋ค.
๋ฆฌ๋ฐธ๋ฐ์ฑ์ ํฌ๊ฒ 2๊ฐ์ง ๋ฐฉ์์ด ์กด์ฌํ๋ค.
Eager Rebalance
์ปจ์๋จธ ๊ทธ๋ฃน์์ ์ปจ์๋จธ ์๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ชจ๋ ์์ ์ ๋ฉ์ถ๊ณ ๋ค์ ์๋ก์ด ํํฐ์ ์ ํ ๋นํ๋ ๋ฐฉ์์ด๋ค. ์ฆ ํด๋น ์ปจ์๋จธ ๊ทธ๋ฃน์ ๋ชจ๋ ์์ ์ด ์ผ์ ์ ์ง๋๊ณ ํํฐ์ ์ ์ฌ๋ถ๋ฐฐํ ํ ๋ค์ ๋์ํ๋ค. ์ด ์๊ฐ๋์ ์ปจ์๋จธ ๊ทธ๋ฃน์ ์ ํด ์ํ๊ฐ ๋์ด ๋ฉ์์ง ์ปจ์๋ฐ๊ณผ ์คํ์ ์ปค๋ฐ์ด ๋ถ๊ฐ๋ฅํ๋ค.
1. Detection ๋จ๊ณ์์ consumer02 ์ ์ฅ์ ๋ฅผ ๊ฐ์งํ๋ฉด,
2. Stopping ๋จ๊ณ์์ ์ปจ์๋จธ์๊ฒ ํ ๋น๋ ๋ชจ๋ ํํฐ์ ์ ์ ๊ฑฐํ๋ค. ์ ๋์ํ๊ณ ์๋ ๋ค๋ฅธ ์ปจ์๋จธ์ connection ๋ ๋๊ธฐ๊ฒ ๋๋ค.(์ฐ๋ ์ฑ ์ ์ ๋ ธ) ์ด ๋ ๋ถํฐ ์ปจ์๋จธ์๊ฒ ํ ๋น๋ ํํฐ์ ์ด ์์ผ๋ฏ๋ก ์ปจ์๋จธ์ ๋ค์ดํ์์ด ์์๋๋ค.
3. Restart ๋จ๊ณ์์ ๊ตฌ๋ ํ ํํฐ์ ์ด ์ปจ์๋จธ๋ค์๊ฒ ์ฌํ ๋น๋๋ค. ์ด ์๊ฐ ๋ถํฐ ์ปจ์๋จธ๋ค์ ๊ฐ์ ์ฌํ ๋น๋ฐ์ ํํฐ์ ์์ ๋ฉ์์ง๋ฅผ ์ปจ์ํ๊ธฐ ์์ํ๋ค.
figure01 ์์ ๋ณผ ์ ์๋ฏ์ด ๊ธฐ์กด์ consumer02 ์ ๋งค์นญ๋๋ partition1 ์ consumer01 ๋ก ์ฌํ ๋น๋๋ค. ์ด์ฒ๋ผ ๋ฆฌ๋ฐธ๋ฐ์ฑ ์ดํ์๋ ์ปจ์๋จธ๊ฐ ์ด์ ์ ๊ฐ์ก๋ ํํฐ์ ์ ๋ฐ๋์ ๋ค์ ๊ฐ์ง ์ ์๋ค๋ ๋ณด์ฅ์ ํ ์ ์๋ค.
Cooperative Rebalance
Cooperative Rebalancing ์ Apache Kafka 2.4 ๋ฒ์ ๋ถํฐ ๋์ ๋ ์ง๋ณด๋ ํํ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ ๋ฐฉ์์ผ๋ก, ์ปจ์๋จธ ๊ทธ๋ฃน์ ์ค์ง ์์ด ํํฐ์ ์ฌ๋ถ๋ฐฐ๊ฐ ์ผ์ด๋๋ค.
๊ธฐ์กด์ ํ ๋น๋ ํํฐ์ ์ ์๋กญ๊ฒ ๋ค์ด์ค๋ ์ปจ์๋จธ์๊ฒ ์๋ํ๋ ํํ๋ก ๋์ํ๋ค.
1. Detection ๋จ๊ณ - ์ปจ์๋จธ ๊ทธ๋ฃน์ Consumer02 ๊ฐ ํฉ๋ฅํ๋ฉฐ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ํธ๋ฆฌ๊ฑฐ ๋๋ค. ๊ทธ๋ฃน ์ฝ๋๋ค์ดํฐ๋ ํด๋น ์ ๋ณด๋ฅผ ์กฐํฉํด ์ปจ์๋จธ ๊ทธ๋ฃน์ ๋ฆฌ๋์๊ฒ ์ ์กํ๋ค.
2. First Rebalancing - ์ปจ์๋จธ ๊ทธ๋ฃน์ ๋ฆฌ๋๋ ํ์ฌ ์ปจ์๋จธ๊ฐ ์์ ํ ํํฐ์ ์ ๋ณด๋ฅผ ํ์ฉํด ์ ์ธํ ํํฐ์ ์ ๋ณด๋ฅผ ๋ด์ ์๋ก์ด ํํฐ์ ํ ๋น ์ ๋ณด๋ฅผ ์ปจ์๋จธ ๊ทธ๋ฃน ๋ฉค๋ฒ๋ค์๊ฒ ์ ๋ฌํ๋ค.
์๋ก์ด ํํฐ์ ํ ๋น ์ ๋ณด๋ฅผ ๋ฐ์ ์ปจ์๋จธ ๊ทธ๋ฃน ๋ฉค๋ฒ๋ค์ ํ์์๋ ํํฐ์ ์ ๊ณจ๋ผ ์ ์ธํ๋ค. ์ด์ ์ ํํฐ์ ํ ๋น ์ ๋ณด์ ์๋ก์ด ํํฐ์ ํ ๋น ์ ๋ณด๊ฐ ๋์ผํ ํํฐ์ ๋ค์ ๋ํด์๋ ์ด๋ค ์์ ๋ ์ํํ ํ์๊ฐ ์๋ค.
3. Second Rebalancing - ์ ์ธํ ํํฐ์ ํ ๋น์ ์ํด ์ปจ์๋จธ๋ค์ ๋ค์ ํฉ๋ฅ ์์ฒญ์ ์ ์กํ๋ค. ์ด ๋ ๋ ๋ฒ์ฌ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ํธ๋ฆฌ๊ฑฐ ๋๋ค. ์ปจ์๋จธ ๊ทธ๋ฃน์ ๋ฌ๋๋ ์ ์ธ๋ ํํฐ์ ์ ์ ์ ํ ์ปจ์๋จธ์๊ฒ ํ ๋นํ๋ค.
Cooperative ๋ฐฉ์์ ์ค์ํ ์ ์ ํํฐ์ ์ฌ๋ฐฐ์น๊ฐ ํ์ํ์ง ์์ ์ปจ์๋จธ๋ ๋ค์ดํ์ ์์ด ๊ณ์ ๋์ํ๋ฉฐ, ๋๋ฒ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ์ผ์ด๋ฌ๋ค๋ ์ ์ด๋ค. ๋น๋ก ๋ฆฌ๋ฐธ๋ฐ์ฑ ๋์์ด 2๋ฒ ๋ฐ์ํ์ง๋ง ์ ์ ๋์ํ๋ ๋ค๋ฅธ ์ปจ์๋จธ์๊ฒ๋ ์๋ฌด๋ฐ ์ํฅ์ ์ฃผ์ง ์์๋ค.
Eager ๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ ์ ์ฒด๊ฐ ์ค๋จ๋์ง ์๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ผ ์ ์์ง๋ง, ํํฐ์ ํ ๋น์ด ์์ ์ ์ธ ์ํ๊ฐ ๋ ๋ ๊น์ง ๋ช ๋ฒ์ ๋ฐ๋ณต์ด ํ์ํ ์ ์๋ค๋ ์ ์ ์ธ์งํด์ผ ํ๋ค.
์ ๋ฆฌํ๋ฉด Cooperative ๋ฐฉ์์ ์ปจ์๋จธ ๊ทธ๋ฃน์ด ์ค๋จ๋๋ ์ํฉ์ ํผํด์ผํ๋ ์๋น์ค์์ ์ ์ฒด ๊ทธ๋ฃน์ ์ฑ๋ฅ์ ์ ์งํ๋ฉด์ ํํฐ์ ํ ๋น ์ ๋ต์ ์ ์ฐํ๊ฒ ์กฐ์ ํ ์ ์๋ ์ฅ์ ์ด ์๋ค.
1. ๋ ์ธ์ง ํํฐ์ ํ ๋น ์ ๋ต
Apache Kafka 2.3 ๋ฒ์ ๊น์ง ๋ํดํธ๋ก ์ค์ ๋ ํํฐ์ ํ ๋น ์ ๋ต์ด๋ค. ๋ ์ธ์ง ํํฐ์ ํ ๋น ์ ๋ต์ ๋ค์ ์์๋ก ์งํ๋๋ค.
1. ๊ตฌ๋ ์ค์ธ ํ ํฝ์ ํํฐ์ ๊ณผ ์ปจ์๋จธ๋ฅผ ์์๋๋ก ๋์ดํ๋ค.
2. ๊ฐ ์ปจ์๋จธ๊ฐ ๋ฐ์์ผ ํ ํํฐ์ ์๋ฅผ ๊ฒฐ์ ํ๋๋ฐ, ์ด๋ ํด๋น ํ ํฝ์ ์ ์ฒด ํํฐ์ ์๋ฅผ ์ปจ์๋จธ ๊ทธ๋ฃน์ ์ด ์ปจ์๋จธ ์๋ก ๋๋ ๊ฐ์ด๋ค.
3. ๋ง์ฝ ์ปจ์๋จธ ์์ ํํฐ์ ์๊ฐ ์ ํํ ์ผ์นํ๋ฉด ๋ชจ๋ ์ปจ์๋จธ๋ ํํฐ์ ์ ๊ท ๋ฑํ๊ฒ ํ ๋น ๋ฐ๋๋ค (์ผ๋์ผ ?)
4. ๊ทธ๋ฌ๋ ํํฐ์ ์๊ฐ ์ปจ์๋จธ ์๋ก ๊ท ๋ฑํ๊ฒ ๋๋์ด์ง์ง ์์ผ๋ฉด, ์ ์์์ ์ปจ์๋จธ๋ค์ด ์ถ๊ฐ๋ก ํํฐ์ ์ ํ ๋น ๋ฐ๋๋ค. ์ด๋ ํํฐ์ ์ด ํ์ชฝ์ผ๋ก ๋ชฐ๋ฆด ์ ์๋ ๋ฌธ์ ์ ์ด ์๋ค.
consumer01์ 4๊ฐ์ ํํฐ์ ์ด ํ ๋น๋ ๋ฐ๋ฉด consumer02 ๋ 2๊ฐ์ ํํฐ์ ๋ฐ์ ํ ๋น๋ฐ์ง ๋ชปํ๋ค. ๋ถ๊ท ํ์ด ๋ฐ์ํ ์ ์๋ ์ ์ ๋ต์ ์ ์ฌ์ฉํ๋ ๊ฒ์ผ๊น? ์ฐ์ ์ฅ์ ์ ์ดํด๋ณด๋ฉด, ํน์ ๋๋ฉ์ธ์ ๋ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํ ์ปจ์๋จธ์์ ์ผ๊ด๋๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ์ ์ ๋ก๊ทธ์ ์๋ฌ ๋ก๊ทธ๋ฅผ ๊ฐ๊ฐ ์ฒ๋ฆฌํ๋ ๋ ํ ํฝ(topic01, topic02)์ด ์๋ค๊ณ ๊ฐ์ ํ์. ๋ ํ ํฝ์ ํํฐ์ ์๊ฐ ๊ฐ์ ๋ ๋ก๊ทธ ํ๋ก๋์๊ฐ ๋์ผํ ๋ฉ์์งkey ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ์์ง๋ ๋์ผํ ํํฐ์ (ex partition0) ์ผ๋ก ์ ์ก๋๋ค. ๋ ํ ํฝ์ partition0 ์ ๋ชจ๋ consumer01 ์์ ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ์ผ๊ด๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ/๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. ๋จ์ ์ผ๋ก๋ ์ปจ์๋จธ์ ํํฐ์ ํ ๋น์ด ๋ถ๊ท ํํ๊ธฐ ๋๋ฌธ์ ํน์ ์ปจ์๋จธ์ ๋ถํ๊ฐ ๋ชฐ๋ฆด ์ ์๋ค. ๋ํ ์์์ ์ธ๊ธํ Eager ํ๋กํ ์ฝ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ ๋ฐ์์ ๋ชจ๋ ์ปจ์๋จธ๊ฐ ์์ ์ ์ค๋จํ๊ฒ ๋๋ค.
2. ๋ผ์ด๋ ๋ก๋น ํํฐ์ ํ ๋น ์ ๋ต
๊ฐ์ฅ ๊ฐ๋จํ ํํฐ์ ํ ๋น ์ ๋ต์ผ๋ก ํํฐ์ ์ ์ปจ์๋จธ ๊ทธ๋ฃน ๋ด ๋ชจ๋ ์ปจ์๋จธ์๊ฒ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐํ๋ค.
Consumer01 ๊ณผ Consumer02 ๊ฐ ๋ฐ๋ณต๋๋ฉด์ ๋งคํ๋๊ธฐ ๋๋ฌธ์ ๋ ์ธ์ง ํ ๋น ์ ๋ต๊ณผ ๋ฌ๋ฆฌ ๊ท ๋ฑํ ํํฐ์ ๋ถ๋ฐฐ๊ฐ ๊ฐ๋ฅํ๋ค.
ํํฐ์ | ๋งคํ๋ ์ปจ์๋จธ |
Topic01-Partition0 | Consumer01 |
Topic01-Partition1 | Consumer02 |
Topic01-Partition2 | Consumer01 |
Topic02-Partition0 | Consumer02 |
Topic02-Partition1 | Consumer01 |
Topic02-Partition2 | Consumer02 |
๋ผ์ด๋ ๋ก๋น์ ์ ๋ต์ ์ฅ์ ์ ๋ชจ๋ ์ปจ์๋จธ์ ๊ท ๋ฑํ ํํฐ์ ๋ถ๋ฐฐ๊ฐ ์ด๋ค์ง๊ธฐ์ ์ปจ์๋จธ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํด ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค.
๋ผ์ด๋ ๋ก๋น ์ ๋ต์ ๋ฌธ์ ์ ์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ๊ธฐ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ๋ฐ์ํ ๋ ๋ชจ๋ ์ปจ์๋จธ๊ฐ ์ค๋จ๋๋ค. ๋ํ ๋ชจ๋ ํํฐ์ ์ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐํ๋ ค ํ๊ธฐ ๋๋ฌธ์ ํ๋์ ์ปจ์๋จธ๋ง ๋ค์ด๋๋๋ผ๋ ๋ชจ๋ ์ปจ์๋จธ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ๋ฐ์ํ๋ ๋จ์ ์ด ์กด์ฌํ๋ค.
3. ์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต
์์ ์ค๋ช ํ ๋ ์ ๋ต์ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ๋ฐ์ ์ ๊ธฐ์กด ๋งคํ์ ๋ณด์ ์ ํ ๋ค๋ฅธ ๋งคํ์ด ๋งบ์ด์ง๋ค. ์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต์ ์ด์ ๋ฌ๋ฆฌ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ๋ฐ์ํ๋๋ผ๋ ๊ธฐ์กด ๋งคํ ์ ๋ณด๋ฅผ ์ต๋ํ ์ ์งํ๋ ์ปจ์๋จธ-ํํฐ์ ํ ๋น ์ ๋ต์ด๋ค.
์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต์ 2๊ฐ์ง ๋ชฉ์ ์ผ๋ก ์ปจ์๋จธ์ ํํฐ์ ์ ํ ๋นํ๋ค.
์ฒซ ๋ฒ์งธ๋ ๊ฐ๋ฅํ ํ ๊ท ํ ์กํ ํํฐ์ ํ ๋น์ด๊ณ , ๋ ๋ฒ์งธ๋ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ๋ฐ์ํ ๋ ๋๋๋ก ๊ธฐ์กฑ์ ํ ๋น๋ ํํฐ์ ์ ๋ณด๋ฅผ ๋ณด์ฅํ๋ ๊ฒ์ด๋ค. ์ด ์ค ์ฒซ ๋ฒ์งธ ๋ชฉ์ ์ ์ฐ์ ์์๊ฐ ๋ ๋๊ธฐ ๋๋ฌธ์ ์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต์ด๋ผ ํด์ ํญ์ ๊ธฐ์กด ํํฐ์ ๊ณผ ์ปจ์๋จธ ๋งคํ์ ๋ณด์ฅํ๋ ๊ฒ์ ์๋๋ค.
์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต์ด ์ด์์ ์ผ๋ก ๋์ํ๋ ์ด์ ๋ ์๋์ ๊ท์น์ ๋ฐ๋ผ ์ฌํ ๋น ๋์์ ์ํํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์ปจ์๋จธ๊ฐ ์ต๋ ํ ๋น๋ ํํฐ์ ์์ ์ฐจ์ด๋ 1
- ๊ธฐ์กด์ ์กด์ฌํ๋ ํํฐ์ ํ ๋น์ ์ต๋ํ ์ ์ง
- ์ฌํ ๋น ๋์ ์ ์ ํจํ์ง ์์ ๋ชจ๋ ํํฐ์ ํ ๋น์ ์ ๊ฑฐ
- ํ ๋น๋์ง ์์ ํํฐ์ ๋ค์ ๊ท ํ์ ๋ง์ถ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ปจ์๋จธ๋ค์ ํ ๋น
figure05๋ ์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต์ ๊ณผ์ ์ ๋ํ๋ธ๋ค. Consumer02 ์ ์ฅ์ ๊ฐ ์๊ฒจ ์ปจ์๋จธ ๊ทธ๋ฃน์์ ์ดํํ๋ฉด ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ๋ฐ์ํ๋ค. ์ด ์ํฉ์์ ๋ผ์ด๋ ๋ก๋น ๋ฐฉ์์ ๋ฉ์ฉกํ ์ ๋์ํ๋ ๋๋จธ์ง ๋ ์ปจ์๋จธ(Consumer01, Consumer03)๋ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ๋์ฐธํ์ฌ ๊ธฐ์กด ํํฐ์ ๋งคํ์ด ๋ชจ๋ ํด์ ๋๊ณ ๋ค์ ํ ๋น๋๋ค. ํ์ง๋ง ์คํฐํค ํํฐ์ ์ ๋ต์ ์ ์ ๋์ํ๋ ๋ ์ปจ์๋จธ์ ๋งคํ์ ์ต๋ํ ์ ์งํ์ฑ ๋งคํ์ด ํด์ ๋ ํํฐ์ ๋ง ์ฌํ ๋น๋๋ค.
4. ํ๋ ฅ์ ์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต
Kafka version 2.4 ๋ถํฐ ๋ํดํธ ํํฐ์ ํ ๋น ์ ๋ต์ผ๋ก ์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต๊ณผ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋์ผํ์ง๋ง ์ปจ์๋จธ ๊ทธ๋ฃน ๋ด๋ถ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ ๋์์ ํ์ธต ๋ ๊ณ ๋ํ ๋๋ค. ์์ ์ค๋ช ํ 3๊ฐ์ง ์ ๋ต์ ๋ด๋ถ์ ์ผ๋ก EAGER ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋ฆฌ๋ฐธ๋ฐ์ฑ ๋ฐ์ ์ ๋ชจ๋ ์ปจ์๋จธ๋ ๋ฉ์์ง๋ฅผ ๊ตฌ๋ ํ ์ ์๋ Stop the world ํ์์ด ๋ฐ์ํ๋ค.
์ด์ ๋ฌ๋ฆฌ ํ๋ ฅ์ ์คํฐํค ์ ๋ต์ COOPERATIVE ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ํ์ํ ํน์ ํํฐ์ ์๋ง ์ง์คํ๋ฉฐ ๊ทธ ์ธ์ ๋๋จธ์ง ํํฐ์ ๋ค์ ์ปจ์๋จธ์ ๋งคํ์ ๊ทธ๋๋ก ์ ์งํ๋ค. ์ฆ ๋ฌธ์ ๊ฐ ์๋ ํํฐ์ ์ ๋ฉ์์ง ์ปจ์๋ฐ๋ง ์ค๋จ๋ ๋ฟ ์ด์ธ์ ํํฐ์ ์ ๋ชจ๋ ์ ์์ ์ผ๋ก ๋ฉ์์ง ์ปจ์๋ฐ์ด ๋์ํ๊ธฐ์ ์ ์ฒด์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ํฌ๊ฒ ์ ํดํ์ง ์๋๋ค.
์ด์ ๊ฐ์ ํน์ง ๋๋ถ์ ํ๋ ฅ์ ์คํฐํค ์ ๋ต์ ์ปจ์๋จธ ๊ทธ๋ฃน์ ๊ตฌ์ฑ ๋ณ๊ฒฝ์ด ์์ฃผ ๋ฐ์ํ๋ ํ๊ฒฝ์ ํนํ ์ ์ฉํ๋ฉฐ ํจ์จ์ ์ธ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ์ํํ ์ ์๋ค.
์ ๋ฆฌ
ํํฐ์ ํ ๋น ์ ๋ต | ์ค๋ช | 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 |
Ref
- https://devocean.sk.com/community/detail.do?ID=165478&boardType=DEVOCEAN_STUDY&page=1
'Backend > ๐ Kafka' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Kafka] Avro ์์๋ณด๊ธฐ (0) | 2024.03.04 |
---|---|
[Kafka ์๋ฌ] LEADER_NOT_AVAILABLE (0) | 2024.01.04 |