[MSA] kafka - broker
Categories: MSA
Tags: kafka, MSA, SpringCloud
๐ ๊ฐ์ธ์ ์ธ ๊ณต๊ฐ์ผ๋ก ๊ณต๋ถ๋ฅผ ๊ธฐ๋กํ๊ณ ๋ณต์ตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ธ๋ก๊ทธ์
๋๋ค.
์ ํํ์ง ์์ ์ ๋ณด๊ฐ ์์ ์ ์์ผ๋ ์ฐธ๊ณ ๋ฐ๋๋๋ค :๐ธ
[ํ๋ฆฐ ๋ด์ฉ์ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๋ฉด ๋ณต๋ฐ์ผ์ค๊ฑฐ์์]
์ธํ๋ฐ Dowon Lee๋์ Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์
(MSA) ๊ฐ์๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์
๋๋ค.๐
Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์
(MSA) ๊ฐ์ ๋ค์ผ๋ฌ ๊ฐ๊ธฐ๐ฉโ๐ซ
โ
์ถ๊ฐ๋ก kafka ์ ๋ํด ์ ์ ๋ฆฌ๋ ๋ธ๋ก๊ทธ๊ฐ ์์ด ์ฐธ๊ณ ํ์์ต๋๋ค.ย ยป
์ธ์ ๋๊น๊น
์นดํ์นด ๋ธ๋ก์ปค(Kafka Broker)
์นดํ์นด๋ ๋ถ์ฐ ๋ฉ์์ง ์์คํ ์ผ๋ก, ํ๋ก๋์(Producer)๊ฐ ๋ณด๋ธ ๋ฉ์์ง๋ฅผ ๋ธ๋ก์ปค(Broker)์ ์ ์ฅํ๊ณ ์ปจ์๋จธ(Consumer)๊ฐ ์ด๋ฅผ ๊ฐ์ ธ๊ฐ๋ ๊ตฌ์กฐ๋ก ๋์ํ๋ค.
์นดํ์นด์ ๋ํด ์กฐ๊ธ ๋ ๊น๊ฒ ์๊ณ ์ถ์ด์ ๊ฒ์ํ ๋ด์ฉ๊ณผ ๊ฐ์ ๋ด์ฉ์ ์์ด์ ์ ๋ฆฌํด๋ณด์๋ค.
1๏ธโฃ ์นดํ์นด ๋ธ๋ก์ปค๋?
- ์นดํ์นด ๋ธ๋ก์ปค๋?
- ์นดํ์นด ๋ธ๋ก์ปค๋ ์นดํ์นด ํด๋ผ์ด์ธํธ(ํ๋ก๋์์ ์ปจ์๋จธ)์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ์ ์ฅํ๊ณ ๋ณต์ ํ์ฌ ์ฅ์ ๋ฐ์ ์์๋ ์์ ์ ์ธ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ํ๋์ ์๋ฒ์๋ ํ๋์ ๋ธ๋ก์ปค ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ฉฐ,
- ๋ฐ์ดํฐ์ ์์ ํ ๊ด๋ฆฌ์ ๊ณ ๊ฐ์ฉ์ฑ์ ์ํด 3๋ ์ด์์ ๋ธ๋ก์ปค ์๋ฒ๋ฅผ ํ๋์ ํด๋ฌ์คํฐ๋ก ๊ตฌ์ฑํ์ฌ ์ด์ํ๋ค.
- ๋ธ๋ก์ปค ๋์ ๊ณผ์
- ๋ธ๋ก์ปค๋ ํ๋ก๋์๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ํ ํฝ(Topic)๊ณผ ํํฐ์ (Partition)์ ๋ฐ๋ผ ์ ์ฅํ๊ณ ,
- ์ปจ์๋จธ๊ฐ ์์ฒญํ๋ฉด ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค.
- ์ด๋ ๋ฐ์ดํฐ๋ ํ์ผ ์์คํ
์ ์ ์ฅ๋๋ฉฐ, ํ์ด์ง ์บ์(Page Cache)๋ฅผ ํ์ฉํ์ฌ ๋์คํฌ ์
์ถ๋ ฅ ์๋๋ฅผ ํฅ์์ํจ๋ค. ๋ฐ๋ผ์ ๋ธ๋ก์ปค๋ฅผ ์คํํ ๋ ํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ฆ๋ฅผ ํฌ๊ฒ ์ค์ ํ ํ์๊ฐ ์๋ค.
- ํ์ด์ง ์บ์: ์ด์์ฒด์ ์์ ํ์ผ ์ ์ถ๋ ฅ ์ฑ๋ฅ ํฅ์์ ์ํด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- ์ฃผํคํผ(Zookeeper)์์ ๊ด๊ณ
- ์นดํ์นด 2.x ๋ฒ์ ๊น์ง๋ ์ฃผํคํผ(Zookeeper)๋ฅผ ํตํด ํด๋ฌ์คํฐ์ ๋ฉํ๋ฐ์ดํฐ(ex : ํํฐ์ ์์น, ํ ํฝ ์ค์ ์ ๋ณด ๋ฑ)๋ฅผ ๊ด๋ฆฌํ๋ค.
- ์ฃผํคํผ๋ ๋ถ์ฐ ์์คํ ์ ๋ฉํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๊ณ , ๋ธ๋ก์ปค์ ์ํ๋ฅผ ๊ฐ์ํ๋ฉฐ, ์ปจํธ๋กค๋ฌ ์ ์ถ ๋ฑ์ ๋ด๋นํ๋ค.
- ๊ทธ๋ฌ๋ ์ฃผํคํผ์ ๋ธ๋ก์ปค ๊ฐ ๋ฉํ๋ฐ์ดํฐ ๋ถ์ผ์น ๋ฌธ์ ๋ฐ ๋ณต์ก์ฑ์ ์ค์ด๊ธฐ ์ํด, ์นดํ์นด 2.8 ๋ฒ์ ์ดํ๋ก๋ ์ฃผํคํผ ์์ด ์ด์ํ ์ ์๋ KRaft(Kafka Raft) ๋ชจ๋๊ฐ ๋์
- ์ด๋ก์จ ์นดํ์นด ๋ด๋ถ์ ์ผ๋ก ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ฒ ๋์ด ์์คํ ์ ์ผ๊ด์ฑ๊ณผ ์์ ์ฑ์ด ํฅ์๋์๋ค.
2๏ธโฃ ๋ธ๋ก์ปค ๋ด๋ถ ๋์ ์์
์ปจํธ๋กค๋ฌ(Controller)
- ์ญํ : ํด๋ฌ์คํฐ ๋ด ๋ธ๋ก์ปค๋ค์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ , ๋ธ๋ก์ปค๊ฐ ํด๋ฌ์คํฐ์์ ์ ๊ฑฐ๋๋ฉด ํด๋น ๋ธ๋ก์ปค์ ์๋ ๋ฆฌ๋ ํํฐ์ ์ ์ฌ๋ถ๋ฐฐํ๋ค
- ํน์ง: ์ปจํธ๋กค๋ฌ ์ญํ ์ ํด๋ฌ์คํฐ ๋ด ๋จ ํ๋์ ๋ธ๋ก์ปค์ ๋ถ์ฌ๋๋ฉฐ, ์ฅ์ ๋ฐ์ ์ ์ฃผํคํผ ๋๋ KRaft๋ฅผ ํตํด ์๋ก์ด ์ปจํธ๋กค๋ฌ๊ฐ ์ ์ถ๋๋ค.
์ฝ๋๋ค์ดํฐ(Coordinator)
- ์ญํ : ์ปจ์๋จธ ๊ทธ๋ฃน์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ , ํํฐ์ ์ ์ปจ์๋จธ์ ๋งค์นญํ์ฌ ๋ถ๋ฐฐํ๋ค.
- ๋ฆฌ๋ฐธ๋ฐ์ค(Rebalance): ์ปจ์๋จธ ๊ทธ๋ฃน ๋ด์์ ์ปจ์๋จธ๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ์ ๊ฑฐ๋๋ฉด ํํฐ์ ์ ์ฌ๋ถ๋ฐฐํ์ฌ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ์ํํ๊ฒ ์ด๋ฃจ์ด์ง๋๋ก ํ๋ค.
3๏ธโฃํ ํฝ๊ณผ ํํฐ์
ํ ํฝ(Topic)
- ๋ฐ์ดํฐ์ ๋ถ๋ฅ ๋จ์๋ก, ํ๋ก๋์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ๋ฐ๋์ ์ง์ ํด์ผ ํ๋ค.
- ํ๋์ ํ ํฝ์ ํ๋ ์ด์์ ํํฐ์ ์ ๊ฐ์ง๋ค.
ํํฐ์ (Partition)
- ํ ํฝ ๋ด์์ ์ค์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ๋จ์์ด๋ค.
- ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ํต์ฌ ์์๋ก, ์ปจ์๋จธ ๊ทธ๋ฃน์ด ํ ํฝ์ ๊ตฌ๋ ํ๋ฉด ํํฐ์ ๋จ์๋ก ์ปจ์๋จธ์ ๋งคํ๋๋ค.
- N:1 ๋งคํ ๊ด๊ณ: ํ๋์ ์ปจ์๋จธ๋ ์ฌ๋ฌ ํํฐ์ ์ ์ฒ๋ฆฌํ ์ ์์ง๋ง, ํ๋์ ํํฐ์ ์ ์ฌ๋ฌ ์ปจ์๋จธ์ ๋งคํ๋ ์ ์๋ค.
- ์ปจ์๋จธ ๊ทธ๋ฃน ๊ฒฉ๋ฆฌ: ์๋ก ๋ค๋ฅธ ์ปจ์๋จธ ๊ทธ๋ฃน์ ๋์ผํ ํ ํฝ์ ๊ตฌ๋ ํ๋๋ผ๋ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ์ฌ ์๋ก์๊ฒ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
ํํฐ์ ๊ฐ์ ์ค์ ์ ๊ณ ๋ ค์ฌํญ
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋
- ํ๋ก๋์์ ๋ฐ์ดํฐ ์ ์ก๋๊ณผ ์ปจ์๋จธ์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ๊ณ ๋ คํ์ฌ ํํฐ์ ์๋ฅผ ๊ฒฐ์ ํด์ผ ํ๋ค.
- ์๋ฅผ ๋ค์ด, ํ๋ก๋์๊ฐ ์ด๋น 1,000 ๋ ์ฝ๋๋ฅผ ์ ์กํ๊ณ , ์ปจ์๋จธ๊ฐ ์ด๋น 100 ๋ ์ฝ๋๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค๋ฉด ์ต์ 10๊ฐ์ ํํฐ์ ์ด ํ์ํ๋ค.
- ๊ณ์ฐ์:
ํ๋ก๋์ ์ ์ก๋ โค ์ปจ์๋จธ ์ฒ๋ฆฌ๋ ร ํํฐ์ ๊ฐ์
- ๋ฉ์์ง ํค ์ฌ์ฉ ์ฌ๋ถ
- ๋ฉ์์ง ํค๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ผํ ํค๋ฅผ ๊ฐ์ง ๋ฉ์์ง๊ฐ ํญ์ ๊ฐ์ ํํฐ์ ์ ์ ์ฅ๋์ด ์์๊ฐ ๋ณด์ฅ๋๋ค.
- ํํฐ์ ๊ฐ์๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ฉ์์ง ํค์ ํด์ฑ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ ธ ๋ฐ์ดํฐ ์์๊ฐ ๊นจ์ง ์ ์์ผ๋ฏ๋ก, ์ด๊ธฐ ํํฐ์ ๊ฐ์๋ฅผ ์ถฉ๋ถํ ํฌ๊ฒ ์ค์ ํ๋ ๊ฒ์ด ์ข๋ค.
- ํํฐ์ ์ ๋ณ๊ฒฝ ์ ์ปค์คํ ํํฐ์ ๋๋ฅผ ๊ตฌํํ์ฌ ๊ธฐ์กด ๋งคํ์ ์ ์งํ ์ ์๋ค.
- ๋ธ๋ก์ปค ์ํฅ๋
- ํํฐ์ ์๊ฐ ์ฆ๊ฐํ๋ฉด ๋ธ๋ก์ปค์์ ๊ด๋ฆฌํด์ผ ํ ํ์ผ ์๊ฐ ๋์ด๋๋ฏ๋ก ์ด์์ฒด์ ์ ํ์ผ ๋์คํฌ๋ฆฝํฐ ์ ํ์ ์ด๊ณผํ์ง ์๋๋ก ์ฃผ์ํด์ผ ํ๋ค.
- ๋ธ๋ก์ปค๋น ํํฐ์ ์๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ํ์ ์ ๋ธ๋ก์ปค ๊ฐ์๋ฅผ ๋๋ ค ํํฐ์ ์ ๋ถ์ฐ์์ผ์ผ ํ๋ค.
4๏ธโฃ ๋ ์ฝ๋์ ์คํ์
๋ ์ฝ๋(Record)
- ํํฐ์ ์ ์ ์ฅ๋๋ ์ค์ ๋ฐ์ดํฐ ๋จ์
- ๊ตฌ์ฑ ์์: ํ์์คํฌํ, ๋ฉ์์ง ํค, ๋ฉ์์ง ๊ฐ, ์คํ์ .
- ๋ธ๋ก์ปค์ ์ ์ฅ๋ ๋ ์คํ์ ๊ณผ ํ์์คํฌํ๊ฐ ์ง์ ๋๋ค.
์คํ์ (Offset)
- ๋ ์ฝ๋์ ๊ณ ์ ์๋ณ์์ด๋ฉฐ, ํํฐ์ ๋ด์์ ์์ฐจ์ ์ผ๋ก ์ฆ๊ฐํ๋ ์ ์ ๊ฐ
- ์ปจ์๋จธ ๊ทธ๋ฃน์ด ๋ฐ์ดํฐ๋ฅผ ์ด๋๊น์ง ์ฝ์๋์ง ์ถ์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- ์ปจ์๋จธ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ํ ์ปค๋ฐ(commit)์ ํตํด ์คํ์ ์ ์ ์ฅํ๋ค.
- ์คํ์
์ ๋ณด๋ ๋ด๋ถ ํ ํฝ์ธ
__consumer_offsets
์ ์ ์ฅ๋๋ค.
5๏ธโฃ ๋ฐ์ดํฐ ๋ณต์ ์ ๋๊ธฐํ
๋ณต์ ์ค์
- ๋ณต์ ๊ฐ์(Replication Factor): ํ ํฝ ์์ฑ ์ ์ค์ ํ๋ฉฐ, ๋ธ๋ก์ปค ๊ฐ์๋ณด๋ค ํด ์ ์๋ค.
- ๋ณต์ ๊ฐ์๊ฐ 3์ด๋ฉด ํ๋์ ๋ฆฌ๋ ํํฐ์ ๊ณผ ๋ ๊ฐ์ ํ๋ก์ ํํฐ์ ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
๋ฆฌ๋์ ํ๋ก์
- ๋ฆฌ๋ ํํฐ์ : ํ๋ก๋์์ ์ปจ์๋จธ๊ฐ ์ง์ ํต์ ํ๋ ํํฐ์ .
- ํ๋ก์ ํํฐ์ : ๋ฆฌ๋ ํํฐ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ์ฌ ์ ์ฅํ๋ค.
- ํ๋ก์ ํํฐ์ ์ ๋ฆฌ๋์ ์คํ์ ์ ์ถ์ ํ์ฌ ๋๊ธฐํํ๋ค.
์ฅ์ ๋ฐ์ ์ ์ฒ๋ฆฌ
- ๋ฆฌ๋ ํํฐ์ ์ ๊ฐ์ง ๋ธ๋ก์ปค์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด, ํ๋ก์ ํํฐ์ ์ค ํ๋๊ฐ ์๋ก์ด ๋ฆฌ๋๋ก ์น๊ฒฉ๋๋ค.
- ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ์ ์ค ์์ด ์๋น์ค์ ์ง์์ฑ์ด ์ ์ง๋๋ค.
6๏ธโฃ ๋ธ๋ก์ปค์ ๋ด๋ถ ๋์ ์์ธ
๋ฉ์์ง ์ ์ฅ๊ณผ ํ์ผ ๊ด๋ฆฌ
- ๋ฉ์์ง๋ ๋ก๊ทธ ์๋ฃ๊ตฌ์กฐ ํํ๋ก ๋์คํฌ์ ์ ์ฅ๋๋ฉฐ, ์ด๋ ๋น ๋ฅธ ์ฐ๊ธฐ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- ์ธ๊ทธ๋จผํธ ํ์ผ: ํํฐ์ ๋ณ๋ก ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ ํ์ผ ๋จ์
- Zero-Copy ๊ธฐ์ : ๋ฐ์ดํฐ ๋ณต์ฌ ์์ด ์ปค๋ ์์ญ์์ ๋คํธ์ํฌ๋ก ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํจ๋ค.
- ์ฃผ์: SSL ์ํธํ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ก ์นดํผ๋ฅผ ํ์ฉํ ์ ์๋ค.
๋ธ๋ก์ปค์ ์ฑ๋ฅ ์ต์ ํ
- ๋ฉ์์ง ์์ถ: ํ๋ก๋์์์ ๋ฉ์์ง๋ฅผ ์์ถํ์ฌ ์ ์กํ๋ฉด ๋คํธ์ํฌ ์ฌ์ฉ๋์ ์ค์ผ ์ ์๋ค.
- ๋ฉ์์ง ๋ฐฐ์น: ํ๋ก๋์์์ ์ฌ๋ฌ ๋ฉ์์ง๋ฅผ ํ ๋ฒ์ ์ ์กํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํจ๋ค.
- ํ์ด์ง ์บ์ ํ์ฉ: ๋ธ๋ก์ปค๋ OS์ ํ์ด์ง ์บ์๋ฅผ ํ์ฉํ์ฌ ๋์คํฌ I/O๋ฅผ ์ต์ํํ๋ค.
์นดํ์นด ๋ธ๋ก์ปค๋ ๋ถ์ฐ ์์คํ ์์ ๋ฐ์ดํฐ์ ์์ ์ ์ธ ์ ์ฅ๊ณผ ์ ์ก์ ๋ด๋นํ๋ ํต์ฌ ์์๋ค. ๋ธ๋ก์ปค์ ๊ตฌ์กฐ์ ๋์ ์๋ฆฌ๋ฅผ ์ดํดํ๋ฉด ์นดํ์นด๋ฅผ ๋์ฑ ํจ์จ์ ์ผ๋ก ํ์ฉํ ์ ์๋ค. ํนํ ์ด์ ํ๊ฒฝ์์์ ์ค์ ์ต์ ํ, ๋ชจ๋ํฐ๋ง, ๋ณด์ ์ค์ ๋ฑ์ ํตํด ์์ ์ ์ธ ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์๋ค.
Leave a comment