- Kafka의 Replication과 Fault Tolerance는 데이터의 안정성과 가용성을 보장하는 중요한 요소이다. 이러한 개념들은 Kafka 클러스터가 장애 상황에서도 데이터 손실 없이 정상적으로 작동할 수 있게 해준다.
1. ISR (In-Sync Replicas)
- 정의:
- ISR은 Leader Partition에 복제될 수 있는 Follower Partition의 집합이다.
- 즉, ISR은 현재 Leader와 동기화되고 있는 Follower Partition들을 의미한다.
- 동작 방식:
- Leader Partition이 새로운 메시지를 받으면, ISR 내의 Follower Partition들도 이 메시지를 복제한다.
- 모든 Follower가 메시지를 복제하면, 해당 메시지는 'Commit'된 것으로 간주된다.
- Commit된 메시지만이 Consumer에 의해 소비될 수 있다.
https://kroki.io/graphviz/svg/eNqFkEFLw0AQhe_-iiH3gsm1pAcLSlGhNPVUimx2x3Tpuht2s6hI_7vZziZN26jHee8bZt4TsrKs3sEDfN8AWKb3Qtp8fTdtJ20EwsbtWI15aT63QXO-pAWuvGvQvt4eFwEUK1HlySN72zOYk5lMjxY3yti8VB5pfkIm0MImrsRxyWwjG2l0siXs3ihlPtCmPdkpJxbSSzr7i86IPowFSc-DLIrV2fuVRdQktFZ_ZKEnxZfmsMJaSc7c6cDSGuH5IGcnEDI32vn3gd0JZPfbk9llXwVqAc_oHKuQ4Ai06HVn8bHmVzT7Hx0GfqlFSwSJqOCNHg61jCLZCNK3cR03WoE7_ACLHdko
- 그림 설명
- Producer: 메시지를 생성하여 Leader Partition에 전달한다. (단계 1)
- Leader Partition: 메시지를 받아 저장하고, ISR에 있는 Follower Partition들에게 복제한다. (단계 2 → 3, 단계 4)
- Follower Partitions: Leader Partition으로부터 메시지를 복제받는다. (단계 2 → 3)
- ISR (In-Sync Replicas): 현재 Leader와 동기화되고 있는 Follower Partition들의 집합이다. (단계 4)
- Consumer: Leader Partition에서 메시지를 소비한다. (단계 5)
2. Replication Factor
- 정의:
- Replication Factor는 특정 Topic의 데이터가 몇 개의 복제본을 가질 것인지 설정하는 값이다.
- 동작 방식:
- Replication Factor가 3이라면, 하나의 Leader Partition과 두 개의 Follower Partition이 생성된다.
- 이렇게 하면 하나 또는 두 개의 노드가 실패해도 데이터 손실이 없다.
- 높은 Replication Factor 설정은 데이터의 안정성을 높이지만, 더 많은 저장 공간과 네트워크 트래픽을 사용한다.
https://kroki.io/graphviz/svg/eNp9j02rwjAQRff-iqH7B9qt9C0UdKGC-N5ORKbNaIMxUyYNCuJ_9yONFkWXc--5cEbprWBVwhhOHQBBu1Nasv9B_3pZVgRLV2JFWc7H1S1zPg-DwnhXk6y79yGAwZxMlkxws0MYhjLp36uCDUuWG0_hngsrX5DAshnFIFkFYEqoWnVzzlFqXWu2ERuxMXwg6T3ImDxZ6L3S6Tc6jfSQrfP7lkQMAnDutN74-X01_iOrYEbO4ZbCoAGu6Lv1giqjC6w_oukn9GH5rtBUbYvzBd1tnzk=
- 동작 과정
- Producer: 메시지를 생성하고 Leader Partition에 전송한다. (단계 1)
- Leader Partition: 메시지를 받아 Follower Partition에 복제한다. (단계 2 → 3)
- Follower Partition 1 & 2: Leader Partition으로부터 메시지를 복제한다. Replication Factor가 3이므로, 하나의 Leader와 두 개의 Follower가 있다. (단계 2 → 3)
- Consumer: Leader Partition에서 메시지를 소비한다. (단계 4)
3. Leader Election
- 정의:
- Leader Election은 현재 Leader Partition이 실패할 경우, ISR 내의 Follower Partition 중 하나가 새로운 Leader로 선출되는 과정이다.
- 동작 방식:
- Leader Partition이 실패하면, Kafka는 ISR 목록에서 새로운 Leader를 선출한다.
- 새 Leader가 선출되면, 모든 Follower Partition들은 이 새 Leader와 동기화를 시작한다.