Patitioner
Kafka์ ํํฐ์ ๋(Partitioner)๋ ํ๋ก๋์(Producer)๊ฐ ์ ์กํ๋ ๋ฉ์์ง๋ฅผ ํน์ ํํฐ์ ์ ํ ๋นํ๋ ํต์ฌ์ ์ธ ์ญํ ์ ๋ด๋นํ๋ค. ์ด๋ ๋ฉ์์ง๊ฐ Kafka ํด๋ฌ์คํฐ ๋ด์์ ์ด๋ป๊ฒ ๋ถ๋ฐฐ๋๊ณ ์ฒ๋ฆฌ๋ ์ง๋ฅผ ๊ฒฐ์ ํ๋ฉฐ, ์์คํ ์ ์ฑ๋ฅ๊ณผ ๋ถํ ๋ถ์ฐ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ค. ํํฐ์ ๋๋ ๋ฉ์์ง ํค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํํฐ์ ์ ์ ํํ๊ฑฐ๋, ๋ณ๋์ ์ ๋ต์ ๋ฐ๋ผ ๋ฉ์์ง๋ฅผ ๋ถ๋ฐฐํ ์ ์๋ค.
ํํฐ์
๋?
๋ฉ์์ง ๋ถ๋ฐฐ ๊ฒฐ์
ํํฐ์ ๋๋ ํ๋ก๋์๊ฐ ๋ณด๋ธ ๊ฐ ๋ฉ์์ง๋ฅผ ์ด๋ค ํํฐ์ ์ ๊ธฐ๋กํ ์ง ๊ฒฐ์ ํ๋ค. ์ด๋ ๊ณ ๋ ค๋๋ ์์๋ ๋ค์๊ณผ ๊ฐ๋ค:
๋ฉ์์ง ํค(Key): ๋ฉ์์ง๊ฐ ํน์ ํค๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด, ํด๋น ํค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํํฐ์ ์ด ๊ฒฐ์ ๋๋ค. ์ด๋ ๋์ผํ ํค๋ฅผ ๊ฐ์ง ๋ฉ์์ง๊ฐ ํญ์ ๋์ผํ ํํฐ์ ์ ์ ์ฅ๋์ด ์๋น์(Consumer) ์ธก์์ ๋ฉ์์ง์ ์์๋ฅผ ๋ณด์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
ํํฐ์ ์: ํ ํฝ์ ํํฐ์ ๊ฐ์์ ๋ฐ๋ผ ํํฐ์ ๋์ ๊ณ์ฐ ๋ฐฉ์์ด ๋ฌ๋ผ์ง ์ ์๋ค. ํํฐ์ ์๋ ํด๋ฌ์คํฐ์ ํ์ฅ์ฑ๊ณผ ์ฒ๋ฆฌ๋์ ์ํฅ์ ์ค๋ค.
๋ถํ ๋ถ์ฐ ๋ฐ ์ฑ๋ฅ ์ต์ ํ
ํํฐ์ ๋๋ ํด๋ฌ์คํฐ ๋ด ํํฐ์ ์ ๋ฉ์์ง๋ฅผ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐํ์ฌ ๋ถํ๋ฅผ ๋ถ์ฐ์ํจ๋ค. ์ด๋ ํน์ ํํฐ์ ์ด๋ ๋ธ๋ก์ปค์ ๋ถํ๊ฐ ์ง์ค๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ , ์ ์ฒด ์์คํ ์ ์ฒ๋ฆฌ๋์ ํฅ์์ํจ๋ค.
๋ฉ์์ง ์์ ๋ณด์ฅ
๋์ผํ ํค๋ฅผ ๊ฐ์ง ๋ฉ์์ง๊ฐ ๋์ผํ ํํฐ์ ์ ์ ์ฅ๋๋๋ก ํจ์ผ๋ก์จ, ์๋น์๋ ํด๋น ํํฐ์ ์์ ๋ฉ์์ง๋ฅผ ์์๋๋ก ์ฝ์ ์ ์๋ค. ์ด๋ ์ฃผ๋ฌธ ์ฒ๋ฆฌ๋ ๊ธ์ต ๊ฑฐ๋์ ๊ฐ์ด ๋ฉ์์ง์ ์์๊ฐ ์ค์ํ ์์คํ ์์ ํ์์ ์ด๋ค.
ํํฐ์
์ ๋ต
Kafka์์๋ ๋ฉ์์ง๋ฅผ ์ด๋ค ๊ธฐ์ค์ผ๋ก ํํฐ์
์ ํ ๋นํ ์ง ๊ฒฐ์ ํ๋ ๋ค์ํ ์ ๋ต์ ์ ๊ณตํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก๋ DefaultPartitioner
๋ฅผ ์ฌ์ฉํ์ง๋ง, ํ์์ ๋ฐ๋ผ ์ฌ์ฉ์ ์ ์ ํํฐ์
๋๋ฅผ ๊ตฌํํ ์๋ ์๋ค.
์ฃผ์ ํํฐ์
์ ๋ต์ ๋ค์๊ณผ ๊ฐ๋ค
1. ๋ผ์ด๋ ๋ก๋น(Round Robin) ํํฐ์
๋
๋ผ์ด๋ ๋ก๋น ๋ฐฉ์์ ๋ฉ์์ง๋ฅผ ์์ฐจ์ ์ผ๋ก ๊ฐ ํํฐ์ ์ ๋ถ๋ฐฐํ๋ ๋ฐฉ์์ด๋ค. ๋ฉ์์ง ํค๊ฐ ์๋ ๊ฒฝ์ฐ๋ null ํค๋ฅผ ๊ฐ์ง ๋ฉ์์ง์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
์ฅ์
๋ถํ ๋ถ์ฐ: ๋ชจ๋ ํํฐ์ ์ ๋ฉ์์ง๊ฐ ๊ณ ๋ฅด๊ฒ ๋ถ๋ฐฐ๋๋ฏ๋ก ํน์ ํํฐ์ ์ ๋ถํ๊ฐ ์ง์ค๋์ง ์๋๋ค.
๋จ์์ฑ: ๊ตฌํ์ด ๊ฐ๋จํ๊ณ ์์ธก ๊ฐ๋ฅํ๋ค.
๋จ์
์์ ๋ณด์ฅ ์ด๋ ค์: ํน์ ํค์ ๋ํ ๋ฉ์์ง ์์๋ฅผ ๋ณด์ฅํ ์ ์์ผ๋ฏ๋ก, ์์๊ฐ ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์๋ ๋ถ์ ํฉํ๋ค.
ํํฐ์ ์ ๋ณ๊ฒฝ ์ ์ฌ๋ถ๋ฐฐ ๋ฌธ์ : ํํฐ์ ์๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ฉ์์ง์ ๋ถ๋ฐฐ ํจํด์ด ๋ณ๊ฒฝ๋ ์ ์๋ค.
ํค ๊ธฐ๋ฐ ๋ถ๋ฐฐ๊ฐ ํ์ ์๋ ๊ฒฝ์ฐ: ๋ฉ์์ง์ ์์๊ฐ ์ค์ํ์ง ์๊ณ , ๋จ์ํ ๋ถํ๋ฅผ ๊ณ ๋ฅด๊ฒ ๋ถ์ฐ์ํค๊ณ ์ ํ ๋ ์ ํฉํ๋ค.
๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ: ๋ค์ํ ํค๋ฅผ ๊ฐ์ง ๋ฉ์์ง๊ฐ ๊ณ ๋ฅด๊ฒ ๋ถํฌ๋ ๊ฒ์ผ๋ก ์์๋๋ ํ๊ฒฝ์์ ํจ๊ณผ์ ์ด๋ค.
2. ํด์ ๊ธฐ๋ฐ(Hash-based) ํํฐ์
๋
ํด์ ๊ธฐ๋ฐ ํํฐ์
๋์ ๋ฉ์์ง์ ํค์ ํด์ ํจ์๋ฅผ ์ ์ฉํ์ฌ ํํฐ์
์ ๊ฒฐ์ ํ๋ ๋ฐฉ์์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก partition = hash(key) % number_of_partitions
๊ณต์์ ์ฌ์ฉํ๋ค.
์ฅ์
ํค ๊ธฐ๋ฐ ์์ ๋ณด์ฅ: ๋์ผํ ํค๋ฅผ ๊ฐ์ง ๋ฉ์์ง๋ ํญ์ ๋์ผํ ํํฐ์ ์ ์ ์ฅ๋๋ฏ๋ก, ๋ฉ์์ง์ ์์๋ฅผ ๋ณด์ฅํ ์ ์๋ค.
๋ถํ ๋ถ์ฐ: ํค๊ฐ ๊ณ ๋ฅด๊ฒ ๋ถํฌ๋์ด ์๋ค๋ฉด ํํฐ์ ๊ฐ ๋ถํ๊ฐ ๊ท ๋ฑํ๊ฒ ๋ถ์ฐ๋๋ค.
๋จ์
ํํฐ์ ์ ๋ณ๊ฒฝ ์ ๋ฌธ์ : ํํฐ์ ์๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํด์ ๊ฐ์ด ์ฌ๊ณ์ฐ๋์ด ๊ธฐ์กด ํค์ ํํฐ์ ๋งคํ์ด ๋ฌ๋ผ์ง ์ ์์ด ๋ฐ์ดํฐ ์ฌ๋ถ๋ฐฐ๊ฐ ํ์ํ๋ค.
ํด์ ์ถฉ๋ ๊ฐ๋ฅ์ฑ: ํน์ ํค์ ๋ํ ํด์ ์ถฉ๋์ด ๋ฐ์ํ ๊ฒฝ์ฐ, ํด๋น ํํฐ์ ์ ๋ถํ๊ฐ ์ง์ค๋ ์ ์๋ค.
ํค ๊ธฐ๋ฐ ์์๊ฐ ์ค์ํ ๊ฒฝ์ฐ: ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๋ณ ์ด๋ฒคํธ ๋ก๊ทธ๋ ์ฃผ๋ฌธ ์ฒ๋ฆฌ ์์คํ ๋ฑ์์ ๋์ผํ ํค์ ๋ํ ๋ฉ์์ง ์์๊ฐ ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํ๋ค.
ํค๊ฐ ๊ณ ๋ฅด๊ฒ ๋ถํฌ๋๋ ๊ฒฝ์ฐ: ํค์ ํด์ ๊ฐ์ด ๊ณ ๋ฅด๊ฒ ๋ถํฌ๋์ด ํํฐ์ ๊ฐ ๋ถํ๊ฐ ๊ท ๋ฑํ๊ฒ ๋ถ์ฐ๋ ๋ ํจ๊ณผ์ ์ด๋ค.
3. ์คํฐํค ํํฐ์
๋(Sticky Partitioner)
Kafka 2.4๋ถํฐ ๋์ ๋ ์คํฐํค ํํฐ์ ๋์ ๋ฐฐ์น ๋จ์๋ก ๋ฉ์์ง๋ฅผ ๋์ผํ ํํฐ์ ์ ์ ์กํ์ฌ ๋ ์ฝ๋ ์งํฉ์ ํจ์จ์ฑ์ ๋์ด๋ ๋ฐฉ์์ด๋ค. ์ด๋ ๋ฉ์์ง๋ฅผ ์ผ์ ํฌ๊ธฐ๋ ๋ฐฐ์น ๋จ์๋ก ๊ทธ๋ฃนํํ์ฌ ๋์ผ ํํฐ์ ์ ์ ์กํ๋ค.
์ฅ์
์ฑ๋ฅ ํฅ์: ๋์ผํ ํํฐ์ ์ผ๋ก์ ์ฐ์์ ์ธ ์ ์ก์ผ๋ก ์ธํด ๋ธ๋ก์ปค์์ ํต์ ํ์๋ฅผ ์ค์ผ ์ ์๋ค.
ํจ์จ์ ์ธ ๋ฐฐ์น ์ฒ๋ฆฌ: ๋ฐฐ์น ๋จ์๋ก ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ์ฌ ์ฒ๋ฆฌ๋์ ๋์ผ ์ ์๋ค.
๋จ์
๋ถํ ๋ถ๊ท ํ ๊ฐ๋ฅ์ฑ: ์ฅ๊ธฐ๊ฐ ๋์ผํ ํํฐ์ ์ ์ฌ์ฉํ๋ฉด ํน์ ํํฐ์ ์ ๋ถํ๊ฐ ์ง์ค๋ ์ ์๋ค.
์์ ๋ณด์ฅ ๋ฌธ์ : ๋ฐฐ์น ๋จ์๋ก ์ ์ก๋๋ฏ๋ก, ๊ฐ๋ณ ๋ฉ์์ง์ ์์ ๋ณด์ฅ์ด ์ด๋ ค์ธ ์ ์๋ค.
๋์ ์ฒ๋ฆฌ๋์ด ์๊ตฌ๋๋ ๊ฒฝ์ฐ: ๋๊ท๋ชจ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์ ํ ๋ ์ ์ฉํ๋ค.
ํต์ ๋น์ฉ์ ์ต์ํํ๊ณ ์ ํ ๋: ๋ธ๋ก์ปค์์ ํต์ ํ์๋ฅผ ์ค์ฌ ์ฑ๋ฅ์ ์ต์ ํํ๊ณ ์ ํ ๋ ์ ํฉํ๋ค.
Last updated