[MSA] kafka - consumer
Categories: MSA
Tags: kafka, MSA, SpringCloud
๐ ๊ฐ์ธ์ ์ธ ๊ณต๊ฐ์ผ๋ก ๊ณต๋ถ๋ฅผ ๊ธฐ๋กํ๊ณ ๋ณต์ตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ธ๋ก๊ทธ์
๋๋ค.
์ ํํ์ง ์์ ์ ๋ณด๊ฐ ์์ ์ ์์ผ๋ ์ฐธ๊ณ ๋ฐ๋๋๋ค :๐ธ
[ํ๋ฆฐ ๋ด์ฉ์ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๋ฉด ๋ณต๋ฐ์ผ์ค๊ฑฐ์์]
์ธํ๋ฐ Dowon Lee๋์ Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์
(MSA) ๊ฐ์๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์
๋๋ค.๐
Spring Cloud๋ก ๊ฐ๋ฐํ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ ํ๋ฆฌ์ผ์ด์
(MSA) ๊ฐ์ ๋ค์ผ๋ฌ ๊ฐ๊ธฐ๐ฉโ๐ซ
โ
์ถ๊ฐ๋ก kafka ์ ๋ํด ์ ์ ๋ฆฌ๋ ๋ธ๋ก๊ทธ๊ฐ ์์ด ์ฐธ๊ณ ํ์์ต๋๋ค.ย ยป
์ธ์ ๋๊น๊น
์นดํ์นด ์ปจ์๋จธ(Kafka Consumer)
- ์นดํ์นด ๋ฉ์์ง ์์คํ ์์ ๋ฐ์ดํฐ๋ฅผ ์๋นํ๋ ์ญํ ์ ๋ด๋น
- ํ๋ก๋์๊ฐ ๋ธ๋ก์ปค์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ฉด, ์ปจ์๋จธ๋ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฒ๋ฆฌํ๋ค.
1๏ธโฃ ์ปจ์๋จธ ๊ตฌ์กฐ
์ปจ์๋จธ ๊ทธ๋ฃน(Consumer Group)
- ์ปจ์๋จธ ๊ทธ๋ฃน์ ํ๋ ์ด์์ ์ปจ์๋จธ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๋์ผํ ๊ทธ๋ฃน์ ์ํ ์ปจ์๋จธ๋ค์ ํ ํฝ์ ํํฐ์ ๋ค์ ๋ถํ ํ์ฌ ์ฒ๋ฆฌํ๋ค.
- ํน์ง
- ๊ฒฉ๋ฆฌ์ฑ: ์๋ก ๋ค๋ฅธ ์ปจ์๋จธ ๊ทธ๋ฃน์ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํ๋ฉฐ, ๋์ผํ ํ ํฝ์ ๊ตฌ๋ ํ๋๋ผ๋ ์๋ก ์ํฅ์ ์ฃผ์ง ์๋๋ค.
- ํํฐ์ ํ ๋น: ํ๋์ ํํฐ์ ์ ๋์ผํ ์ปจ์๋จธ ๊ทธ๋ฃน ๋ด์์ ๋จ ํ๋์ ์ปจ์๋จธ์๊ฒ๋ง ํ ๋น๋๋ค.
- ์ปจ์๋จธ ์์ ํํฐ์ ์: ์ปจ์๋จธ ๊ทธ๋ฃน์ ์ปจ์๋จธ ์๋ ํ ํฝ์ ํํฐ์ ์๋ณด๋ค ๋ง์ ํ์๊ฐ ์๋ค. ์ปจ์๋จธ ์๊ฐ ํํฐ์ ์๋ณด๋ค ๋ง์ผ๋ฉด ๋จ๋ ์ปจ์๋จธ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ์ง ์๋๋ค.
์ปจ์๋จธ์ ํํฐ์ ์ ๋งคํ
- N:1 ๊ด๊ณ: ํ๋์ ์ปจ์๋จธ๋ ์ฌ๋ฌ ๊ฐ์ ํํฐ์ ์ ์ฒ๋ฆฌํ ์ ์์ง๋ง, ํ๋์ ํํฐ์ ์ ํ ์ปจ์๋จธ์๊ฒ๋ง ํ ๋น๋๋ค.
- ํ์ฅ์ฑ: ์ปจ์๋จธ ์๋ฅผ ๋๋ ค ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ง๋ง, ํํฐ์ ์ ์ด์์ ํจ๊ณผ๋ ์๋ค.
2๏ธโฃ ์คํ์ (Offset)๊ณผ ์ปค๋ฐ(Commit)
์คํ์ (Offset)
- ์ปจ์๋จธ๊ฐ ํํฐ์ ์์ ์ฝ์ ๋ฉ์์ง์ ์์น๋ฅผ ๋ํ๋ด๋ ๊ณ ์ ํ ๋ฒํธ
- ์ปจ์๋จธ๋ ์คํ์ ์ ๊ธฐ๋ฐ์ผ๋ก ์ด๋๊น์ง ๋ฐ์ดํฐ๋ฅผ ์ฝ์๋์ง ์ถ์ ํ๊ณ , ์ฌ์์ ์ ์ด์ด์ ์ฒ๋ฆฌํ ์ ์๋ค.
์คํ์ ์ปค๋ฐ(Commit)
- ์ปจ์๋จธ๊ฐ ์ฒ๋ฆฌํ ๋ง์ง๋ง ์คํ์ ์ ๋ธ๋ก์ปค์ ์ ์ฅํ์ฌ, ์ฌ์์ ์ ํด๋น ์์น๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋๋ก ํ๋ค.
- ์ ์ฅ ์์น: ์นดํ์นด ๋ด๋ถ ํ ํฝ์ธ
__consumer_offsets
์ ์ ์ฅ๋๋ค. - ์ปค๋ฐ ๋ฐฉ์
- ์๋ ์ปค๋ฐ(Auto Commit):
- ์ค์ :
enable.auto.commit=true
- ์ปจ์๋จธ๊ฐ ์ผ์ ์ฃผ๊ธฐ(
auto.commit.interval.ms
)๋ง๋ค ์๋์ผ๋ก ์คํ์ ์ ์ปค๋ฐํ๋ค. - ์ฅ์ : ๊ตฌํ์ด ๊ฐ๋จํ๋ฉฐ, ๋ณ๋์ ์ฝ๋ ์์ฑ์ด ํ์ ์๋ค.
- ๋จ์ : ๋ฉ์์ง ์ฒ๋ฆฌ ์ค๋จ ์ ๋ฐ์ดํฐ ์ค๋ณต ๋๋ ์ ์ค ๊ฐ๋ฅ์ฑ์ด ์๋ค.
- ์ค์ :
- ์๋ ์ปค๋ฐ(Manual Commit):
- ์ค์ :
enable.auto.commit=false
- ๋ฐฉ๋ฒ
- ๋๊ธฐ ์ปค๋ฐ(commitSync): ์ปค๋ฐ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ์ ๋๊น์ง ๊ธฐ๋ค๋ฆผ
- ๋น๋๊ธฐ ์ปค๋ฐ(commitAsync): ์ปค๋ฐ ์์ฒญ์ ๋ณด๋ด๊ณ ๋ฐ๋ก ๋ค์ ์์ ์ ์ํํ๋ค.
- ์ฅ์ : ๋ฉ์์ง ์ฒ๋ฆฌ ์๋ฃ ํ ์ ํํ ์์ ์ ์ปค๋ฐํ ์ ์์ด ๋ฐ์ดํฐ ์ค๋ณต์ด๋ ์ ์ค์ ์ต์ํํ๋ค.
- ๋จ์ : ๊ตฌํ์ด ๋ณต์กํ๋ฉฐ, ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์๋ค.
- ์ค์ :
- ์๋ ์ปค๋ฐ(Auto Commit):
๋ฐ์ดํฐ ์ค๋ณต๊ณผ ์ ์ค
- ์ค๋ณต ๋ฐ์ ๊ฐ๋ฅ์ฑ: ์ปจ์๋จธ ์ฅ์ ๋ ๋ฆฌ๋ฐธ๋ฐ์ฑ ์ ๋ง์ง๋ง์ผ๋ก ์ปค๋ฐ๋ ์คํ์ ์ดํ์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฒ๋ฆฌํ๊ฒ ๋์ด ์ค๋ณต์ด ๋ฐ์ํ ์ ์๋ค.
- ์ ์ค ๋ฐ์ ๊ฐ๋ฅ์ฑ: ์๋ ์ปค๋ฐ ์ฌ์ฉ ์ ๋ฉ์์ง ์ฒ๋ฆฌ ์ ์ ์คํ์ ์ด ์ปค๋ฐ๋๋ฉด ์ฒ๋ฆฌ๋์ง ์์ ๋ฐ์ดํฐ๊ฐ ์ ์ค๋ ์ ์๋ค.
- ํด๊ฒฐ ๋ฐฉ์:
- ์ ํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ์์ ์ค๋ณต ์ฒ๋ฆฌ ๋ก์ง์ ๊ตฌํ
- ๋ฉฑ๋ฑ์ฑ์ ๋ณด์ฅํ๋ ์ฒ๋ฆฌ๋ฅผ ๊ณ ๋ ค
3๏ธโฃ ํด๋ง(Polling) ๋ฉ์ปค๋์ฆ
Poll ๋ฉ์๋
- ๋์ ๋ฐฉ์: ์ปจ์๋จธ๋
poll()
๋ฉ์๋๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํธ์ถํ์ฌ ๋ธ๋ก์ปค๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. - ๋ด๋ถ ๋์
- ์ปจ์๋จธ๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ Fetcher ์ค๋ ๋๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ ๋ด๋ถ ํ์ ์ ์ฅํฉ๋๋ค.
poll()
ํธ์ถ ์ ๋ด๋ถ ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ค.
ํํธ๋นํธ(Heartbeat)
- ์ญํ : ์ปจ์๋จธ๋ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ธ๋ก์ปค(์ฝ๋๋ค์ดํฐ)์๊ฒ ํํธ๋นํธ๋ฅผ ์ ์กํ์ฌ ์์ ์ ์ํ๋ฅผ ์๋ฆฐ๋ค.
- ์ค์ ์ต์
heartbeat.interval.ms
: ํํธ๋นํธ ์ ์ก ์ฃผ๊ธฐ(๊ธฐ๋ณธ๊ฐ: 3์ด)session.timeout.ms
: ์ปจ์๋จธ ์ธ์ ํ์์์ ์๊ฐ(๊ธฐ๋ณธ๊ฐ: 10์ด)- ์ด ์๊ฐ ๋ด์ ํํธ๋นํธ๋ฅผ ๋ฐ์ง ๋ชปํ๋ฉด ๋ธ๋ก์ปค๋ ์ปจ์๋จธ๊ฐ ๋น์ ์์ด๋ผ๊ณ ํ๋จํ๊ณ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ์ํํ๋ค.
ํด๋ง ์ฃผ๊ธฐ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ
- ํด๋ง ์ง์ฐ ์ ๋ฌธ์ ์
max.poll.interval.ms
์ค์ ์๊ฐ(๊ธฐ๋ณธ๊ฐ: 5๋ถ) ๋ด์poll()
์ ํธ์ถํ์ง ์์ผ๋ฉด ์ปจ์๋จธ๋ ๋น์ ์์ผ๋ก ํ๋จ๋๋ค.- ์ด ๊ฒฝ์ฐ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ๋ฐ์ํ์ฌ ์ปจ์๋จธ ๊ทธ๋ฃน ์ ์ฒด์ ๋ฉ์์ง ์ฒ๋ฆฌ๊ฐ ์ผ์ ์ค๋จ๋ ์ ์๋ค.
- ํด๊ฒฐ ๋ฐฉ์
max.poll.records
๋ฅผ ์กฐ์ ํ์ฌ ํ ๋ฒ์ ๊ฐ์ ธ์ค๋ ๋ ์ฝ๋ ์๋ฅผ ์ค์ธ๋ค.- ๋ ์ฝ๋ ์ฒ๋ฆฌ ์๊ฐ์ ์ต์ ํํ์ฌ
poll()
ํธ์ถ ๊ฐ๊ฒฉ์ ๋จ์ถํ๋ค. - ์ค๋ ๋ ๋ถ๋ฆฌ ๋ฑ์ ํตํด ๋ฉ์์ง ์ฒ๋ฆฌ์ ํด๋ง์ ๋ณ๋ ฌํํ๋ค.
4๏ธโฃ ์ปจ์๋จธ ์ฃผ์ ์ต์
ํ์ ์ต์
- bootstrap.servers
- ์นดํ์นด ํด๋ฌ์คํฐ์ ๋ธ๋ก์ปค ์ ๋ณด๋ฅผ ์ง์
- key.deserializer
- ๋ฉ์์ง ํค๋ฅผ ์ญ์ง๋ ฌํํ๋ ํด๋์ค
- value.deserializer
- ๋ฉ์์ง ๊ฐ์ ์ญ์ง๋ ฌํํ๋ ํด๋์ค
- group.id
- ์ปจ์๋จธ ๊ทธ๋ฃน์ ์์ด๋๋ฅผ ์ง์
์ ํ ์ต์
- auto.offset.reset
- ์ปจ์๋จธ ๊ทธ๋ฃน์ ์คํ์ ์ด ์์ ๋ ์ด๋์๋ถํฐ ์ฝ์์ง ์ง์ ํ๋ค.
- ์ต์
๊ฐ:
latest
(๊ธฐ๋ณธ๊ฐ): ๊ฐ์ฅ ๋ง์ง๋ง ์คํ์ ๋ถํฐ ์ฝ๋๋ค.earliest
: ๊ฐ์ฅ ์ฒ์ ์คํ์ ๋ถํฐ ์ฝ๋๋ค.none
: ์คํ์ ์ด ์์ผ๋ฉด ์๋ฌ๋ฅผ ๋ฐ์์ํจ๋ค
- enable.auto.commit
- ์๋ ์ปค๋ฐ ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ๊ฒฐ์
- ๊ธฐ๋ณธ๊ฐ์
true
- auto.commit.interval.ms
- ์๋ ์ปค๋ฐ์ผ ๊ฒฝ์ฐ ์คํ์ ์ปค๋ฐ ์ฃผ๊ธฐ๋ฅผ ์ง์
- ๊ธฐ๋ณธ๊ฐ์ 5,000ms(5์ด)
- fetch.min.bytes
- ๋ธ๋ก์ปค๋ก๋ถํฐ ํ ๋ฒ์ ๊ฐ์ ธ์ฌ ์ต์ ๋ฐ์ดํฐ ํฌ๊ธฐ
- ๊ธฐ๋ณธ๊ฐ์ 1๋ฐ์ดํธ
- fetch.max.bytes
- ๋ธ๋ก์ปค๋ก๋ถํฐ ํ ๋ฒ์ ๊ฐ์ ธ์ฌ ์ ์๋ ์ต๋ ๋ฐ์ดํฐ ํฌ๊ธฐ
- ๊ธฐ๋ณธ๊ฐ์ 50MB
- max.poll.records
- ํ ๋ฒ์
poll()
ํธ์ถ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ ์ต๋ ๋ ์ฝ๋ ์ - ๊ธฐ๋ณธ๊ฐ์ 500์
- ํ ๋ฒ์
- max.poll.interval.ms
poll()
ํธ์ถ ๊ฐ ์ต๋ ์ง์ฐ ์๊ฐ- ๊ธฐ๋ณธ๊ฐ์ 300,000ms(5๋ถ)
- session.timeout.ms
- ์ปจ์๋จธ ์ธ์ ํ์์์ ์๊ฐ
- ๊ธฐ๋ณธ๊ฐ์ 10,000ms(10์ด)
- heartbeat.interval.ms
- ํํธ๋นํธ ์ ์ก ์ฃผ๊ธฐ
- ๊ธฐ๋ณธ๊ฐ์ 3,000ms(3์ด)
- isolation.level
- ํธ๋์ญ์ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ต์
read_uncommitted
(๊ธฐ๋ณธ๊ฐ),read_committed
์ค ์ ํ
5๏ธโฃํํฐ์ ํ ๋น ์ ๋ต๊ณผ ๋ฆฌ๋ฐธ๋ฐ์ฑ
ํํฐ์ ํ ๋น ์ ๋ต(Partition Assignment Strategy)
- ์ปจ์๋จธ ๊ทธ๋ฃน ๋ด์์ ํํฐ์ ์ ์ปจ์๋จธ์๊ฒ ์ด๋ป๊ฒ ํ ๋นํ ์ง ๊ฒฐ์
- ์ต์
:
- RangeAssignor(๊ธฐ๋ณธ๊ฐ)
- ํ ํฝ๋ณ๋ก ํํฐ์ ์ ๋ฒ์ ๋จ์๋ก ๋๋์ด ์ปจ์๋จธ์๊ฒ ํ ๋น
- RoundRobinAssignor
- ๋ชจ๋ ํํฐ์ ์ ์ปจ์๋จธ๋ค์๊ฒ ์์ฐจ์ ์ผ๋ก ํ ๋น
- StickyAssignor:
- ์ด์ ํ ๋น ์ํ๋ฅผ ์ต๋ํ ์ ์งํ๋ฉฐ ํํฐ์ ์ ํ ๋น
- CooperativeStickyAssignor
- ํ๋ ฅ์ ์ธ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ํตํด ์ต์ํ์ ์ด๋์ผ๋ก ํํฐ์ ์ ์ฌ๋ถ๋ฐฐ
- RangeAssignor(๊ธฐ๋ณธ๊ฐ)
๋ฆฌ๋ฐธ๋ฐ์ฑ(Rebalancing)
- ๋ฐ์ ์กฐ๊ฑด:
- ์ปจ์๋จธ ๊ทธ๋ฃน ๋ด ์ปจ์๋จธ์ ์ถ๊ฐ ๋๋ ์ ๊ฑฐ
- ํ ํฝ์ ํํฐ์ ์ ๋ณ๊ฒฝ
- ๋์ ๊ณผ์ :
- ์ปจ์๋จธ ๊ทธ๋ฃน ๋ด ์ปจ์๋จธ๋ค์
poll()
ํธ์ถ ์ ๋ฆฌ๋ฐธ๋ฐ์ฑ ํ์ ์ฌ๋ถ๋ฅผ ํ์ธ - ๋ฆฌ๋ฐธ๋ฐ์ฑ์ด ํ์ํ๋ฉด ์ปจ์๋จธ๋ค์ ์ฝ๋๋ค์ดํฐ์๊ฒ ์กฐ์ธ ์์ฒญ์ ๋ณด๋ธ๋ค
- ์ฝ๋๋ค์ดํฐ๋ ์ปจ์๋จธ๋ค์ ์กฐ์ธ ์์ฒญ์ ๋ฐ์ ํ ๊ทธ๋ฃน ๋ฆฌ๋๋ฅผ ์ ์ถ
- ๊ทธ๋ฃน ๋ฆฌ๋๋ ํํฐ์ ํ ๋น ์ ๋ต์ ๋ฐ๋ผ ํํฐ์ ์ ์ปจ์๋จธ๋ค์๊ฒ ๋ถ๋ฐฐํ๊ณ ์ฝ๋๋ค์ดํฐ์๊ฒ ์ ๋ฌํ๋ค
- ์ฝ๋๋ค์ดํฐ๋ ๊ฐ ์ปจ์๋จธ์๊ฒ ์๋ก์ด ํํฐ์ ํ ๋น ์ ๋ณด๋ฅผ ์ ์ก
- ์ปจ์๋จธ ๊ทธ๋ฃน ๋ด ์ปจ์๋จธ๋ค์
- ์ฃผ์์ฌํญ:
- ๋ฆฌ๋ฐธ๋ฐ์ฑ ๋์ ์ปจ์๋จธ๋ค์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ์ง ๋ชปํ๊ณ ๋๊ธฐํ๊ฒ ๋๋ค
- ๋ฆฌ๋ฐธ๋ฐ์ฑ ์๊ฐ์ด ๊ธธ์ด์ง๋ฉด ๋ฉ์์ง ์ฒ๋ฆฌ ์ง์ฐ(Lag)์ด ๋ฐ์ํ ์ ์๋ค.
๋ฆฌ๋ฐธ๋ฐ์ฑ ์ต์ ํ ๋ฐฉ์
- ํด๋ง ์ฃผ๊ธฐ ๋จ์ถ
max.poll.records
๋ฅผ ์ค์ฌpoll()
ํธ์ถ ๋น๋๋ฅผ ๋์ธ๋ค.
- ์ค๋ ๋ ๋ถ๋ฆฌ
- ๋ฉ์์ง ์ฒ๋ฆฌ ๋ก์ง์ ๋ณ๋์ ์ค๋ ๋๋ก ๋ถ๋ฆฌํ์ฌ
poll()
ํธ์ถ ์ง์ฐ์ ๋ฐฉ์งํ๋ค - ๋จ, ํํฐ์ ๋ณ ๋ฉ์์ง ์ฒ๋ฆฌ ์์๋ฅผ ๋ณด์ฅํ๊ธฐ ์ด๋ ต๋ค
- ๋ฉ์์ง ์ฒ๋ฆฌ ๋ก์ง์ ๋ณ๋์ ์ค๋ ๋๋ก ๋ถ๋ฆฌํ์ฌ
- Cooperative Rebalancing ์ฌ์ฉ
partition.assignment.strategy
๋ฅผCooperativeStickyAssignor
๋ก ์ค์ ํ์ฌ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ์ํฅ์ ์ต์ํํ๋ค
์ปจ์๋จธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ฐ์ ์ธ ๊ตฌ์กฐ
- ๋จ์ผ ์ค๋ ๋ ๊ตฌ์กฐ
poll()
๋ฉ์๋๋ก ๋ ์ฝ๋๋ฅผ ๊ฐ์ ธ์ค๊ณ , ๊ฐ์ ์ค๋ ๋์์ ์ฒ๋ฆฌํ๋ค.- ๊ตฌํ์ด ๊ฐ๋จํ์ง๋ง, ๋ฉ์์ง ์ฒ๋ฆฌ ์๊ฐ์ด ๊ธธ์ด์ง๋ฉด ํด๋ง ์ฃผ๊ธฐ๊ฐ ๊ธธ์ด์ ธ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ์ํฅ์ด ์๋ค.
- ๋ฉํฐ ์ค๋ ๋ ๊ตฌ์กฐ
- ๋ฉ์์ง ์ฒ๋ฆฌ๋ฅผ ๋ณ๋์ ์ค๋ ๋ ํ์์ ์ํ
- ํด๋ง ์ฃผ๊ธฐ๋ฅผ ์งง๊ฒ ์ ์งํ ์ ์์ง๋ง, ํํฐ์ ๋ณ ๋ฉ์์ง ์์๊ฐ ๋ณด์ฅ๋์ง ์์ ์ ์๋ค.
- ์ค๋ ๋ ํ์ ํฌ๊ธฐ์ ๋ฐฑํ๋ ์ (Backpressure) ๊ด๋ฆฌ๊ฐ ํ์ํ๋ค.
๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ๊ณ ๋ ค์ฌํญ
- ๋ฉ์์ง ์์ ๋ณด์ฅ
- ํํฐ์ ๋ด ๋ฉ์์ง ์์๋ฅผ ๋ณด์ฅํ๋ ค๋ฉด ๋จ์ผ ์ค๋ ๋๋ก ์ฒ๋ฆฌํ๊ฑฐ๋, ์์ ๋ณด์ฅ ๋ก์ง์ ๊ตฌํํด์ผ ํ๋ค.
- ์ค๋ณต ์ฒ๋ฆฌ ๋ฐฉ์ง
- ์ปจ์๋จธ ์ฅ์ ์ ์ค๋ณต ์ฒ๋ฆฌ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก, ๋ฉฑ๋ฑ์ฑ์ ๊ณ ๋ คํ ๋ก์ง์ด ํ์ํ๋ค.
- ๋ฐฑํ๋ ์
๊ด๋ฆฌ
-
๋ฉ์์ง ์ฒ๋ฆฌ ์๋์ ์์ ์๋์ ๊ท ํ์ ๋ง์ถฐ ๋ฉ๋ชจ๋ฆฌ ์ด์๋ฅผ ๋ฐฉ์งํ๋ค.
-
Leave a comment