문제

나는 C# 멀티스레드 몬테카를로 시뮬레이션, 애플리케이션은 독립적으로 실행되는 태스크로 분할될 수 있도록 이미 구조화되어 있으며, TaskController는 태스크를 실행하고, 중간 결과를 집계하고, 수렴(조기 종료 기준)을 확인한 다음 최종 결과를 반환합니다. 이는 현재 ThreadPool을 사용하여 구현됩니다.

ID 이 계산을 돕기 위해 두 대 이상의 컴퓨터를 활용하고 싶습니다..IIS를 사용하기 위한 승인이나 인프라가 없지만(정책은 변경되지 않음) 예를 들어 사용할 수 있습니다. NetTcpBinding을 사용한 WCF 엔드포인트 바인딩을 통해 서버 간 통신을 테스트했으며 적절한 권한이 있고 작동합니다.

시작하려면 하나의 마스터 exe(콘솔 앱)와 다른 서버의 여러 슬레이브를 전용 작업자로 사용하려고 합니다(이것이 exe여야 합니까?).또는 Windows 서비스?), 결국에는 이 설정을 다음에서 실행할 수 있습니다. 수백 개의 워크스테이션 (서버도 포함) 회사 내에서 유휴 시간 (또는 화면 보호기가 활성화된 경우).

직접 작성할 수도 있지만 1, 2방향 통신을 처리해야 합니까?조기 종료(중간 수렴 결과 확인), 더 이상 필요하지 않은 작업 취소, 작업 배포, 작업 배포를 위해 사용 가능하고 준비된 머신 검색, 워크스테이션이 더 이상 유휴 상태가 아닌 경우 작업 조절/일시 중지?분산 시스템에 들어가는 다른 모든 것?

마스터(작업 컨트롤러)가 모든 슬레이브 작업자의 주소(ip)를 알고 작업을 수행하도록 지시해야 하는지(사용 가능한 경우) 슬레이브 작업자는 마스터 주소만 알고 작업을 수행할 수 있는 위치에 있을 때 작업을 요청해야 합니까? 아니면 의사소통이 양방향으로 이루어져야 합니까?이것은 다음에서 실행됩니다. 24시간제 다양한 비즈니스 지역을 지원하기 위해 하루에 약 9번의 실행이 시작되었습니다.

다음에 대한 추천을 찾고 있습니다. .net 그리드/분산 라이브러리 이 노력에 도움이 될 수 있는 몇 가지 아키텍처 조언이 있습니다.

업데이트

다음 중 하나를 사용해 본 경험이 있는 사람이 있습니까?

http://www.digipede.net/ (commercial)
http://www.gridbus.org/~alchemi/
http://ngrid.sourceforge.net/
http://www.osl.iu.edu/research/mpi.net/

또는 .net의 JavaSpaces, Jini를 사용했거나 동등한 .net 기술을 찾았습니다.

http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/
http://www.jini.org

감사해요

도움이 되었습니까?

해결책

나는 공간 기반 아키텍처 이를 위해.

마스터는 작업을 공간(기본적으로 개체 저장소)에 기록합니다.소비 클라이언트는 항상 작업을 찾고 있으며 작업이 가능해지면 해당 공간에서 가져오고 처리한 다음 결과를 해당 공간이나 다른 공간에 다시 씁니다(모두 트랜잭션 아래).결과를 그룹화하기 위해 작업에 특정 실행에 속하는 것으로 태그를 지정합니다.

이것의 장점은 확장이 매우 쉽다는 것입니다(단순히 더 많은 소비자를 추가함으로써).소비자는 언제 일할 수 있는지 결정해야 하며 공간에 대한 정보(찾는 방법)만 구성하면 됩니다.생산자는 소비자 세트와 완전히 분리됩니다.

작업은 트랜잭션에 따라 처리되므로 소비자가 완료하지 못한 경우 해당 작업은 해당 공간으로 반환되어 다른 소비자가 처리할 수 있습니다.

중간 결과를 쉽게 처리할 수 있습니다.생산자는 공간에서 결과를 얻고 결과가 나오면 중간체를 파생할 수 있습니다.작업을 쉽게 취소할 수 있습니다.공간에서 제거하기만 하면 됩니다.

더 많은 생산자를 매우 쉽게 추가할 수 있습니다.그들은 단순히 동일한 공간에 글을 쓰고, 작업에 적절하게 태그가 지정되면 결과가 생산자와 명확하게 연결됩니다.

불행히도 .Net에 어떤 프레임워크를 사용할 수 있는지 잘 모르겠습니다. (저는 Java 세계 출신이고 자바스페이스 - 동적 검색을 사용하며 구성이 필요하지 않습니다.)그러나 인터넷 검색의 가치가 있습니다.아마도 (충분히 강력하다면) C# 생산자/소비자를 작성하여 Javaspace 인프라에 연결할 수 있습니다.

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