분산 컴퓨팅에서 합의 문제는 집중적 인 연구를 이끌어 낸 중심 주제 중 하나 인 것 같습니다. 특히 "하나의 결함있는 프로세스에 대한 분산 합의의 불가능 성"이라는 논문은 2001 PODC 영향력 논문상을 받았습니다 .
컨센서스 문제가 왜 그렇게 중요한가? 이론과 실제에서 합의를 통해 무엇을 달성 할 수 있습니까?
어떤 언급이나 설명도 도움이 될 것입니다.
분산 컴퓨팅에서 합의 문제는 집중적 인 연구를 이끌어 낸 중심 주제 중 하나 인 것 같습니다. 특히 "하나의 결함있는 프로세스에 대한 분산 합의의 불가능 성"이라는 논문은 2001 PODC 영향력 논문상을 받았습니다 .
컨센서스 문제가 왜 그렇게 중요한가? 이론과 실제에서 합의를 통해 무엇을 달성 할 수 있습니까?
어떤 언급이나 설명도 도움이 될 것입니다.
답변:
언급 한 논문은 다음 두 가지 이유로 중요합니다.
응용
합의 문제의 중요한 적용 중 하나는 글로벌 활동을 시작하기 위해 내결함성 환경에서 코디네이터 또는 리더의 선출입니다. 합의 알고리즘을 사용하면 "슈퍼 노드"를 미리 수정하지 않고 (단일 실패 지점이 발생할 수 있음)이를 즉시 수행 할 수 있습니다.
다른 애플리케이션이 분산 네트워크에서 일관성을 유지하고 있습니다. 동일한 환경을 모니터링하는 다른 센서 노드가 있다고 가정하십시오. 이러한 센서 노드 중 일부가 충돌하거나 하드웨어 결함으로 인해 손상된 데이터를 보내기 시작하는 경우 합의 프로토콜은 그러한 결함에 대한 견고성을 보장합니다.
(*) 분산 알고리즘 실행은 일련의 구성입니다. 구성은 프로세스의 로컬 상태로 구성된 벡터입니다. 각 프로세스는 결정적 상태 머신을 실행합니다. 올바른 합의 알고리즘은 결국 모든 프로세스가 동일한 입력 값을 결정하는 구성에 도달해야합니다. 구성 이다 1 - 가의 , 만약 상대가하는 일에 상관없이, 모든 가능한 확장 C의 의 결정 값으로 리드 한 . 유사하게, 우리는 정의 할 수 있습니다 0 - 가수를 . 구성 C는 것입니다 이가 모두 결정에서 접근 할 경우 C(둘 중 하나에 도달하는 것은 적에게 달려있다). 분명히, 2가 구성 에서 어떤 프로세스도 결정할 수 없었습니다. 그렇지 않으면 합의와 모순됩니다! 따라서 이러한 2가 구성의 무한 시퀀스를 구성 할 수 있다면이 설정에 합의 알고리즘이없는 것으로 나타났습니다.
결함 허용 결정 론적 알고리즘이 없음을 보여줍니다. 상당히 강력한 이론적 결과로 인해 디자이너는 내결함성을 다르게 처리해야하며, 그 중 일부는 동기화 및 무작위 화입니다.
의견 : 제 생각에 동기화는 실제 응용에서는 거의 찾아 볼 수없는 시스템에 대한 추가 가정입니다.
참조를 위해 Wikipedia 링크를 확인 하십시오 . 실용적인 응용 프로그램 은이 블로그 를 확인하십시오.
합의 문제가 중요한 한 가지 이유는 매우 간단 하고 분산 컴퓨팅 시스템에 대한 보편적 인 문제 이기 때문 입니다.
비동기 분산 시스템에서 합의를 해결할 수있는 경우이를 사용하여 공유 객체에 대한 작업을 선형화하고 공유 객체에 대한 선형성을 얻을 수 있습니다.
간단하게하기 위해, 가치에 대해 합의하는 것보다 얼마나 많은 문제가 생각 나는가?
(순수한) 비동기 분산 시스템에서의 합의에 대한 불가능한 결과는 추가적인 "물건"없이는 (순수한) 비동기 분산 시스템에서 해결하고자하는 문제를 해결할 수 없음을 알려줍니다. 이로 인해 무작위 알고리즘, 결함 탐지기, 부분 동기화 모델 등과 같은 합의를 해결할 수있는 비동기 모델이 생성됩니다.
이는 실제로 Lamport 's Paxos, Google의 Chubby, Apache ZooKeeper 및 Raft와 같은 합의를 해결하는 알고리즘이 서버간에 상태를 자주 복제하려는 분산 시스템의 핵심에있는 이유입니다.
많은 CPU, 컴퓨터의 많은 프로세스, LAN으로 연결된 많은 컴퓨터, 인터넷으로 연결된 많은 LAN 등 스택 전체에 계산의 특성이 점점 더 분산되고 있다고 덧붙였습니다.
이로 인해 공통 (분산 / 전역) 상태가 가장 중요합니다. 각 알고리즘은 특정 상태를 가정하고 계산을 여러 곳에서 수행해야하는 경우 상태도 분배해야합니다.
이 도메인의 영향력있는 논문 ( Paxos 및보다 최근에는 Raft )이 인용 한 논문 이후에 출판되었습니다. 두 가지 모두 실패가있을 경우 합의 문제를 해결합니다.
몇 가지 접근 방식을 사용하여 분산 시스템에서 비잔틴 오류를 피할 수 있습니다.
비잔틴 결함 허용에 대한 Wikipedia 항목을 살펴보십시오 .