강의 메모 #
브로커의 복제(Replication) #
브로커의 역할 - 복제(Replication) #
데이터 복제 : 클러스터로 묶인 브로커 중 일부에 장애가 발생하더라도 데이터를 유실하지 않고 안전하게 사용하기 위함이다. 토픽을 생성할때 파티션의 복제 개수(replication factor) 같이 설정 - default는 브로커에 설정된 옵션 값으로 설정
- 복제 개수의 최솟값은 1(복제 없음)
- 최댓값은 브로커 개수만큼 설정하여 사용 가능
복제된 파티션의 구성 : 리더(leader), 팔로워(follower)
- 리더 : 프로듀서, 컨슈머와 직접 통신하는 파티션
- 팔로워 : 리더의 데이터가 추가되면 복제해가는 역할
- 복제 과정 : 팔로워 파티션들은 리더 파티션의 오프셋을 확인하여 현재 자신이 가지고있는 오프셋과 차이가 나는 경우 리더 파티션으로부터 데이터를 가져와서 자신의 파티션에 저장한다.
파티션 복제로 인해 나머지 브로커에도 파티션의 데이터가 복제됨 -> 복제 개수만큼의 저장 용량이 증가 복제를 통해 데이터를 안전하게 사용할 수 있다는 강력한 장점 때문에 카프카를 운영할 때 2 이상의 복제 개수를 정하는 것이 중요하다.
브로커의 장애가 발생한 경우 #
브로커가 다운되면 해당 브로커에 있는 리더 파티션 사용이 불가능하다. 팔로워 파티션 중 하나가 리더 파티션의 지위를 넘겨받는다. 프로듀서는 리더 파티션이 있는 브로커와 네트워크 통신을 한다. 어느 브로커 중 하나에는 리더 파티션이 존재해야한다.
유실되어도 상관 없는 파티션의 복제 개수를 1로 설정할 수도 있다. (metric 등과 같은 정보) 토픽을 생성할때 복제 개수를 설정하거나, 설정하지 않으면 각 브로커의 개수에 따라 달라진다. 3으로 설정하면 브로커 2대가 장애가 발생해도 나머지 브로커에는 데이터가 있다는것을 보장할 수 있다.