분산 컴퓨팅이란 정확히 무엇입니까? [닫은]


14

분산 컴퓨팅을 정확히 구성하는 요소는 무엇이며 병렬 / 동시 컴퓨팅과 어떻게 다릅니 까?

리소스에 대한 액세스를 위해 동기화하려는 여러 병렬 스레드에서 뮤텍스와 세마포어를 사용하면 분산 컴퓨팅 도메인에서 문제가됩니까?

답변:


8

분산 컴퓨팅은 정확히 무엇을 구성합니까?

분산 컴퓨팅은 하나 이상의 문제를 해결하기 위해 서로 통신 하는 기본적으로 병렬 처리 요소 모음입니다. 이러한 처리 요소는 서로 충분히 분리되어있어 신뢰할 수 있고시기 적절한 메시징 구조를 구축하는 것이 실용적이지 않으므로 시스템 상태에 대한 전체적인 지식이있을 수 없습니다. 분산 시스템과 메시징의 특정 기능은 메시지가한다는 것이다 , 길을 잃을 , 깨진 얻을 것이다 지연 얻을 -이 공간의 솔루션이 고려해야합니다. 따라서 분산 프로그래밍은 네트워크 및 메시지, 병렬 처리 및 글로벌 정보 부족을 다루는 것입니다.

문제를 해결하는 가장 쉬운 방법은 단일 처리 요소를 특수한 정보, 즉 특정 정보에 대해 권한을 부여하는 것입니다. 그런 다음 다른 요소는 매번 정보를 참조하거나 정보를 캐시하고 정보가 오래되지 않기를 바랄 수 있습니다 (변경 사항을 알 수 없기 때문에). 이것은 고전적인 클라이언트 / 서버 아키텍처입니다.

인터넷 컴퓨팅 분산 컴퓨팅이지만 대부분의 분산 노드가 실제로하는 일을 제어 할 수있는 능력이 없습니다.

리소스에 대한 액세스를 위해 동기화하려는 여러 병렬 스레드가 분산 컴퓨팅 도메인에서 문제를 구성합니까?

그들은 가능한 구성 솔루션 클라이언트 / 서버 모델을 구축,하지만 자원 경쟁의 가능성이 크게 증가의 비용으로 할 때 유용합니다. 읽기의 경우 하드웨어가 충분하지 않은 경우 큰 문제가 아니지만 쓰기의 경우 실제로 큰 문제입니다.

그러나 피하려고 시도하는 것은 분산 잠금입니다. Paxos 프로토콜 과 같은 것을 사용하지 않으면 신뢰할 수있는 적시 메시징이 부족하여 분산 의사 결정 프로토콜이 절대적으로 사라지 지만 많은 경고가 있습니다. 분산 컴퓨팅의 근본적인 문제는 "메시지에 나쁜 일이 발생"한다는 것입니다. TCP와 같은 상대적으로 낮은 수준의 프로토콜은 문제를 줄이지 만 여전히 심하게 풀릴 수 있습니다.


6

리소스에 대한 액세스를 위해 동기화하려는 여러 병렬 스레드가 분산 컴퓨팅 도메인에서 문제를 구성합니까?

이러한 스레드가 다른 시스템에서 실행 중이거나 동일한 시스템에서 다른 프로세스에서 실행중인 경우에도 수행됩니다.


1
다른 머신에서 실행되는 스레드는 기본적으로 전통적인 방식의 뮤텍스와 세마포어를 동기화 할 수 없습니다.
Jan Hudec

@ JanHudec 나는 그것이 면접관의 질문의 요점이라고 생각합니다. 원 자성 테스트 및 설정 또는 비교 및 ​​스왑 명령이나 공유 메모리가 없으면 분산 컴퓨팅은 동기화를 위해 머신 간의 메시징에 의존해야합니다. 다행히도이를 수행하는 알고리즘이 있습니다.
Caleb

나는 "다행히"동의하지 않습니다. 알고리즘은 복잡하고 내결함성이 없으므로 피해야합니다.
Jan Hudec

5

분산 컴퓨팅은 다른 컴퓨터 (즉, 분산 시스템)에서 처리되는 컴퓨팅 시스템입니다. 개별 프로그램은 일련의 통신 채널을 통해 서로 통신합니다. 이러한 채널은 일반적으로 네트워크 연결 (예 : TCP 소켓)이지만 다른 통신 프로토콜 및 장치 (예 : DeviceNET, BACNet, SECS-2, Modbus 등) 또는 특정 장치에 맞게 사용자 정의 된 프로토콜을 사용하는 경우가 많습니다.

분산 시스템은 일반적으로 단일 컴퓨터에서 실행되도록 설계된 시스템보다 훨씬 더 복잡합니다. 다중 스레드 응용 프로그램이 해결해야하는 동시성 및 리소스 잠금 문제 외에도 분산 시스템은 통신 오류 및 처리 노드 오류를 처리해야합니다. 여러 프로세서가 필요한 트랜잭션 (및 롤백)도 까다로울 수 있습니다.

분산 시스템은 여러 형태를 취하며 현재 많은 응용 프로그램에서 사용됩니다. 웹 응용 프로그램은 분산 시스템입니다. N 계층 시스템은 일반적으로 응용 프로그램이 다른 N 개의 서로 다른 프로세서를 갖습니다. 분산 시스템은 많은 공장 자동화 시스템에서도 사용됩니다.

쓰기 업 위키 백과에 분산 컴퓨팅에는 가치가 읽기입니다.

다중 스레드 응용 프로그램이 분산 응용 프로그램을 구성하는지 여부에 대한 질문으로 스레드가 단일 컴퓨터에서 실행중인 경우 시스템이 배포되지 않습니다. 분산 시스템에 내재 된 일부 문제를 해결해야하지만 전부는 아닙니다.


3

엄밀히 말하면 "분산 컴퓨팅"은 둘 이상의 컴퓨터에서 단일 트랜잭션 / 요청 / 계산을 처리하는 솔루션입니다.

또한 중앙 데이터 센터 외부에 원래 배치 된 Windows, 유닉스 및 기타 소규모 시스템 서버의 모든 용어 인 "분산 시스템"이라는 용어를 사용하게됩니다. 요즘에는 이러한 시스템이 데이터 센터 내부에 배치되는 것이 더 일반적이지만이 용어는 계속 사용되었습니다.


3

분산 컴퓨팅의 구성 요소에 대한 일반적인 질문에 대답하기 위해 Ann Wollrath, Geoff Wyant, Jim Waldo 및 Samuel C. Kendall의 분산 컴퓨팅에 관한 참고 사항을 추천합니다 . 최근 분산 시스템의 역사와 장애를 다루고 있으며 분산 컴퓨팅은 관련된 문제에 대해 다르게 생각할 것을 제안합니다.

본 문서에서는 뮤텍스 나 세마포어를 언급하지 않았지만 분산 소프트웨어 시스템의 적절한 엔지니어링에 대한 귀중한 통찰력을 제공합니다.

면접관이 뮤텍스와 세마포어에 대해 질문 한 이유에 대해서는 @Caleb에 동의합니다.

이러한 스레드가 다른 시스템에서 실행 중이거나 동일한 시스템에서 다른 프로세스에서 실행중인 경우에도 수행됩니다.

내가 추가하는 유일한 것은 뮤텍스와 세마포어가 여러 컴퓨팅 장치에 작업을 분산시킬 수있는 저수준 잠금 프리미티브이며 작동은 응용 프로그램의 성공에 필수적입니다. 분명히, 그것은 사용되는 언어와 기술에 달려 있습니다. Erlang 또는 Scala를 사용하는 경우 기존의 잠금 기반 동시성 대신 Actor 모델 기반 동시성을 사용하게됩니다.


2

그 단어는 모든 것을 말합니다. 일부 컴퓨팅 작업을 수행해야하고 각 컴퓨팅이 다른 컴퓨팅과 상관없이 작동하도록이 컴퓨팅의 일부를 배포 할 수 있다면 모든 컴퓨팅이 완료되면 각 컴퓨팅의 결과를 결합하여 주 컴퓨팅의 답을 얻습니다. 예는 다음과 같습니다. Map-Reduce


1

우리는 "분산 시스템 (distributed systems)"에 관한 과정을 밟았으며, 그 정의를 정확히 기억하지는 못했지만 다음과 같은 내용을 담고있었습니다.

  1. 메시지를 통해 통신하는 여러 개의 개별 노드에서 실행될 수 있습니다 (메모리를 공유 할 수 없음)
  2. 노드간에 개체를 마이그레이션 할 수 있습니다
  3. 객체는 마이그레이션시 ID를 유지하며 마이그레이션시 투명하게 처리 될 수 있습니다.
  4. 객체는 생성 한 노드에 의존하지 않습니다
  5. 시스템은 노드 추가 및 제거를 처리 할 수 ​​있습니다

(나는 더 있다고 생각하고 마지막 요점에 대해 확신하지 못한다)

이제이 과정에서 분산 트랜잭션 및 분산 잠금을 구현하는 방법을 배웠습니다. 교훈은 분산 잠금은 기본적으로 분산 트랜잭션을 사용하여 구현되며, 이는 로컬에서 수행하는 것과 비교하여 다른 방법이며 본질적으로 내결함성이 아니며 분산 시스템을 처음부터 사용하려는 목적을 상실합니다.

편집 : 이 정의는 운영 체제 또는 데이터베이스 시스템의 좁은 의미에서 "분산 시스템"에 대한 것이며 클라이언트 서버 시스템과는 대조적입니다. 제 1 조건을 만족하는 것은 어떤 상황에서는 분산이라고 할 수있다.

우연히이 정의는 분산 및 기존 버전 제어 시스템의 차이점과 일치합니다.이 시스템은 모두 최소한 클라이언트 서버이며 종종 복제됩니다.


그것은 매우 특별한 스타일의 분산 컴퓨팅입니다. 다른 사람들이 있으며, 그들이 실제로 공유하는 유일한 것은 첫 번째 포인트입니다. 메시징은 중요하고 다른 것은 중요하지 않습니다.
Donal Fellows

1
@DonalFellows : 음,이 분산 시스템을 운영 또는 데이터베이스 시스템의 의미에서. 마이그레이션 및 내결함성이이를 수행하는 주요 지점입니다. 분산 "컴퓨팅"은 여러 노드에서 실행되는 모든 것입니다.
Jan Hudec

그렇다면, 결정을 내리는 사업을 다루었을 것입니다. 분산 시스템에서는 어렵습니다. (또한이 주제에서 내가 본 대부분의 학술 논문은 기본 그래프 토폴로지에 대해 완전히 비현실적인 가정을 만들어 유효하지만 쓸모없는 결론을 내립니다.)
Donal Fellows

@DonalFellows : 물론이 과정은 의사 결정에 이르는 사업과 중재 및 분할 된 모든 것을 다루었습니다 (너무 깊지는 않지만 입문 수준이었습니다). 그러나 이것이 분산 시스템의 속성을 정의하는 것은 아닙니다. 당신이 그것을 만들고 싶다면 점프해야 할 장애물 일뿐입니다.
Jan Hudec

0

분산 컴퓨팅은 실생활에서 더 많이들을 수있는 엔터프라이즈 컴퓨팅의 "비 마케팅"용어입니다. 그러나 다른 사람들이 지적한 일반적인 아이디어는 "여러 대의 컴퓨터를 사용하여 작업을 수행하는 것"입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.