0

안녕하세요 저는 주인님 인 mohamad입니다. 사육사에 대해 질문하고 싶습니다.apache zookeeper에 대해 묻기

나는 사육자의 쓰기 작업이 먼저 수행되어야한다고 읽었고 cliend에 연결된 서버가 리더에게 연락을 취한 다음 리더가 투표를하고 서버의 절반 이상을 얻으면 서버에 응답합니다. 이 operation으로 계속하기 위하여 cliend inorder와 연결된다.

하지만 내 질문은 무엇입니까 투표 procccess 무엇입니까? 나는 그들이 무엇을 위해 투표하는 것을 의미합니까? 두 번째 질문은 그들이 어떻게 투표합니까, 그들이 메시지를 보내거나 어떻게 리더에게 알리는가하는 것입니다. 그리고 세 번째 질문은 그들이 투표를해야하는 이유는, 나는 그들이 투표를해야하는 이유는 무엇입니까?

누구나 최대한 빨리 답장 해주세요.

미리 감사드립니다.

답변

1

이것은 내가 할 수있는 가장 빠른 것입니다. 이 시스템의 작동 방식을 더 잘 이해하려면 Nancy Lynch가 책 분산 알고리즘 (Distributed Algorithms)을 가져와야합니다.

배경 - Zookeeper는 약간 다른 자체 구현이 있지만 알고리즘 패러다임은 Paxos라고합니다. 사육사는 2 단계의 커밋으로 데이터를 커밋합니다. 모든 통신은 FIFO 채널을 통한 Atomic Broadcast Protocol을 사용하여 순서를 보존합니다.

투표 프로세스 란 무엇입니까 - 투표 프로세스는 2 단계 확약이 아닌 리더를 찾는 것입니다. 투표 용지가 없습니다. 가장 높은 zxid를 가진 노드가 리더입니다.

투표는 지도자 선출을위한 것입니다. 2 단계 확약은 쓰기 조작입니다. 더 많은 정보를 위해 사육사 문서와 더 중요한 것은 왜 이런 것들이 그들이하는 것처럼 행동 하는지를 이해하는 dist algos 책을 확인하십시오.

--Sai

+0

실제로 2 단계 커밋에도 투표가 있습니다. 추종자들은 커밋에 대해 "투표"합니다. 커밋에 대해 "투표"한 추종자가 충분한 경우 마스터는 해당 서신을 커밋 할 수 있습니다. 이 경우 모든 쿼럼 (서버의 절반 이상)에서 최소한 하나의 서버가 커밋을 보았다는 보장이 있습니다. –

+0

아, 그건 사실입니다 .. 내 대답을 고쳐 주셔서 고마워 :) –

1

사육사는 클라이언트가 서비스의 이용을 노드 (즉, 기계)이다 간단한 클라이언트 - 서버 모델을 따르며, 서버는 서비스를 제공하는 노드입니다. 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 연결을 통해 발생 : 서비스가 안정적이고 결함 허용 할 경우, 데이터를 서버 쿼럼에 복제해야합니다.

관련 문제