4) kafka replication factor / ISR 개념
[ partition & replication 비교 ]
[partition 1 , replication factor 1인 경우 ] [ partition 1, replication factro 3 인 경우 ]
- replication factor 값을 높이게 되면 가용성이 증가하게 됨. 하지만 디스크 사용량이 배가 되며 broker의 일부 리소스 사용량 또한 증가
- replication factor 값을 무작정 높게 설정하기보다는 해당 topic에 저장되는 data의 중요도에 따라 적절히 값을 조정하여 운영 권장
[ ISR ]
- ISR : In Sync Replication 으로 replication group 역할
- 구성 : leader replica, leader replicat와 동기화가 이루어진 follower replica
- 동기화 : 동기화를 하기 위해서 follower replicat들은 fetch(메시지 읽기) 요청을 leader replicat에게 보내고, leader replicat는 그 응답으로 follower replica들에게 메시지를 전송
- fetch 요청에는 follower replicat들이 다음으로 받기 원하는 메시지의 offset이 포함되며, 항상 수신된 순서대로 처리
- leader replicat가 중단되는 경우에는 ISR에 속해있는 follower replicat 중 하나가 leader replicat로 선출
- follower replicat가 일정시간 이상 fetch 요청을 하지 않거나, 요청은 했지만 시간 안에 leader replicat의 마지막 offset의 메시지를 복제하지 못한다면 동기화 실패로 간주
- ( leader replicat는 해당 follower replicat 를 ISR에서 제거. 해당 시간은 broker 설정 파일의 replicat.lag.time.max.ms 값으로 설정 )