1

분산 시스템은 스플릿 뇌 문제를 피하기 위해 3 개의 마스터 노드 또는 5 개의 마스터 노드와 같은 홀수 개의 마스터 노드를 사용할 것을 제안합니다.홀수 번호는 분산 시스템에서 분할 머리를 어떻게 해결합니까?

그러나 문제가 어떻게 해결됩니까?

2 개의 노드 (A와 B), 1 명의 중재자가 A와 B 중재자에게 "나는 마스터"라고 말하면 뇌 분열이 발생합니다. 중재자는 어느 쪽이 마스터인지 결정할 수 없습니다.

3 개의 노드 (A, B 및 C)가있는 경우 2 개의 노드가 마스터가 A라고 말하면 중재자는 A가 마스터라고 결정할 수 있습니다.

A가 사망하면 중재자가 B와 C에서 하나의 마스터를 선택해야합니다. B와 C가 사회자에게 "나는 마스터"라고 말하면 어떻게 될까요? 두뇌 분열이 다시 나타납니다.

답변

1

분산 시스템은 일반적으로 홀수의 노드를 제안하지 않는 이유는 스플릿 브레인을 방지하는 것입니다. 대신, 분할 머리를 피하는 쿼럼 넘버이 있습니다. 프로토콜이 과반수의 득표를 한 노드를 리더로 선택하고 프로토콜로 노드가 리더를 하나만 선택할 수있게한다면 논리적으로 하나만 존재할 수 있습니다. 대다수가 하나 일 수 있기 때문입니다. 홀수의 노드는 최대 수준의 내결함성을 제공하기 때문에 종종 사용됩니다. 2의 대다수는 2이지만 3의 대다수는 2입니다. 이는 한 명의 실패를 용인 할 수있는 여지를 제공하면서도 여전히 지도자의 과반수를 얻을 수있는 여지를 제공합니다.

물론 두뇌 분할을 피하는 것은 클러스터의 노드 대부분에서 득표를 수집하고 그에 대한 리더를 선출하는 것과 정확히 일치하지 않습니다. 비동기 분산 시스템에서는 여전히 노드가 두 개있을 수 있습니다. 자신이 리더가 아닐 때도 있다고 믿습니다. 두 개의 다른 클라이언트가 서로 다른 두 노드와 통신 할 수 있도록 두뇌를 분할해야합니다. 입니다. 그들이 있든 없든 지도자가 될 것입니다. 이에 대한 많은 예를 보려면 Kyle Kingsbury의 Jepsen blog을 참조하십시오.

두뇌 분리를 피하는 다수 쿼럼 기반 프로토콜의 예는 Raft paper을 참조하십시오.

+1

유연한 Paxos와 같은 것들도 존재할 수 있습니다. 이는 복제 중에 더 낮은 쿼럼 요구 사항에 대해 리더 선출 중에 더 높은 쿼럼 요구 사항을 교환 할 수있게합니다. – GManNickG