๐ก ์ด๋ฒ ํฌ์คํ ์์๋ ISR(In Sync Replica)์ ๋ํด ์ ๋ฆฌํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด์ ์ ํฌ์คํ ํ๋ Replication์์ ๋ฆฌ๋์ ํ๋ก์ ํํฐ์ ๋ค์ ํ๋์ ๋ ผ๋ฆฌ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ฌ์๋๋ฐ ์ด๋ฅผ ISR(In Sync Replication)์ด๋ผ๊ณ ํฉ๋๋ค.

ISR์ ๋ฆฌ๋ ํํฐ์ ๊ณผ ์ ์์ ์ผ๋ก ๋๊ธฐํ๊ฐ ์ด๋ฃจ์ด์ง ํ๋ก์ ํํฐ์ ๋ค๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๋ง์ฝ ํ๋ก์ ํํฐ์ ์ ๋ฌธ์ ๊ฐ ์๊ฒจ ๋ฆฌ๋ ํํฐ์ ์ ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ๊ฑฐ๋ ๋ค์ณ์ง ๊ฒฝ์ฐ ํด๋น ํ๋ก์ ํํฐ์ ์ ISR์์ ์ ์ธ๋ฉ๋๋ค.
๐ข ISR์ ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ธํ๋ ์ต์ ์ ๋ค์ ๋๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค.
zookeeper.session.timeout.ms
default: 6์ด
max: 18์ด
โ ๋ธ๋ก์ปค๊ฐ ์ฃผํคํผ์ ์ฐ๊ฒฐ๋์ด ์์ด์ผ ํฉ๋๋ค. ์ ์ต์ ์ ์ค์ ๋ ์๊ฐ ๋ด์ Heartbeat๋ฅผ ์ง์์ ์ผ๋ก ์ฃผํคํผ์ ๋ณด๋ด์ผ ํฉ๋๋ค.
replica.lag.time.max.ms
default: 10์ด
max: 30์ด
โ ํ๋ก์ ํํฐ์ ์ ํด๋นํ๋ ์ต์ ์ผ๋ก, ํ๋ก์ ํํฐ์ ์ ๋ฆฌ๋ ํํฐ์ ์ผ๋ก๋ถํฐ ์ ์ต์ ์ ์ค์ ๋ ์๊ฐ ๋ด์ ๋ฉ์์ง๋ฅผ ์ง์์ ์ผ๋ก ๊ฐ์ ธ์์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ISR๋ด์ ํ๋ก์ ํํฐ์ ๋ค์ ๋ชจ๋ ๋ฆฌ๋ ํํฐ์ ์ด ๋ ์ ์์ต๋๋ค.

๋ง์ฝ ์์ ๊ฐ์ด broker 4์ ๋ฌธ์ ๊ฐ ์๊ฒจ ํด๋น ํํฐ์ ๋ค์ด ISR์์ ์ ์ธ๋๋ค๋ฉด ์ดํ broker 4์ ์๋ ํํฐ์ ๋ค์ ๋ฆฌ๋ ํํฐ์ ์ด ๋ ์ ์๊ณ , broker 4์ ๋ฆฌ๋ ํํฐ์ ์ด ์์๋ค๊ณ ํ๋ค๋ฉด ISR ๋ด์์ ์๋ก์ด ๋ฆฌ๋ ํํฐ์ ์ ์ ์ถํ๋ฉฐ, ๋ ์ด์ broker 4์ ํํฐ์ ๋ค์ ๋ฆฌ๋ ํํฐ์ ์ ๋ฉ์์ง๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์ด์ ๋ฉํฐ ๋ ธ๋ ์นดํ์นด ํฌ์คํ ์์ ์ค์ตํ๋ ํ ํฝ์ผ๋ก ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
๋ธ๋ก์ปค 3๊ฐ, ํํฐ์ 3๊ฐ ๊ทธ๋ฆฌ๊ณ Replication๋ 3๊ฐ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
ํ์ฌ๊น์ง ISR์ด ๊ฐ๊ฐ์ ํํฐ์ 3๊ฐ ๋ชจ๋ ์ค์ ๋์ด ์๋๋ฐ broker 3์ shutdown ํ ํ ๋ค์ ํ ํฝ์ ์กฐํํ๋ฉด broker 3์ ์์๋ 3๋ฒ ํํฐ์ ์ด ISR์์ ์ ์ธ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.

๊ทธ๋ฆฌ๊ณ ๋ค์ broker 3๋ฅผ ์คํํ๋ฉด ๋ค์ broker 3์ ํํฐ์ ์ด ISR์ ์ถ๊ฐ๋ ๊ฒ์ ํ์ธํ ์ ์๊ณ , broker 1๊ณผ broker 2์ broker 3์ ํํฐ์ ์ด ์ถ๊ฐ๋์๋ค๋ ๋ก๊ทธ๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ๊น์ง ํ์ธํ ์ ์์ต๋๋ค.
broker 1

broker 2

min.insync.replicas
ํด๋น ์ต์ ์ ๋ธ๋ก์ปค์ ์ค์ ๊ฐ์ผ๋ก ํ๋ก๋์๊ฐ acks=all๋ก ์ฑ๊ณต์ ์ผ๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์ ์๋ ์ต์ํ์ ISR ๋ธ๋ก์ปค ๊ฐ์๋ฅผ ์๋ฏธํฉ๋๋ค.
ํด๋น ๋ด์ฉ์ ์ด์ ํ๋ก๋์ ํฌ์คํ ์๋ ์ ๋ฆฌํด๋์์ผ๋ ์ฐธ๊ณ ํ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.


์ ์ด๋ฏธ์ง์ฒ๋ผ replication-factor๊ฐ 3์ด๊ธฐ ๋๋ฌธ์ ๋ฆฌ๋, ํ๋ก์ ํํฐ์ ์ ์ด 3๊ฐ ์์ฑ๋์์ต๋๋ค. ์ฌ๊ธฐ์ acks=all๊ณผ min.insync.replicas=2๋ก ์ค์ ํ๊ฒ ๋๋ฉด ๋ฉ์์ง๋ฅผ ๋ณต์ ํด์ผํ ์ต์ ๋ธ๋ก์ปค(ํํฐ์ )์ ๊ฐ์๊ฐ 2๊ฐ์ฌ์ผ ๋ฉ์์ง ์ ์ก์ ์ฑ๊ณตํ๋ค๊ณ ํ๋จํฉ๋๋ค.
๋ฐ๋ผ์ broker 3์ด ์ฅ์ ๊ฐ ๋ฐ์ํด๋ broker 1(๋ฆฌ๋), broker 2(ํ๋ก์)์ ๊ฐ๊ฐ ๋ฉ์์ง๊ฐ ์ ์ฅ๋์๊ธฐ ๋๋ฌธ์ ์ด ๊ฒฝ์ฐ์๋ ์ ์์ ์ผ๋ก ๋ฉ์์ง๊ฐ ์ ์ฅ๋์๋ค๊ณ ํ๋จํฉ๋๋ค.

ํ์ง๋ง ์์ ๊ฐ์ด ํ๋ก์ ํํฐ์ 2๊ฐ๊ฐ ๋ชจ๋ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ๋ฆฌ๋ ํํฐ์ ํ๋์ด๊ธฐ ๋๋ฌธ์ ์นดํ์นด๋ ์๋ฌ๋ก ํ๋จํ๊ณ ๋ค์ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ ์ ์๊ฒ ๋ฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ
'Kafka' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ปจํธ๋กค๋ฌ (0) | 2023.05.01 |
---|---|
๋ฆฌ๋์ํฌํฌ & ๋ณต๊ตฌ (0) | 2023.05.01 |
Replication (0) | 2023.05.01 |
๋ฉํฐ ๋ ธ๋ ์นดํ์นด - 2 (0) | 2023.05.01 |
๋ฉํฐ ๋ ธ๋ ์นดํ์นด - 1 (0) | 2023.05.01 |
๋๊ธ