Microservices Architecture / / 2024. 11. 7. 10:19

Kafka의 Broker, Replication, ISR (In-Sync Replica)

1. Kafka Broker

 

**브로커(Broker)**는 Kafka 클러스터의 핵심 구성 요소로, 메시지를 저장하고 관리하며, 클라이언트(Producer, Consumer)와 통신하는 역할을 합니다.

 

주요 특징

 

메시지 저장 및 관리: 브로커는 메시지를 특정 토픽과 파티션에 저장합니다. 각 브로커는 독립적인 서버로 동작하며, 하나의 Kafka 클러스터에는 여러 개의 브로커가 존재할 수 있습니다.

부하 분산: 여러 브로커가 함께 데이터 저장을 분담하여 성능을 최적화합니다. 클러스터의 리더 브로커가 메인 역할을 하며, 팔로워 브로커들이 레플리카를 유지합니다.

클러스터 관리: 브로커는 Zookeeper를 통해 클러스터에 대한 메타데이터를 관리하고, 리더 선출 등의 작업을 진행합니다.

 

데이터 흐름

 

1. Producer가 Kafka로 메시지를 보낼 때, 브로커는 메시지를 특정 파티션에 저장합니다.

2. Consumer가 데이터를 읽을 때, 클러스터의 브로커가 메시지를 제공하며, 오프셋을 관리해 중복을 방지합니다.

 

2. Replication (레플리케이션)

 

레플리케이션은 Kafka에서 데이터의 신뢰성을 보장하기 위해 사용하는 기능입니다. 각 파티션은 여러 브로커에 복제본(레플리카)을 저장하여, 데이터 손실 없이 클러스터를 관리합니다.

 

주요 개념

 

레플리카: 한 파티션의 데이터 복사본으로, 특정 파티션은 여러 브로커에 걸쳐 복제될 수 있습니다.

리더와 팔로워: 레플리케이션에는 리더팔로워 역할이 있으며, 리더는 파티션에 대한 읽기/쓰기 요청을 처리하고, 팔로워는 리더의 데이터를 복제합니다.

내결함성: 브로커가 다운되더라도 다른 브로커에 저장된 레플리카를 통해 데이터가 유지되어 고가용성을 확보합니다.

 

레플리케이션 예시

 

예를 들어, replication-factor=3으로 설정하면, 파티션의 복제본이 3개가 됩니다. 한 브로커가 다운되어도 다른 두 브로커가 데이터를 보유하고 있으므로 데이터 유실 없이 시스템이 운영될 수 있습니다.

 

3. ISR (In-Sync Replica)

 

ISR동기화된 복제본 집합으로, 리더 브로커의 데이터를 최신 상태로 유지하고 있는 팔로워 브로커들의 목록입니다.

 

특징 및 동작 방식

 

ISR 집합: 리더와 동기화가 완료된 팔로워들만 포함되며, 이들만이 신뢰할 수 있는 최신 데이터 복제본으로 간주됩니다.

동기화 조건: 팔로워가 리더의 데이터와 일정 시간 내에 동기화하지 못하면 ISR 목록에서 제거됩니다.

가용성 보장: ISR에 있는 레플리카만으로 데이터의 일관성을 보장합니다. 예를 들어, 리더 브로커가 다운되면 ISR 중 한 팔로워가 새로운 리더가 됩니다.

 

ISR의 역할

 

ISR은 레플리카 상태를 관리하여 Kafka 클러스터의 신뢰성을 유지하는 핵심 요소입니다. 클러스터의 안정성을 위해 ISR 내 팔로워들은 주기적으로 리더의 최신 상태를 따라잡아야 합니다.

 

4. Producer의 ack 설정

 

**acknowledgment(ack)**는 Producer가 Kafka 브로커로부터 메시지 전송에 대한 확인을 받는 방식입니다. 이는 메시지 전송의 신뢰성을 높이기 위해 사용되며, acks 옵션을 통해 설정합니다.

 

ack 설정 값

 

1. acks=0: Producer는 메시지를 브로커에 전송한 후 확인 응답을 기다리지 않습니다. 성능은 높지만 데이터 유실 가능성이 큽니다.

2. acks=1: 메시지가 리더 브로커에 성공적으로 전송되면 확인을 받습니다. 대부분의 경우 데이터 손실이 방지되지만, 리더가 다운되면 데이터 유실 가능성이 있습니다.

3. acks=all: 모든 ISR에 메시지가 복제되면 확인을 받습니다. 가장 높은 신뢰성을 제공하며 데이터 유실이 거의 없습니다.

 

ack 설정의 활용

 

acks=0: 빠른 처리 성능이 필요한 경우 사용됩니다.

acks=1: 적당한 성능과 신뢰성을 필요로 하는 일반적인 경우 사용됩니다.

acks=all: 중요한 데이터를 다룰 때 사용되며, 신뢰성을 최우선으로 해야 하는 상황에서 적합합니다.

 

요약

 

Kafka Broker는 메시지를 저장하고 클라이언트와 통신하며, 클러스터에서 메시지 관리의 중심이 됩니다.

Replication은 데이터 손실을 방지하기 위해 데이터를 복제하여 다중 브로커에 저장하는 기능입니다.

ISR은 리더와 동기화된 복제본의 집합으로, 클러스터의 가용성과 신뢰성을 보장합니다.

Producer의 ack 설정은 메시지 전송의 신뢰성을 제어하는 옵션으로, acks=all은 가장 높은 신뢰성을 제공합니다.

'Microservices Architecture' 카테고리의 다른 글

Amazon EC2, SC3  (9) 2024.11.08
Kafka의 Source, Target, Topic, Partition  (1) 2024.11.07
Kafka의 Lag와 Burrow  (0) 2024.11.07
Kafka의 Producer와 Consumer  (0) 2024.11.07
JMS API  (0) 2024.11.06
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유