너무 쉽게 이동 :외부 이벤트를 기반으로 워크 플로 인스턴스를 안정적으로 만들려면 어떻게해야합니까? 윈도우 워크 플로우 물건에 약간의 새로운
를 내가 고 가용성을 가진 워크 플로우 호스트 환경 설계 할 - 모두 같은 지속성 또는 추적을 가리키는 별도의 하드웨어에 2 개 WF 런타임 호스트의 최소 SQL 데이터베이스.
내가 비동기 일부 외부 이벤트를 기반으로하는 새로운 워크 플로 인스턴스를 만들 수있게된다 패턴을 찾고 있습니다 (즉, 데이터의 일부 조각이 다른 응용 프로그램에서 DB에 업데이트됩니다). 각 이벤트마다 정확히 하나의 워크 플로 인스턴스를 만들어야하며 인스턴스가 만들어지는 호스트는 중요하지 않습니다. 또한 이벤트와 워크 플로 인스턴스가 실제로 만들어지기까지의 시간에 대한 유연성도 있습니다. 내가 고려하고
하나 개의 솔루션은 WF 호스트에 WCF 인터페이스를 가진 및 부하 분산 장치의 일종 뒤에 그들을 배치입니다. 그런 다음 WCF 호출을 수행하기 위해 "이벤트"를 시작하는 시스템의 모든 부분에 달려 있습니다.
나는이 정말 행복하지 않다 때문에 경우 모두 \ 모든 WF 호스트가 다운 또는 이벤트는 "손실"할 수있다, 그렇지 않으면 사용할 수 없습니다. 또한, 나는 내가 원하는대로 부하를 관리 할 수 없을 것이다. 나는 작은 시간에 많은 사건들이있을 수있는 상황을 생각하지만, 나중에 사건들을 처리하는 것은 완벽하게 받아 들일 수있다.
그래서 나는 어떻게 든 이벤트를 지속하고 이벤트 처리에서 이벤트 생성을 분리 할 필요가 생각한다.
SQL Server의 MSMQ에 이러한 이벤트, 또는 간단한 이벤트 테이블을 넣어 및 WF 호스트 그냥 주기적으로 실행 가능한 솔루션을 큐를 폴링 데? 폴링은 ... 비록 같은 더러운 단어 것 같다
겠습니까 NServiceBus하고 내구성이 메시지는 여기에 도움이 될?
통찰력이 있으면 크게 감사하겠습니다.
부록은
데이터베이스는 공유 파이버 채널 스토리지 클러스터됩니다. 네트워크도 중복 될 것입니다. WF 런타임 인스턴스가 장애 조치를 수행하려면 일반적인 지속성 서비스 (이 경우 SQL 백엔드)를 지정해야합니다. 그것은 높은 가용성,하지 총 가용성 그리고 :)
MSDN article on WF Reliability and High Availabilty
또한, WF 런타임의 각 인스턴스가 정확히 같은 비트를 실행해야합니다, 그래서 업그레이드는 모두 동시에 복용이 필요합니다. 필자는 필요한 경우 전체 시스템을 중단하지 않고도이를 수행 할 수있는 아이디어를 좋아합니다.