카프카란 무엇인가? - 2
1. Replication
Replication은 데이터 복제를 의미합니다.
데이터 복제를 통해, 하나의 브로커가 고장나더라도 다른 브로커가 그 역할을 대체할 수 있도록 합니다.
카프카는 Replication을 통해 고가용성(High Availability)을 보장합니다.
보통 클러스터 하나당 브로커 세 대 이상을 사용합니다.
위 그림과 같이 Replication이 1일 때의 모습입니다.
만약 Brocker #1이 고장나게 되면 데이터 처리를 하지 못하게 됩니다.
즉, 고가용성이 보장되지 못합니다.
카프카는 데이터 복제를 통해 문제를 해결합니다.
Replication은 데이터 복제를 의미합니다.
카프카에서 Replication을 늘리게 되면, 데이터가 다른 브로커에 복제됩니다.
데이터가 복제가 되면 Brocker #1이 고장나더라도, 다른 브로커가 해당 역할을 대체할 수 있습니다.
💡 Replication은 Brocker의 개수를 넘어서지 못합니다.
그림의 Partition에 Leader와 Follower이 적혀져 있습니다.
Leader Partition이 주로 업무를 처리하고, 이 Leader Partition에 이상이 생겼을 때
Follower Partition이 대체하는 이런 구조를 ISR(In Sync Replica)라고 합니다.
2. Ack
위에서 Leader Partition과 Follower Partition이 있다고 했습니다.
(편의상 앞으로 Partition 단어를 빼겠습니다.)
프로듀서가 카프카에 데이터를 전송하면,
Leader에 우선적으로 저장을 하고 Follower에 데이터를 복제합니다.
Leader와 Follower에 데이터가 정상적으로 저장이 되었는지 확인은 어떻게 할까요?
이는 프로듀서에서의 Ack와 관련이 있습니다.
프로듀서의 Ack는 세 가지 옵션이 있습니다.
- 0 : 데이터 전송만 함
- 1 : 데이터 전송을 하고, Leader에 정상적으로 데이터가 저장되었는지 응답 받음
- all : 데이터 전송을 하고, Leader와 Follower에 정상적으로 데이터가 저장되었는지 응답 받음
0은 프로듀서가 카프카에 데이터 전송만 하고 아무런 응답값을 받지 않습니다.
1은 프로듀서가 카프카에 데이터 전송을 하고, 응답을 받습니다.
Leader에 데이터가 정상적으로 저장되면, 카프카는 프로듀서에 응답합니다.
Follower에 정상적으로 데이터가 복제되었는지 알지 못합니다.
all역시 프로듀서가 카프카에 데이터 전송을 하고, 응답을 받습니다.
단, 1과 달리 Follower에 데이터가 정상적으로 복제되고 나서야 응답 받을 수 있습니다.
때문에, 속도가 가장 느립니다.
3. Lag
Lag은 프로듀서의 쓰기 속도와 컨슈머의 읽기 속도의 차이를 뜻합니다.
파티셩이 여러개일 경우 Lag 역시 여러개 존재할 수 있습니다.
이때, 가장 큰 Lag을 records-lag-max라고 부릅니다.
'카프카' 카테고리의 다른 글
카프카 컨슈머 spring boot로 구현하기 (0) | 2023.01.12 |
---|---|
카프카 프로듀서 spring boot로 구현하기 (0) | 2023.01.12 |
카프카 프로듀서와 컨슈머 docker shell 에서 테스트하기 (0) | 2023.01.05 |
카프카 클러스터 docker compose로 구축하기 (0) | 2023.01.05 |
카프카란 무엇인가? - 1 (2) | 2022.12.21 |