토픽 복제란?
카프카의 토픽은 DEV환경 즉, 개발단계에서는 복제 계수를 1개로 설정해도 상관은 없다. 하지만 Pre즉 운영상태에서는 복제 계수를 1보다 크게 잡아야한다. 보통 2~3개정도 설정을 한다.
-
브로커가 다운되었을때 유지보수나 기술적 문제로 카프카 서버가 중단되었을 때 또 다른 카프카 브로커에 데이터 사본이 있어서 그걸 주고 받을 수 있게 된다.
토픽 복제의 의미
- 브로커 102를 잃어도 여전히 파티션 A,B는 존재하기 때문에 데이터를 안정적으로 제공할 수 있다.
- 클러스터 안에서 파티션 0과 파티션1이 계속 제공된다.
- 복제 계수가 2인 경우에 브로커를 1개를 잃어도 괜찮게 된다.
파티션의 리더
토픽을 복제하면 파티션의 리더가 생기게 된다. 그리고 오직 1개의 브로커만 어떤 파티션의 리더가 될 수 있다.
-
리더의 규칙에 따르면 프로듀서는 파티션의 리더인 브로커에게만 데이터를 전송할 수 있다.
-
레플리카는 리더가 될 수 없다.
-
데이터가 충분히 빠르게 복제되면 각각의 레플리카를 ISR이라고 부른다.
- ISR은 In-Sync Replica라는 의미이다. 그 반대는 Out-of-Sync Replica다.
In-Sync Replica Out-of-Sync Replica 의미 현재 리플리케이션이 되고 있는 리플리케이션 그룹(replication group)을 의미 Follwer에게 데이터가 복제가 안되는 상황이다. 규칙 ISR에 속해 있는 구성원만이 리더의 자격을 가질수 있다. Topic replicas에 속해 있지만 ISR에서 빠지게되서 리더자격을 잃는다. 사용 Leader 장애시 Leader를 선출하는데 사용된다. 다양한 복제 이슈에 대한 에러 -
데이터 복제가 잘 이루어지면 데이터의 복제 동기화가 이루어진다.
-
기본값인 리더의 작동 방식에 따르면 프로듀서는 어떤 파티션의 리더 브로커에게만 기록하게 된다. 그래서 앞의 메커니즘에서 본 것처럼 만일 프로듀서가 파티션 0으로 데이터를 전송하길 원한다는 걸 알고 리더와 ISR이 있다면, 프로듀서는 그 파티션의 리더인 브로커에게만 데이터를 전송해야한다는걸 알고 있다.
카프카 컨슈머 레플리카 페칭이라는 기능
Kafka 2.4에 도입된 기능으로 컨슈머가 가장 가까운 레플리카에서 읽게 해주는 기능이다.
- 브로커 101이 프로듀서로부터 데이터를 받고 브로커 102의 ISR 파티션0에 복제하면서 컨슈머는 레플리카 자체에서 읽을 수 있게 된다.
- 컨슈머가 브로커 102에 아주 가까이 있을수 있어서 레이턴시를 개선하는데 도움이 될 수 있기 때문이다.