분산 컴퓨팅에서 합의 문제가 중요한 이유는 무엇입니까?


19

분산 컴퓨팅에서 합의 문제는 집중적 인 연구를 이끌어 낸 중심 주제 중 하나 인 것 같습니다. 특히 "하나의 결함있는 프로세스에 대한 분산 합의의 불가능 성"이라는 논문은 2001 PODC 영향력 논문상을 받았습니다 .

컨센서스 문제가 왜 그렇게 중요한가? 이론과 실제에서 합의를 통해 무엇을 달성 할 수 있습니까?

어떤 언급이나 설명도 도움이 될 것입니다.

답변:


18

언급 한 논문은 다음 두 가지 이유로 중요합니다.

  1. 단일 충돌 오류까지 허용하는 비동기 결정 론적 합의 알고리즘 이 없음을 보여줍니다 . 참고로한다는 동기 설정 결정적 알고리즘 거기에서 종결하는 발사 될 때 프로세스 충돌.f에프+1에프
  2. 그것은 소개 bivalence일가 나중에 하한과 불가능의 증거 많은에 사용되는 구성 (*),의를.

응용

합의 문제의 중요한 적용 중 하나는 글로벌 활동을 시작하기 위해 내결함성 환경에서 코디네이터 또는 리더의 선출입니다. 합의 알고리즘을 사용하면 "슈퍼 노드"를 미리 수정하지 않고 (단일 실패 지점이 발생할 수 있음)이를 즉시 수행 할 수 있습니다.

다른 애플리케이션이 분산 네트워크에서 일관성을 유지하고 있습니다. 동일한 환경을 모니터링하는 다른 센서 노드가 있다고 가정하십시오. 이러한 센서 노드 중 일부가 충돌하거나 하드웨어 결함으로 인해 손상된 데이터를 보내기 시작하는 경우 합의 프로토콜은 그러한 결함에 대한 견고성을 보장합니다.


(*) 분산 알고리즘 실행은 일련의 구성입니다. 구성은 프로세스의 로컬 상태로 구성된 벡터입니다. 각 프로세스는 결정적 상태 머신을 실행합니다. 올바른 합의 알고리즘은 결국 모든 프로세스가 동일한 입력 값을 결정하는 구성에 도달해야합니다. 구성 이다 1 - 가의 , 만약 상대가하는 일에 상관없이, 모든 가능한 확장 C의 의 결정 값으로 리드 . 유사하게, 우리는 정의 할 수 있습니다 0 - 가수를 . 구성 C는 것입니다 이가 모두 결정에서 접근 할 경우 C110(둘 중 하나에 도달하는 것은 적에게 달려있다). 분명히, 2가 구성 에서 어떤 프로세스도 결정할 수 없었습니다. 그렇지 않으면 합의와 모순됩니다! 따라서 이러한 2가 구성의 무한 시퀀스를 구성 할 수 있다면이 설정에 합의 알고리즘이없는 것으로 나타났습니다.


2
@AJed 보충 자료 : Maurice Herlihy 의 논문 동기화 를 살펴 보았 으며 이제 합의 문제에 대한 이론적 영향을 하나 더 제시 할 수 있습니다. 컨센서스 수 (consensus number) 라는 개념을 사용하면 동기화 프리미티브의 무한한 계층 구조가 있음을 알 수 있으므로 한 레벨의 프리미티브는 더 높은 레벨의 프리미티브를 대기없이 구현하는 데 사용할 수 없습니다. 간단히 말해서, 합의 문제 서버 는 원시 동기화 작업 의 상대적인 을 정의하는 통일 된 이론으로 사용됩니다. 우아합니다.
hengxin

1
FLP 불가능 결과의 증거를 이해하는 데 어려움이 있습니다. 힌트 좀 주 시겠어요? [FLP 증거] ( stackoverflow.com/q/15131730/1833118 )를 참조하십시오 . 감사.
hengxin

"모든 프로세스가 결정된 곳"은 "모든 올바른 프로세스가 결정한 곳"일까요?
nbro

당신은 "적대자가 무엇을 하든지"에 누가 상대방인지 설명해야합니다.
nbro

"C의 모든 가능한 확장", "C의 확장"은 무엇을 의미합니까? 일반적으로 구성의 확장이란 무엇입니까?
nbro

7

결함 허용 결정 론적 알고리즘이 없음을 보여줍니다. 상당히 강력한 이론적 결과로 인해 디자이너는 내결함성을 다르게 처리해야하며, 그 중 일부는 동기화 및 무작위 화입니다.

의견 : 제 생각에 동기화는 실제 응용에서는 거의 찾아 볼 수없는 시스템에 대한 추가 가정입니다.

참조를 위해 Wikipedia 링크를 확인 하십시오 . 실용적인 응용 프로그램 은이 블로그 를 확인하십시오.


1
예, 동기화보다 무작위 화를 선호합니다. 분산 컴퓨팅이 작동하는 환경은 비 동기화, 무제한 지연, 예기치 않은 장애 및 너무 비결정론적인 측면에서 매우 열악합니다. 완벽하지 않은 한, 우리는 무작위 화를 사용하여 너무 많은 복잡성을 피하면서 일부 보장을 달성하지 않는 이유는 무엇입니까?
hengxin

1
동기화에 관해서는 이론상 의 가정이 마음에 들지 않습니다 . 그러나 산업 에서는 동기화 또는 부분 동기화가 자주 적용됩니다. 예를 들어 Google의 스패너는 전 세계에 분산 된 동기식 복제 데이터베이스입니다. 그것은 덜 결정적입니다. 당신의 의견 것입니다?
hengxin

동기화가 어떻게 구현되는지 보는 것이 낫습니다. 그러나 그것은 매우 흥미로운 참조입니다. -내 말은, 그것은 시스템의 자연스러운 특징이 아닙니다. 추가해야합니다.
AJed December

일반적으로 Wikipedia를 참조해서는 안됩니다. 방금 Wikipedia 기사를 읽었습니다. 그것은 매우 불완전하고 조직화되지 않았습니다. 또한 혼란 스러울 수 있습니다.
nbro

5

합의 문제가 중요한 한 가지 이유는 매우 간단 하고 분산 컴퓨팅 시스템에 대한 보편적 인 문제 이기 때문 입니다.

비동기 분산 시스템에서 합의를 해결할 수있는 경우이를 사용하여 공유 객체에 대한 작업을 선형화하고 공유 객체에 대한 선형성을 얻을 수 있습니다.

간단하게하기 위해, 가치에 대해 합의하는 것보다 얼마나 많은 문제가 생각 나는가?

(순수한) 비동기 분산 시스템에서의 합의에 대한 불가능한 결과는 추가적인 "물건"없이는 (순수한) 비동기 분산 시스템에서 해결하고자하는 문제를 해결할 수 없음을 알려줍니다. 이로 인해 무작위 알고리즘, 결함 탐지기, 부분 동기화 모델 등과 같은 합의를 해결할 수있는 비동기 모델이 생성됩니다.

이는 실제로 Lamport 's Paxos, Google의 Chubby, Apache ZooKeeper 및 Raft와 같은 합의를 해결하는 알고리즘이 서버간에 상태를 자주 복제하려는 분산 시스템의 핵심에있는 이유입니다.


0

많은 CPU, 컴퓨터의 많은 프로세스, LAN으로 연결된 많은 컴퓨터, 인터넷으로 연결된 많은 LAN 등 스택 전체에 계산의 특성이 점점 더 분산되고 있다고 덧붙였습니다.

이로 인해 공통 (분산 / 전역) 상태가 가장 중요합니다. 각 알고리즘은 특정 상태를 가정하고 계산을 여러 곳에서 수행해야하는 경우 상태도 분배해야합니다.

이 도메인의 영향력있는 논문 ( Paxos 및보다 최근에는 Raft )이 인용 한 논문 이후에 출판되었습니다. 두 가지 모두 실패가있을 경우 합의 문제를 해결합니다.

몇 가지 접근 방식을 사용하여 분산 시스템에서 비잔틴 오류를 피할 수 있습니다.

비잔틴 결함 허용에 대한 Wikipedia 항목을 살펴보십시오 .


FLP 불가능 결과는 가장 기본적인 실패 (충돌) 설정에서도 적용되므로 비잔틴 실패 방지에 대한 단락의 요점이 무엇인지 잘 모르겠습니다. 우리가 실패가 없다면 합의는 다소 쉽다는 것을 주목하라 : 하나의 고정 된 프로세스는 그 값을 브로드 캐스트하고 각 프로세스는 그 값을 수신하자마자 결정한다.
Kaveh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.