문제

어떻게 비슷한 컴퓨팅 분산 및 실을 꿰는?내가 찾은 두 개의 논문에 오히 반대의 결론:

"멀티-스레딩은 보다 쉽게 네트워킹입니다.어떻게 스레드가 쉬운 및 이와 유사한 네트워크 코드"

http://software.intel.com/file/14723

(이렇게 나에게는 그들은 너무 유사한 후에는 캡슐화는 이러한 두 가지 방법으로 할 수 있는 동일한 코드 그러나 어쩌면 내가 틀렸다)

"주에 분산된 컴퓨팅"

http://research.sun.com/techrep/1994/abstract-29.html

(이 강력한 차)

나는 확실히 진실은 어딘가에 사이 있습니다.What's 골든 의미합니까?이 있습 기술을 통해 그 두 개의 패러다임?또는 이러한 시도 못했기 때문에 근본적인 차이점 네트워킹 및 concurrency?

도움이 되었습니까?

해결책

나는 그것들이 매우 비슷하다는 것을 알지 못했습니다. 이 게시물의 목적으로 "노드"가 하나의 컴퓨터에서 실행되는 하나의 하드웨어 스레드가되도록 정의하겠습니다. 따라서 쿼드 코어 머신은 4 개의 단일 프로세서 상자의 클러스터와 마찬가지로 4 개의 노드입니다.

각 노드는 일반적으로 일부 처리를 실행하고 있으며 일부 유형의 크로스 노드 통신이 있어야합니다. 일반적 으로이 커뮤니케이션의 첫 번째 사례는 노드에 무엇을 해야하는지 알려줍니다. 이 커뮤니케이션에서는 공유 메모리, 세마포어, 공유 파일, 파이프, 소켓, 원격 절차 호출, 분산 COM 등을 사용할 수 있지만 가장 쉬운 사용, 공유 메모리 및 세마포어는 일반적으로 네트워크에서 사용할 수 없습니다. 공유 파일을 사용할 수 있지만 성능은 일반적으로 열악합니다. 소켓은보다 정교한 메커니즘보다는 네트워크보다 가장 일반적이고 유연한 선택 인 경향이 있습니다. 이 시점에서 대기 시간, 대역폭, 패킷 손실, 네트워크 토폴로지 등을 포함한 네트워크 아키텍처의 세부 사항을 처리해야합니다.

작업 대기열로 시작하면 동일한 기계의 노드는 간단한 공유 메모리를 사용하여 작업을 수행 할 수 있습니다. 당신은 그것을 Lockless에 쓸 수도 있고 원활하게 작동합니다. 네트워크 위에 노드가 있으면 대기열을 어디에 넣습니까? 중앙 집중화되면 해당 기계는 대역폭 비용이 매우 높을 수 있습니다. 배포하려고 노력하면 상황이 매우 빠르게 복잡해집니다.

내가 일반적으로 내가 찾은 것은이 유형의 병렬 아키텍처를 다루는 사람들이 당황스럽게 평행 한 문제를 해결하기 위해 선택하는 경향이 있다는 것입니다. Raytracing이 떠 오릅니다. 직업 분포와는 별도로 크로스 노드 커뮤니케이션이 많이 필요하지 않습니다. 이와 같은 많은 문제가 있지만, 분산 된 컴퓨팅이 본질적으로 스레딩과 동일하다는 것을 제안하는 것은 약간 불쾌감을 느낍니다.

이제 분산 시스템에 동일하게 작동하는 스레딩을 쓰기 위해, 순수한 메시지 전달을 사용하고 어떤 스레드가 "메인"이라고 가정하지 않으면, 그렇습니다. 그렇습니다. 예, 그들은 매우 유사 할 것입니다. 그러나 당신이 한 일은 당신이 분산 아키텍처를 가지고 있으며 스레드로 구현 한 척입니다. 문제는 스레딩이 실제 분산 컴퓨팅보다 훨씬 간단한 병렬 처리 사례라는 것입니다. 두 가지를 단일 문제로 추상화 할 수 있지만 더 어려운 버전을 선택하고 엄격하게 붙어 있습니다. 그리고 결과는 모든 노드가 기계에 로컬에있을 때 그 결과가 좋지 않을 것입니다. 당신은 특별한 경우를 이용하지 않습니다.

다른 팁

배 컴퓨팅 수행을 통해 여러 다른 독립적인 컴퓨터,때로는 일반적으로 특수 OS 습니다.어렵기 때문에 상호 연결성의 기계를 훨씬 낮고,따라서 문제를 요구하는 많은 빠른,랜덤 액세스를 전체 데이터베이 매우 어려운 해결합니다.

일반적으로 말하자면,당신은 필요한 전문화된 라이브러리를 수행 분산 컴퓨팅 문제는 어떻게 할당 노드를 문제고 주위는 데이터입니다.

정말 궁금해 오고 있다면 다른 결론에 도달하기 때문에 그들은 해결하기 위해 노력하고 잘못된 문제에서 각 플랫폼입니다.일부 문제에 준수에 매우 잘하는 매우 상호 연결된 컴퓨터에서 혜택을 누릴 수 있습이 정말로 힘을 쓸 수 있습니다..다른 문제를 처리할 수 있습에서 단순히 분산 모델입니다.일반적으로,슈퍼컴퓨터를 해결할 수 있는 넓은 범위의 문제이지만,훨씬,훨씬 더 전문적이고 비싸다.

의 차이는 돌아올 것으로 보인 스레드 공유 상태,프로세스에 메시지를 전달.

당신이 필요로 하는 방법을 결정 상태를 유지하기 위해서 앱을 선택하기 전에 하나입니다.

공유 상태를 쉽게 얻을 시작으로,모든 데이터 변수 있습니다.하지만 일단 교착 상태/경쟁 조건을 입력,그것의 하드를 수정/규모입니다.

메시지 전달하는(예를 들어 얼랑)다른 접근 방식이 필요합하는 디자인,당신은 당신을 생각해야에 대해 기회를 위한 동시성 처음부터,하지만 상태의 각 분산 공정은 고립 된,잠금/경 더 쉽게 문제를 처리합니다.

프로세스를 분산 컴퓨팅 접근법과 비교하는 것이 스레드를 비교하는 것보다 훨씬 더 유용하다고 생각합니다. 스레드는 단일 프로세스 내에 존재하며 동일한 데이터와 동일한 메모리를 공유합니다. 이것은 여러 기계에서는 불가능합니다. 반면에 프로세스에는 자체 메모리가 있지만 경우에 따라 다른 프로세스와 정확히 동일한 데이터가 포함되어 있습니다 (예 : 포크 () 후). 이것은 네트워크를 통해 달성 될 수 있습니다.

이 비유에 더 가중치를 추가하는 것은 프로세스 간 통신에 사용되는 많은 도구가 네트워크 투명하다는 사실입니다. 좋은 예는 네트워크 소켓과 동일한 인터페이스를 사용하는 Unix 소켓입니다 (연결 코드 제외).

예, 개발 시간에 접근 방식은 매우 유사하지만 각각의 사용은 매우 다릅니다. 나는 당신의 아이디어가 명확하지 않습니다. 내가 틀렸는지 알려주세요 : 분산 컴퓨팅에 대해 이야기 할 때 우리는 동일한 응용 프로그램에서 하나 이상의 컴퓨터 또는 서버 처리 코드를 가정하지만 멀티 스레딩에 대해 이야기 할 때 우리는 동일한 컴퓨터에서 응용 프로그램의 다른 스레딩을 동시에 처리하는 것에 대해 이야기하고 있습니다. 인터넷에 위치한 웹 서비스에 액세스하는 하나의 응용 프로그램에서 분산 컴퓨팅의 예로 생각할 수 있습니다. 동일한 앱에는 두 개의 다른 컴퓨터가 작동합니다.

멀티 스레딩의 예를 원한다면 큰 소수를 찾으려고 응용 프로그램을 생각해보십시오. 멀티 스레딩을 사용하지 않으면 응용 프로그램이 응답하지 않기 때문에 다음 소수 (수명 시간 이상이 될 수 있음)를 계산할 때 응용 프로그램에서 다른 것을 보거나 할 수 없습니다. 계산에서 작동하는 동안.

당신도 그것들을 혼합 할 수 있습니다 :보다 복잡한 예로, 당신은 항상 멀티 스레딩을 사용하여 동일한 응용 프로그램으로 동시에 다른 웹 서비스에 액세스 할 수 있으므로, 이는 하나의 연결이 연결되지 않더라도 응용 프로그램을 응답 할 수 있습니다. 서버.

이 두 문서는 쉽게 비교할 수 없다고 생각합니다. 인텔의 문서는 스레딩에 대한 일종의 소개이며, 네트워크 컴퓨팅과의 유사성을 찾아서 설명하려고합니다. 왜 그들이 스레딩을 제시하는 방법을 선택했는지 잘 모르겠습니다. 아마도 네트워킹에 익숙한 사람들을 목표로했을 것입니다.

반면에 Sun의 문서는 분산 프로그래밍과 관련된 모든 어려움을 묘사 한 심각한 기사입니다. 내가 할 수있는 일은 단순히 그들이 말하는 것을 확인하는 것입니다.

제 생각에는 물체가 멀리있는 사실을 숨기려고 시도하는 추상화는 일반적으로 매우 나쁜 성능으로 이어 지므로 유해합니다. 프로그래머는 객체의 원격 성을 알고 있어야 효율적인 방식으로 호출 할 수 있어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top