๐ก ์ด๋ฒ ํฌ์คํ ์์๋ Consumer -1, Consumer - 2์ ์ด์ด์ Consumer์ ๋ํด ์ ๋ฆฌํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
auto.offset.reset
์ปจ์๋จธ๊ฐ ํ ํฝ์ ์ฒ์ ์ ์ํ์ฌ ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ์ฌ ๋ ๊ฐ์ฅ ์ค๋๋ ์ฒ์ ์คํ์ (earliest)๋ถํฐ ๊ฐ์ ธ์ฌ ๊ฒ์ธ์ง ๊ฐ์ฅ ์ต๊ทผ์ธ ๋ง์ง๋ง ์คํ์ (latest) ์ดํ๋ถํฐ ๊ฐ์ ธ์ฌ ๊ฒ์ธ์ง๋ฅผ ์ค์ ํ๋ ํ๋ผ๋ฏธํฐ์ด๋ฉฐ, earliest์ latest๊ฐ ์์ต๋๋ค.
- earliest: ์ฒ์ ์คํ์ ๋ถํฐ ์ฝ์
- latest: ๋ง์ง๋ง ์คํ์ ๋ถํฐ ์ฝ์
ํ์ง๋ง ์ฃผ์ํ ์ ์ ์ปจ์๋จธ๊ฐ ํ ํฝ์ ์ฒ์ ์ ์ํ ๋ __consumer_offsets์ ์๋ ์คํ์ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ earliest๋ก ์ค์ ํ๋ค ํด๋ ๋ฌด์กฐ๊ฑด 0๋ฒ ์คํ์ ๋ถํฐ ์ฝ์ด ๋ค์ด์ง๋ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ปจ์๋จธ ๊ทธ๋ฃน์ ์ปจ์๋จธ๊ฐ ๋ชจ๋ ์ข ๋ฃ๋์ด๋ ์ปจ์๋จธ ๊ทธ๋ฃน์ด ์ฝ์ด ๋ค์ธ ์คํ์ ์ ๋ณด๋ 7์ผ ๋์ __consumer_offsets์ ์ ์ฅ๋์ด ์์ต๋๋ค. (offsets.retention.minutes ์ฐธ๊ณ )
ํด๋น ํ ํฝ์ด ์ญ์ ๋๊ณ ์ฌ ์์ฑ๋ ๊ฒฝ์ฐ์๋ ํด๋น ํ ํฝ์ ๋ํ ์ปจ์๋จธ ๊ทธ๋ฃน์ ์คํ์ ์ ๋ณด๋ 0์ผ๋ก __consumer_offsets์ ๊ธฐ๋ก๋ฉ๋๋ค.
ํํฐ์ ํ ๋น ์ ๋ต
ํ ํฝ์ ํํฐ์ ์ ๊ฐ๊ฐ ์ปจ์๋จธ์ ํ ๋นํ๋๋ฐ ํํฐ์ ํ ๋น์ ๋ชฉํ๋ ์ปจ์๋จธ์ ๋ถํ๋ฅผ ํํฐ์ ๋ณ๋ก ๊ท ๋ฑํ๊ฒ ํ ๋นํ๋ ๊ฒ๊ณผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ํจ์จ์ฑ ๊ทน๋ํ์ ๋๋ค.
์ปจ์๋จธ์ ํํฐ์ ํ ๋น ์ ๋ต์ ์๋์ ๊ฐ์ด ํฌ๊ฒ 4๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
ํํฐ์ ํ ๋น ์ ๋ต | ๋ด์ฉ |
Range ํ ๋น ์ ๋ต (๊ธฐ๋ณธ ๊ฐ) | ์๋ก ๋ค๋ฅธ 2๊ฐ ์ด์์ ํ ํฝ์ ์ปจ์๋จธ๋ค์ด ๊ตฌ๋
ํ ์ ํ ํฝ๋ณ๋ก ๋์ผํ ํํฐ์
์ ํน์ ์ปจ์๋จธ์๊ฒ ํ ๋นํ๋ ์ ๋ต์
๋๋ค. ์ฌ๋ฌ ํ ํฝ๋ค์์ ๋์ผํ ํค ๊ฐ์ผ๋ก ๋์ด ์๋ ํํฐ์ ์ ํน์ ์ปจ์๋จธ์ ํ ๋นํ์ฌ ํด๋น ์ปจ์๋จธ๊ฐ ์ฌ๋ฌ ํ ํฝ์ ๋์ผ ํค๊ฐ์ผ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ฉ์ดํ๊ฒ ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. |
Round Robin ํ ๋น ์ ๋ต | ํํฐ์ ๋ณ๋ก ์ปจ์๋จธ๋ค์ด ๊ท ๋ฑํ๊ฒ ๋ถํ๋ฅผ ๋ถ๋ฐฐํ ์ ์๋๋ก ์ฌ๋ฌ ํ ํฝ๋ค์ ํํฐ์ ๋ค์ ์ปจ์๋จธ๋ค์๊ฒ ์์ฐจ์ ์ธ Round Robin ๋ฐฉ์์ผ๋ก ํ ๋นํฉ๋๋ค. |
Sticky ํ ๋น ์ ๋ต | ์ต์ด์ ํ ๋น๋ ํํฐ์
๊ณผ ์ปจ์๋จธ ๋งคํ์ Rebalance๊ฐ ์ํ๋์ด๋ ๊ฐ๊ธ์ ๊ทธ๋๋ก ์ ์งํ ์ ์๋๋ก ์ง์ํ๋ ์ ๋ต์
๋๋ค. ํ์ง๋ง Eager Protocol ๊ธฐ๋ฐ์ด๋ฏ๋ก Rebalance ์ ๋ชจ๋ ์ปจ์๋จธ์ ํํฐ์ ๋งคํ์ด ํด์ ๋ ํ์ ๋ค์ ๋งคํ๋๋ ํํ์ ๋๋ค. |
Cooperative(ํ๋ ฅ์ ) Sticky ํ ๋น ์ ๋ต | ์ต์ด์ ํ ๋น๋ ํํฐ์ ๊ณผ ์ปจ์๋จธ ๋งคํ์ Rebalance๊ฐ ์ํ๋์ด๋ ๊ฐ๊ธ์ ๊ทธ๋๋ก ์ ์งํ ์ ์๋๋ก ์ง์ํจ๊ณผ ๋์์ Cooperative Protocol ๊ธฐ๋ฐ์ผ๋ก Rebalance ์ ๋ชจ๋ ์ปจ์๋จธ์ ํํฐ์ ๋งคํ์ด ํด์ ๋์ง ์๊ณ Rebalance์ ์ฐ๊ด๋ ํํฐ์ ๊ณผ ์ปจ์๋จธ๋ง ์ฌ ๋งคํ๋ฉ๋๋ค. |
๊ฐ ํํฐ์ ํ ๋น ์ ๋ต์ ๋ฐ๋ฅธ ์ปจ์๋จธ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํํฐ์ ํ ๋น ์ ๋ต | ์ต์ |
Range ํ ๋น ์ ๋ต (๊ธฐ๋ณธ ๊ฐ) | partition.assignment.strategy=RangeAssignor |
Round Robin ํ ๋น ์ ๋ต | partition.assignment.strategy=RoundRobinAssignor |
Sticky ํ ๋น ์ ๋ต | partition.assignment.strategy=StickyAssignor |
Cooperative Sticky ํ ๋น ์ ๋ต | partition.assignment.strategy=CooperativeStickyAssignor |
์ฃผ์ํ ์ ์ ์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต์ด Rebalance ๋ฐ์ ์ ๋๋๋ก์ด๋ฉด ๊ธฐ์กด์ ์ปจ์๋จธ ๋งคํ์ ์ ์งํ๋ ค ํ๋ค๊ณ ์ค๋ช ํ๋๋ฐ,
์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต์๋ ํฌ๊ฒ 2๊ฐ์ง ๋ชฉ์ ์ด ์์ต๋๋ค.
- ๊ฐ๋ฅํ ํ ๊ท ํ ์กํ ํํฐ์ ํ ๋น
- Rebalance ๋ฐ์ ์ ๋๋๋ก ๊ธฐ์กด์ ํ ๋น๋ ํํฐ์ ์ ๋ณด๋ฅผ ๋ณด์ฅํ๋ ๊ฒ
ํ์ง๋ง ์ฒซ ๋ฒ์งธ ๋ชฉ์ ์ด ๋ ์ฐ์ ์๋๊ธฐ ๋๋ฌธ์ ์คํฐํค ํํฐ์ ํ ๋น ์ ๋ต์ด๋ผ๊ณ ํด์ ๋ฌด์กฐ๊ฑด ๊ธฐ์กด์ ํํฐ์ ๊ณผ ์ปจ์๋จธ ๋งคํ ์ ๋ณด๋ฅผ ์ ์งํ์ง๋ ์์ต๋๋ค.
์์ 3๊ฐ์ง ํํฐ์ ํ ๋น ์ ๋ต(Range, Round Robin, Sticky)์ ๋ชจ๋ Eager Protocol์ ์ฌ์ฉํฉ๋๋ค.
ํ์ง๋ง Cooperative Sticky ํ ๋น ์ ๋ต์ Cooperative Protocol์ ์ฌ์ฉํ๋๋ฐ Eager ๋ฐฉ์๋ณด๋ค Rebalancing์ด ๋ ๋น ๋ฅด๋ค๊ณ ํฉ๋๋ค.
enable.auto.commit
์นดํ์นด์์๋ ์ปจ์๋จธ๊ฐ ์คํ์ ์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ปจ์๋จธ๋ ์ ์ ํ ์์ ์ ์คํ์ ์ ์ปค๋ฐํด์ผ ํฉ๋๋ค.
์คํ์ ์ปค๋ฐ ๊ด๋ จ ์ค์ ์๋ enable.auto.commit ์ค์ ์ด ์์ผ๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ true์ ๋๋ค.
์ด ์ค์ ์ด true์ผ ๊ฒฝ์ฐ ์ปจ์๋จธ๊ฐ auto.commit.interval.ms ๋ง๋ค ์คํ์ ์ ์๋์ผ๋ก ์ปค๋ฐํ๋ฉฐ auto.commit.interval.ms์ ๊ธฐ๋ณธ๊ฐ์ 5000ms(5์ด)์ ๋๋ค.
์๋ ์ปค๋ฐ ๋ฐฉ์์ Rebalance๋ ๋น์ ์์ ์ธ ํด๋ผ์ด์ธํธ ์ข ๋ฃ ๋ฑ์ผ๋ก ๋ฐ์ดํฐ ๋๋ฝ์ด ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์๋ ์๋์ผ๋ก ์ ์ ํ ์์ ์ ์คํ์ ์ ์ปค๋ฐํด์ผ ํฉ๋๋ค.
์๋์ผ๋ก ์คํ์ ์ ์ปค๋ฐํ๋ ค๋ฉด KakfaConsumer์ commitSync, commitAsync ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋๋ฐ commitSync๋ ๋๊ธฐ, commitAsync๋ ๋น๋๊ธฐ๋ก ์ปค๋ฐํฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ
'Kafka' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฉํฐ ๋ ธ๋ ์นดํ์นด - 1 (0) | 2023.05.01 |
---|---|
KafkaConsumer (0) | 2023.04.17 |
Consumer - 2 (0) | 2023.04.17 |
Consumer - 1 (0) | 2023.04.16 |
Producer - 2 (0) | 2023.04.09 |
๋๊ธ