0

, 그것은 사육사는 "단일 시스템 이미지"보증을 줄 것이다 상태 :ZooKeeper는 "단일 시스템 이미지"를 어떻게 보장합니까? 사육사 프로그래머 가이드의 <a href="http://zookeeper.apache.org/doc/r3.4.5/zookeeperProgrammers.html#ch_zkGuarantees" rel="nofollow noreferrer">Consistency Guarantees</a> 섹션에서

클라이언트는이 연결 서버에 관계없이 서비스의 동일한 뷰를 볼 수 있습니다.

ZAB 프로토콜에 따르면, 팔로어 중 절반 이상이 제안을 인정하는 경우에만 리더가 트랜잭션을 커밋 할 수 있습니다. 따라서 모든 추종자가 같은 지위에있는 것은 아닙니다.

추종자가 동일한 상태가 아닌 경우 ZooKeeper가 "단일 시스템 상태"를 어떻게 보장 할 수 있습니까?


참고 :

답변

2

리더는 트랜잭션을 커밋하도록 확인하는 추종자의 쿼럼에서의 응답을 기다립니다. 그렇다고 추종자 중 일부가 거래를 인정하거나 "반대"할 필요가 없다는 의미는 아닙니다.

마지막으로 나머지 팔로어가 리더의 커밋 메시지를 처리하거나 동기화의 일부로 마스터와 동일한 상태 (일부 지연됨)를 갖습니다. (최종 일관성과 혼동하지 말 것)

방법 지연 추종자의 상태가 될 수있는 구성 항목에 따라 달라 & tickTime (https://zookeeper.apache.org/doc/current/zookeeperAdmin.html)

추종자는 기껏해야 그 전에 syncLimit * tickTime 시간 단위로 뒤에 할 수 syncLimit 떨어졌다.

1

모든 읽기 및 성공한 것으로 간주되기 전에 노드의 과반수로 이동 기록, 그래서 다음 읽기위한 방법이 없습니다 이전 쓰기에 대해 알지 못하게 쓰기. 하나 이상의 노드가 이에 대해 알고 있습니다. (그렇지 않으면 n/2 + 1 + n/2 + 1> n, 이는 거짓입니다.) 많은 사람들이 (하나만 제외하고는) 적어도 하나가 그것을 알고 있기 때문에 세상에 대한 오래된 시각을 가지고 있다면 상관 없습니다 모든.

노드가 충돌하거나 네트워크가 분할되어 서로 통신 할 수있는 노드 그룹이 다수가 아닌 경우 Zab은 요청 처리를 중지합니다. 사라진 노드로 인해 승인 된 업데이트가 온라인으로 다시 제공되지 않으면 클러스터는 일부 데이터를 잃어 버릴 수 있습니다 (단, 계속 이동하고 죽은 노드는 남겨 두어야합니다).

하나 이상의 상태가 남아있을 때까지 한 번에 두 개씩 처리하여 두 개 이상의 요청을 처리합니다.