2011-12-29 2 views
1

이 질문 중 일부는 정확히 내가 무엇을 물어볼 필요가 있을지 확신하지 못하기 때문에 상황을 시작하여 거기서부터 해결할 것입니다.웹 팜을위한 서비스 버스 (아마도?)

하나의 프로젝트는 aspComet 라이브러리를 통해 COMET을 사용하는 것과 관련이 있습니다. 프로그램의 유스 케이스는 협업 슬라이드 쇼입니다. 한 사람이 그 일괄 작업을 수행하고 하나 이상의 참가자가 특정 작업을 수행 할 수 있습니다. 화면에서 작업 수행시 대기 시간이 짧음

이전에는 하나의 서버에서만 실행되었습니다. 이제 우리는 성능상의 이유보다 신뢰성을 위해 조금 더 확장하고 싶습니다. 그래서 우리는 Rackspace의 클라우드와 그 모든 재미있는 것들에 박스를 몇 개 가지고 있습니다.

저는 처음부터 같은 "쇼"의 다른 사람들이 다른 서버에있을 수 있기 때문에 COMET 작업 방식을 약간 변경해야한다는 것을 알았습니다. 나는 알 수있는 방법이 없습니다. 그들이 사이트에 이미 도착할 때까지 그들이 속한 것이 무엇인지.

내가 처음이 지금은 가끔 분실 또는 지연 얻을에 메시지를 발송에 문제가 실행 해요, 잘 시작하는 설명하지 않은 WCF 메쉬 공급자를 사용하여 달려 드는

는 (나는 100 % 확실하지 않다 무슨 일이 벌어지고있는가) 그러나 COMET에 대한 긴 여론 조사를 망치고 이상한 방식으로 문제를 일으킨다. (버튼을 클릭하면 이벤트가 발생하거나 10 초 (긴 폴링 지속 시간) 동안 멈추고 실제로 아무것도하지 않는다.).

더 많은 연구를 통해 닷넷 서비스 버스 제공 업체 중 한 곳이 내가 원하는 것을 할 수 있다고 믿고 있습니다.

  • (데이터베이스의 외부) 실패의

    1. 단일 지점을 동료 없음 하드 코딩 : 그러나, 나는 내가 필요로하는 것을 포함하지 않을 것이다 예를 찾을 수 없습니다.
    2. 근처 실시간 (NO 폴링, 가장 좋은 것입니다 기반 이벤트)

    나의 이상적인 솔루션이 서버가 올 때, 그것은 단지 행의 경우에도 다른 서버는 (그 존재를 알 수 있습니다 것을 포함하는 것 테이블 어딘가에), 서로간에 브로드 캐스트 메시지를 보낼 수 있습니다. 각 서버는 게시자와 구독자입니다. 이것이 WCF Mesh 공급자가 가지고있는 것입니다.하지만 그 코드에 지나치게 확신하지는 않습니다.

    누구나 올바른 방향으로 나를 가리킬 수 있습니까? 서비스 버스 공급자를 위해 문서에서 찾는 적절한 용어조차도이 시점에서 좋을 것입니다. 아니면 내가 원하는 서비스 버스가 아닌가? 이 시점에서 나는 각각의 웹 서버에 Jabber 서버를 설치하고 그것이 내 제약 조건에 맞을 수있는 경우 사용하도록 정했습니다.

  • +1

    긴 폴링을하지 않고도 데이터를 검색하기 위해 거의 실시간을 원하면 RabbitMQ를 사용하여 데이터 대기열에 넣고 HTTP 스트리밍을 사용하는 것이 좋습니다. – rpgmaker

    답변

    1

    NServiceBus에 1 톤을 말할 수 없지만 응답이 비슷할 것으로 예상됩니다.

    1. 단일 실패 지점 : MSMQ는 멀티 캐스팅을 사용할 수 있습니다. 즉, 각 끝점에서 해당 끝점이 브로드 캐스트되고 DB 테이블이 필요 없음을 의미합니다. RabbitMQ는이 Exchange-to-Queue 바인딩 프로세스를 사용합니다. 즉, Rabbit 인스턴스 또는 클러스터가 작동중인 동안에는 메시지가 계속 존재 함을 의미합니다. RabbitMQ는 클러스터 될 수 있으며 MSMQ는 클러스터 될 수 없습니다. * 참고 : Rackspace의 멀티 캐스팅에 문제가있을 수 있습니다. 어떻게 동작하는지 알 수 없습니다. 그렇다면 MSMQ (RabbitMQ 아님)의 런타임 서비스로 돌아 가야합니다. 모든 사람이 단일 지점을 통해 제어 메시지를 조정할 수 있기 때문에 단일 지점 오류가 발생합니다.

    2. 피어의 하드 코딩 : 위에서 설명한 비트; MSMQ의 멀티 캐스트가이를 처리합니다.토끼도 할 수 있습니다. 대기열을 듣고 싶은 교환기에 묶으십시오. MassTransit이이를 처리합니다.

    3. 거의 실시간 : 거의 모두 실시간에 가까운 메시징을 사용합니다. 메시지 소비자 코드에는 폴링이 없습니다.

    저는 서비스 버스가 여러분이 시도하는 것에 대해 합리적인 해결책이라고 생각합니다. 좀 더 자세한 정보가 필요 하겠지만 일반적인 메시징 방식이 옳습니다. RabbitMQ 위에 무언가를 원하고 Rabbit이 대부분의 것을 처리하도록 결정했다면 다른 가벼운 메시징 라이브러리가 있습니다.

    MassTransit을 시작하려면 설명서가 http://readthedocs.org/projects/masstransit/이고 메일 링리스트가 http://groups.google.com/group/masstransit-discuss입니다. 당신이 미래의 질문이 있고 누군가가 당신을 도우 려하고 도와 줄 것이라면 메일 링리스트에 가입하십시오.

    +0

    MSMQ는 고 가용성을 위해 클러스터링 될 수 있습니다. –

    관련 문제