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


19

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

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

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

답변:


18

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

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

응용

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

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


(*) 분산 알고리즘 실행은 일련의 구성입니다. 구성은 프로세스의 로컬 상태로 구성된 벡터입니다. 각 프로세스는 결정적 상태 머신을 실행합니다. 올바른 합의 알고리즘은 결국 모든 프로세스가 동일한 입력 값을 결정하는 구성에 도달해야합니다. 구성 이다 1 - 가의 , 만약 상대가하는 일에 상관없이, 모든 가능한 확장 C의 의 결정 값으로 리드 한 . 유사하게, 우리는 정의 할 수 있습니다 0 - 가수를 . 구성 C는 것입니다 이가 모두 결정에서 접근 할 경우 C씨1씨10씨씨(둘 중 하나에 도달하는 것은 적에게 달려있다). 분명히, 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.