나는 Raft, Paxos 또는 Zab과 같은 현재 마스터 선거 알고리즘이 클러스터에서 마스터를 선택하는 방법을 읽었으며 단순한 불량 알고리즘 대신 정교한 알고리즘을 사용하는 이유를 이해할 수 없었습니다.불량 알고리즘보다 향상된 마스터 선거 알고리즘의 이점은 무엇입니까?
클러스터 라이브러리를 개발 중이며 하트 비트 메시지에 UDP 멀티 캐스트를 사용하고 있습니다. 각 노드는 멀티 캐스트 주소에 조인하고 해당 주소에 주기적으로 데이터 그램 패킷을 보냅니다. 노드가 패킷을이 멀티 캐스트 주소로 보내는 새 노드를 찾으면 클러스터에 노드를 간단히 추가하고 클러스터의 노드가 노드에서 패키지를 가져 오지 않으면 클러스터에서 노드를 제거합니다. 마스터 노드를 선택해야 할 때 클러스터의 노드를 반복하고 가장 오래된 노드를 선택하기 만하면됩니다.
이 접근법이 효과적이지 않고 Paxos와 같은보다 정교한 알고리즘을 사용하여 마스터를 선출하거나 하트 비트 메시지를 통해 오류를 감지해야한다는 내용의 기사를 읽었습니다. 나는 Paxos가 분할 뇌 상황이나 다른 네트워크 장애에 대해 왜 더 나은지 이해할 수 없었다. 왜냐하면 나는 노드의 쿼럼이 뗏목을 사용하지 않고 클러스터에서 떠날 때 쉽게 알 수 있기 때문이다. 내가 볼 수있는 유일한 이점은 각 서버가 처리해야하는 패킷 수입니다. 유일한 마스터는 뗏목에서 하트 비트 메시지를 전송하지만이 경우 각 노드는 하트 비트 메시지를 서로 보내야합니다. 그러나 나는 마스터 선거 알고리즘을 변경하지 않고 비슷한 하트 비트 알고리즘을 구현할 수 있기 때문에 이것이 문제라고 생각하지 않습니다.
누군가가 자세히 설명해 주실 수 있습니까?
네트워크에 일시적으로 분할되어 나중에 봉쇄 된 경우 노드는 누가 가장 오래된 노드인지에 대해 동의하지 않을 수 있습니다. –