Zookeeper & KRaft
์ฃผํคํผ(ZooKeeper)๋ ์นดํ์นด ํด๋ฌ์คํฐ์ ์ํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๊ณ ๋๊ธฐํํ๋ ๋ถ์ฐ ์ฝ๋๋ค์ด์ ์๋น์ค๋ก, ์นดํ์นด๋ ์์ฒด์ ์ผ๋ก ํด๋ฌ์คํฐ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ์ด ์์ด ์ด ์ญํ ์ ์ธ๋ถ ์์คํ ์ธ ์ฃผํคํผ์ ์์กดํ๋ค.
์ฃผํคํผ(ZooKeeper)์ ์ญํ
๋ถ์ฐ๋ ์ฌ๋ฌ ์๋ฒ(๋ ธ๋)๋ค์ด ํ๋์ ์์คํ ์ฒ๋ผ ๋์ํ๋๋ก ๋๋ "์กฐ์ ์" ๋๋ "์ค์ ๊ด๋ฆฌ์" ์ญํ ์ํํ๋ค.
๋ฆฌ๋ ์ ์ถ (Leader Election): ํด๋ฌ์คํฐ ๋ด ์ฌ๋ฌ ๋ธ๋ก์ปค ์ค ๋จ ํ๋๋ฅผ ์ปจํธ๋กค๋ฌ(Controller) ๋ธ๋ก์ปค๋ก ์ ์ถ
์ปจํธ๋กค๋ฌ๋ ํด๋ฌ์คํฐ์ ์ ๋ฐ์ ์ธ ์ํ ๋ณ๊ฒฝ์ ์ฑ ์์ง๋ ๋ฆฌ๋ ์ญํ ์ํ
์ํ ๊ด๋ฆฌ (Status Management): ํด๋ฌ์คํฐ์ ๋ชจ๋ ์ํ ์ ๋ณด(๋ฉํ๋ฐ์ดํฐ)๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌ
ํด๋ฌ์คํฐ์ ์ด๋ค ๋ธ๋ก์ปค๊ฐ ์ฐธ์ฌ ์ค์ธ์ง, ์ด๋ค ํ ํฝ์ด ์์ฑ๋์๋์ง, ๊ฐ ํ ํฝ์ ํํฐ์ ์ ๋ช ๊ฐ์ธ์ง, ๊ฐ ํํฐ์ ์ ๋ฆฌ๋๋ ์ด๋ค ๋ธ๋ก์ปค์ธ์ง ๋ฑ
์ฅ์ ๊ฐ์ง (Failure Detection): ํน์ ๋ธ๋ก์ปค์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ฌ ์ด ์ฐ๊ฒฐ์ด ๋์ด์ง๋ฉด, ์ฃผํคํผ๋ ์ด๋ฅผ ๊ฐ์งํ๊ณ ์ปจํธ๋กค๋ฌ์๊ฒ ์๋ ค ํด๋ฌ์คํฐ๊ฐ ๋ณต๊ตฌ ์์ ์์
์นดํ์นด๊ฐ ์ฃผํคํผ๋ฅผ ํ์ํ ์ด์
์นดํ์นด๋ ์ฌ๋ฌ ๋ธ๋ก์ปค๊ฐ ํจ๊ป ๋์ํ๋ ๋ถ์ฐ ์์คํ ์ด๋ฏ๋ก, ํด๋ฌ์คํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ์ฅ์ ์ ๋์ํ๊ธฐ ์ํ ์ค์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ด ๋ฐ๋์ ํ์ํ๋ค.
์๋ฅผ ๋ค์ด, ํน์ ํ ํฝ์ ํํฐ์ ๋ฆฌ๋๋ฅผ ๋ด๋นํ๋ ๋ธ๋ก์ปค์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค.
์ฃผํคํผ๊ฐ ํด๋น ๋ธ๋ก์ปค์ ์ฐ๊ฒฐ ์ข ๋ฃ ๊ฐ์ง
์ปจํธ๋กค๋ฌ ๋ธ๋ก์ปค๋ ์ฃผํคํผ๋ก๋ถํฐ ํด๋น ์ฌ์ค ํต๋ณด
์ปจํธ๋กค๋ฌ๋ ํด๋น ํํฐ์ ์ ์๋ก์ด ๋ฆฌ๋๋ฅผ ๋ค๋ฅธ ๋ธ๋ก์ปค ์ค์์ ์ ์ถ
์๋ก์ด ๋ฆฌ๋ ์ ๋ณด๋ฅผ ์ฃผํคํผ์ ๊ธฐ๋ก
ํด๋ฌ์คํฐ์ ๋ค๋ฅธ ๋ชจ๋ ๋ธ๋ก์ปค์ ํด๋ผ์ด์ธํธ๋ ์ฃผํคํผ์ ๊ธฐ๋ก๋ ์ต์ ์ ๋ณด๋ฅผ ๋ณด๊ณ ์๋ก์ด ๋ฆฌ๋์ ํต์ ์์
์ด์ฒ๋ผ ์นดํ์นด๋ ํด๋ฌ์คํฐ์ ๋๋ ์ญํ ์ ์ฃผํคํผ์ ๋งก๊ฒจ ์์ ์ฑ์ ํ๋ณดํ์ต๋๋ค.
์ฃผํคํผ์ ํ๊ณ
์ฃผํคํผ๋ ๋งค์ฐ ์์ ์ ์ด์ง๋ง, ์นดํ์นด๋ฅผ ์ด์ํ๋ ๋ฐ ์์ด ๋ช ๊ฐ์ง ๋ถํธํ ์ ์ด ์กด์ฌํ๋ค.
์ด์ ๋ถ๋ด: ์นดํ์นด์๋ ๋ณ๊ฐ์ธ ์ฃผํคํผ ํด๋ฌ์คํฐ๋ฅผ ๋ฐ๋ก ๊ตฌ์ถํ๊ณ ๊ด๋ฆฌ ํ์
์ธํ๋ผ ๊ตฌ์ฑ, ๋ชจ๋ํฐ๋ง, ํจ์น ๋ฑ ์ด์ ๋ถ๋ด์ ๊ฐ์ค
์ฑ๋ฅ ๋ฐ ํ์ฅ์ฑ ํ๊ณ: ํด๋ฌ์คํฐ ๊ท๋ชจ๊ฐ ๋งค์ฐ ์ปค์ง๋ฉด(ํํฐ์ ์์ญ๋ง ๊ฐ ์ด์), ๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ์ฃผํคํผ๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋ฉด์ ๋ณ๋ชฉ์ด ๋ฐ์ ๊ฐ๋ฅ
๋๋ฆฐ ์ฅ์ ๋ณต๊ตฌ: ์ปจํธ๋กค๋ฌ ๋ธ๋ก์ปค์ ์ฅ์ ๋ฐ์ ์, ์๋ก์ด ์ปจํธ๋กค๋ฌ๊ฐ ์ฃผํคํผ๋ก๋ถํฐ ๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ๋ฐ ๋ง์ ์๊ฐ์ด ์์
KRaft
์์ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด KRaft๊ฐ ๋ฑ์ฅํ๋ค.
์ฃผํคํผ๋ฅผ ์์ ํ ์ ๊ฑฐํ๊ณ , ์นดํ์นด๊ฐ ์์ฒด์ ์ผ๋ก ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ์๋ก์ด ๋ฐฉ์
ํด๋ฌ์คํฐ ๋ด ์ผ๋ถ ๋ธ๋ก์ปค๋ค์ด ์ปจํธ๋กค๋ฌ ์ญํ ์ ๊ฒธํ๋ฉฐ, Raft ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ๋ฐ ๋๊ธฐํ
์ฃผํคํผ๋ฅผ ์ ๊ฑฐํจ์ผ๋ก์จ ๋ค์๊ณผ ๊ฐ์ ์ด์ ์ด ์๋ค.
์ด์ ๋จ์ํ: ๊ด๋ฆฌํ ์์คํ ์ด ์นดํ์นด ํ๋๋ก ์ค์ด ๋งค์ฐ ํธ๋ฆฌ
์ฑ๋ฅ ๋ฐ ํ์ฅ์ฑ ํฅ์: ์ฃผํคํผ ๋ณ๋ชฉ์ด ์ฌ๋ผ์ ธ ๋จ์ผ ํด๋ฌ์คํฐ์์ ์๋ฐฑ๋ง ๊ฐ์ ํํฐ์ ์ ๊ด๋ฆฌ ๊ฐ๋ฅ
๋น ๋ฅธ ์ฅ์ ๋ณต๊ตฌ: ์ปจํธ๋กค๋ฌ ์ฅ์ ์ ์๋ก์ด ๋ฆฌ๋ ์ ์ถ์ด ๊ฑฐ์ ์ฆ์ ์ด๋ฃจ์ด์ง
ํ์ฌ ์นดํ์นด๋ KRaft ๋ชจ๋๋ฅผ ์ ์์ผ๋ก ์ง์ํ๋ฉฐ, ์ ๊ท ํด๋ฌ์คํฐ๋ KRaft ๋ชจ๋๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ด ํ์ค์ผ๋ก ๊ถ์ฅ๋๊ณ ์๋ค.
KRaft์ ๋์ ๋ฐฉ์
KRaft ๋ชจ๋์์๋ ์นดํ์นด ๋ ธ๋๊ฐ ๋ช ํํ ์ญํ ์ ๋ถ์ฌ๋ฐ์ผ๋ฉฐ, ๋ฉํ๋ฐ์ดํฐ๋ ๋ด๋ถ ํ ํฝ์ ํตํด ๊ด๋ฆฌ๋๋ค.
๋ ธ๋์ ์ญํ ๋ถ๋ฆฌ (Node Roles): KRaft ํด๋ฌ์คํฐ์ ๊ฐ ๋ ธ๋๋
controller,broker,combined์ค ํ๋์ ์ญํ ์ ๊ฐ์ง์ปจํธ๋กค๋ฌ(Controller) ๋ ธ๋: Raft ์ฟผ๋ผ์ ์ฐธ์ฌํ์ฌ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ ์ฅํ๋ ์ญํ ๋ง ์ํ(๋ฐ์ดํฐ I/O๋ ์ฒ๋ฆฌํ์ง ์์)
๋ธ๋ก์ปค(Broker) ๋ ธ๋: ๊ธฐ์กด์ฒ๋ผ ๋ฐ์ดํฐ I/O(์ฐ๊ธฐ/์ฝ๊ธฐ)๋ฅผ ๋ด๋นํ์ง๋ง, ๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ ์ปจํธ๋กค๋ฌ์๊ฒ ์์
ํผํฉ(Combined) ๋ ธ๋: ์ปจํธ๋กค๋ฌ์ ๋ธ๋ก์ปค ์ญํ ์ ๋์์ ์ํ(ํ ์คํธ ํ๊ฒฝ์ด๋ ์๊ท๋ชจ ํด๋ฌ์คํฐ์ ์ ํฉ)
์ปจํธ๋กค๋ฌ ๋ ธ๋๋ ๊ณผ๋ฐ์ ์ด์์ ๋์๋ฅผ ์ป์ด์ผ๋ง ๋ฉํ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์น์ธํ๋ Raft ํฉ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ 3๋ ์ด์์ ํ์ ๊ฐ ๋ ธ๋๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
์ฑ๋ฅ ๋ฐ ํ์ฅ์ฑ์ ์ ๋์ ๋น๊ต
์ฃผํคํผ์ KRaft์ ์ฐจ์ด๋ ๊ด๋ฆฌ ์์์ ๋จ์ํ ๋ฟ๋ง ์๋๋ผ, ์ ๋์ ์ผ๋ก๋ ๋๋ ทํ ์ฐจ์ด๋ฅผ ๋ณด์ธ๋ค.
์ฅ์ ๋ณต๊ตฌ ์๊ฐ
์์ญ ์ด ~ ์ ๋ถ(๋ฉํ๋ฐ์ดํฐ ๋ก๋ฉ)
์ ๋ฐ๋ฆฌ์ด ~ ์ ์ด(์ฆ๊ฐ์ ์ธ ๋ฆฌ๋ ์ ํ)
์ต๋ ํํฐ์ ์
์์ญ๋ง ๊ฐ(์ฃผํคํผ ๋ณ๋ชฉ)
์๋ฐฑ๋ง ๊ฐ ์ด์(๋ด๋ถ ํ ํฝ์ผ๋ก ๊ด๋ฆฌ)
์ด์ ๋ฆฌ์์ค
Kafka JVMs + ZooKeeper JVMs
Kafka JVMs Only
์ํคํ ์ฒ ๋ณต์ก๋
๋์(2๊ฐ์ ๋ถ์ฐ ์์คํ )
๋ฎ์(๋จ์ผ ์์คํ )
์ด์ฒ๋ผ KRaft๋ ๋จ์ํ ์์กด์ฑ ์ ๊ฑฐ๋ฅผ ๋์ด, ์นดํ์นด์ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ, ์ด์ ํธ์์ฑ์ ํฅ์์์ผฐ๋ค๊ณ ํ ์ ์๋ค.
Last updated
Was this helpful?