January 27, 2024
강의 메모 # 브로커의 복제(Replication) # 브로커의 역할 - 복제(Replication) # 데이터 복제 : 클러스터로 묶인 브로커 중 일부에 장애가 발생하더라도 데이터를 유실하지 않고 안전하게 사용하기 위함이다. 토픽을 생성할때 파티션의 복제 개수(replication factor) 같이 설정 - default는 브로커에 설정된 옵션 값으로 설정
복제 개수의 최솟값은 1(복제 없음) 최댓값은 브로커 개수만큼 설정하여 사용 가능 복제된 파티션의 구성 : 리더(leader), 팔로워(follower)
리더 : 프로듀서, 컨슈머와 직접 통신하는 파티션 팔로워 : 리더의 데이터가 추가되면 복제해가는 역할 복제 과정 : 팔로워 파티션들은 리더 파티션의 오프셋을 확인하여 현재 자신이 가지고있는 오프셋과 차이가 나는 경우 리더 파티션으로부터 데이터를 가져와서 자신의 파티션에 저장한다.
...
January 27, 2024
강의 메모 # ISR (In-Sync-Replicas) # ISR (In-Sync-Replicas) # 리더 파티션과 팔로워 파티션이 모두 싱크가 된 상태를 뜻한다. 리더 파티션의 오프셋이 0~3까지 있을때 팔로워 파티션도 0~3이 있다. (동기화 완료 - 리더 파티션의 모든 데이터가 팔로워 파티션에 복제가 완료되었다 라는 뜻)
unclean.leader.election.enable # 모두 복제되지 않은 상황이고, 이렇게 싱크가 되지 않은 팔로워 파티션이 리더 파티션으로 선출되면 데이터가 유실될 수 있다. 유실이 발생하더라도 서비스를 중단하지 않고 지속적으로 토픽을 사용하고 싶으면 ISR이 아닌 팔로워 파티션을 리더로 선출하도록 설정할 수 있다.
...
January 27, 2024
강의 메모 - 스레드 간 협력 - wait() & notify() # 개요 # wait(), notify(), notifyAll() 은 모니터 객체의 조건변수와 함께 사용해서 동기화를 구현할 수 있는 동기화 메커니즘이라 할 수 있다. wait(), notify(), notifyAll() 은 뮤텍스(상호배제) 동기화 기법으로 충족되지 않는 동기화 문제를 해결할 수 있는 협력에 의한 동기화 장치이다 wait(), notify(), notifyAll() 은 반드시 synchronized 블록 안에서만 사용해야 하며 이는 스레드가 모니터 락을 확보한 상태에서 이 API 들이 작동한다는 것을 의미한다 모니터 락 안에서 사용해야한다.
...