N° 01 — 목록
'leader-election' (2)
-
Software Architecture/Distributed SystemsDistributed Systems - 04. 합의 알고리즘
합의 알고리즘 — 여러 노드가 하나의 값을 정하는 법2019년 한 Elasticsearch 클러스터에서 split-brain(뇌 분리)이 발생했다. 두 데이터센터 사이 네트워크가 30초간 끊겼다. 양쪽 데이터센터의 노드가 각자 자기를 "마스터"로 선언했다. 두 마스터는 같은 데이터에 서로 다른 쓰기를 적용했다. 네트워크가 복구됐을 때 두 마스터의 상태가 충돌했고, 시스템은 어느 쪽이 진짠지 결정하지 못해 일부 데이터를 잃었다.이 사태의 원인은 — "누가 진짜 마스터인가"를 노드들이 동의하지 못한 것이다. 합의(consensus)가 없었다. 분산 시스템에선 이런 "동의"가 필요한 상황이 자주 온다 — 누가 리더인가, 다음 연산은 무엇인가, 클러스터에 새 노드를 추가할까. 이 글은 여러 노드가 하나의 값에 ..
-
Data & Platform/Event StreamingKafka - 06. replication
broker가 죽어도 데이터가 안 사라지는 이유 — 복제와 ISRbroker 한 대에 모든 데이터를 두면 그 broker가 죽는 순간 전부 날아간다. 그래서 Kafka는 partition을 복제(replication)한다. 하지만 "복제했다"로 끝이 아니다 — 얼마나 복제해야 안전한지, 복제가 안 끝난 메시지는 consumer에게 보여야 하는지, 리더가 죽으면 누가 이어받는지를 정의해야 한다. Kafka의 답은 ISR(In-Sync Replicas)이라는 동적 쿼럼과 HW(high watermark)라는 commit 경계다.이 두 장치가 만드는 핵심 보장은 한 줄이다: f+1개 복제본이 f개 장애까지, 이미 commit된 메시지는 잃지 않는다. replication.factor=1로 두다가 broker ..