사육사는 클라이언트가 서비스의 이용을 노드 (즉, 기계)이다 간단한 클라이언트 - 서버 모델을 따르며, 서버는 서비스를 제공하는 노드입니다. ZooKeeper 서버 컬렉션은 ZooKeeper 앙상블을 구성합니다. 주어진 시간에 하나의 ZooKeeper 클라이언트가 하나의 ZooKeeper 서버에 연결됩니다. 각 ZooKeeper 서버는 많은 수의 클라이언트 연결을 동시에 처리 할 수 있습니다. 각 클라이언트는 연결되어있는 ZooKeeper 서버에 주기적으로 핑을 보내 그것이 살아 있고 연결되었음을 알려줍니다. 문제의 ZooKeeper 서버는 서버가 살아 있음을 나타내는 ping 응답으로 응답합니다. 클라이언트가 지정된 시간 내에 서버로부터 수신 확인을받지 못하면 클라이언트는 앙상블의 다른 서버에 연결하고 클라이언트 세션은 새로운 ZooKeeper 서버로 투명하게 전송됩니다. Check this은 사육사 아키텍처를 이해합니다
클라이언트가 특정 z 노드의 내용을 읽으려고하면 클라이언트가 연결된 서버에서 읽음이 발생합니다. 따라서 앙상블에서 하나의 서버 만 포함되므로 읽기가 빠르고 확장 가능합니다. 그러나 쓰기가 성공적으로 완료 되려면 ZooKeeper 앙상블의 노드 대부분이 사용 가능해야합니다. ZooKeeper 서비스가 시작되면 앙상블에서 한 노드가 리더로 선출됩니다. 클라이언트가 쓰기 요청을 발행하면 연결된 서버는 요청을 리더에게 전달합니다. 그런 다음이 리더는 앙상블의 모든 노드에 동일한 쓰기 요청을 보냅니다. 엄격한 다수의 노드 (쿼럼이라고도 함)가이 쓰기 요청에 성공적으로 응답하면 쓰기 요청이 성공한 것으로 간주됩니다. 성공적인 리턴 코드는 쓰기 요청을 시작한 클라이언트로 리턴됩니다.앙상블에서 쿼럼을 사용할 수없는 경우 ZooKeeper 서비스가 작동하지 않습니다. Check this은 쓰기 작업에 대한 투표 프로세스를 이해합니다.
서비스가 안정적이고 확장 가능하도록하기 위해 일련의 컴퓨터에서 복제됩니다. ZooKeeper는 복제본의 일관성을 유지하기 위해 유명한 Paxos 알고리즘 버전을 사용합니다.
사육사는 다음과 같은 일관성들이 전송 된 순서대로 적용됩니다 클라이언트에서
순차 일관성 업데이트를 보장 제공합니다.
원자력 업데이트가 성공하거나 실패합니다. 부분적인 결과는 없습니다.
단일 시스템 이미지 클라이언트는 연결되는 서버에 관계없이 동일한 서비스보기를 보게됩니다.
신뢰성 업데이트가 적용되면 클라이언트가 업데이트를 덮어 쓸 때까지 그 시점부터 지속됩니다. 이 보증에는 두 가지 결과가 있습니다.
시기 적절 함 시스템의 클라이언트보기는 특정 시간 범위 (수십 초 단위) 내에서 최신임을 보장합니다. 이 경계 내에서 클라이언트가 시스템 변경 사항을 보게되거나 클라이언트가 서비스 중단을 감지합니다. 여기
는 질문
에 대한 답변이 있습니다 Question1 다음 투표가 쓰기 작업이 커밋 여부를해야하는지 여부입니다.
Question2
는 : 사육사 앙상블에서 클라이언트와 서버 사이의 통신은
ZAB protocol
Question3 사용하여 메시지의 교환을 통해 TCP 연결을 통해 발생 : 서비스가 안정적이고 결함 허용 할 경우, 데이터를 서버 쿼럼에 복제해야합니다.
실제로 2 단계 커밋에도 투표가 있습니다. 추종자들은 커밋에 대해 "투표"합니다. 커밋에 대해 "투표"한 추종자가 충분한 경우 마스터는 해당 서신을 커밋 할 수 있습니다. 이 경우 모든 쿼럼 (서버의 절반 이상)에서 최소한 하나의 서버가 커밋을 보았다는 보장이 있습니다. –
아, 그건 사실입니다 .. 내 대답을 고쳐 주셔서 고마워 :) –