0

본질적으로 정보 스트림을 처리하고 상태에 따라 전자 메일을 보내는 상태 비 저장 서비스를 설계하고 있습니다. 서비스 패브릭에서이 호스트를 호스트하고 싶습니다. 실패한 경우 둘 이상의 활성화되어 있지만 "기본"에서만 보내는 전자 메일을 어떻게 제한합니까?서비스 패브릭을 사용하는 서비스 아키텍처

활성/활성은 분할 된 상태 저장 서비스에만 유효합니까? 서비스가 활성/비활성이어야한다면 서비스가 현재 활성 상태 일 때 어떻게 알 수 있습니까?

답변

1

SF 내부에 leader election (사용할 수있는) 메커니즘이 없습니다. blob lease을 사용할 수 있습니다. 리더는 임대 계약을 맺은 사람이되며, 살아있는 동안 새로 고침해야합니다. 충돌이 발생하면리스를 잃게되고 다른 인스턴스가리스를 잃을 수 있습니다. 외부 종속성을 도입하여 시스템의 전체 가용성을 낮 춥니 다.

비슷한 기능을하는 Stateful 서비스를 만들 수도 있습니다.

0

나는 몇 가지 이유로 스테이트 풀 서비스를 갈 것입니다 :

  • 당신은 단 하나의 "주"이메일을 처리합니다.
  • 주 서버가 다운 된 경우를 대비하여 백업/복제본이 필요합니다. 이것은 기본값 인 상태 저장 서비스
  • 무국적 서비스의 다중 인스턴스로는 어렵습니다. 여러 인스턴스로 처리되는 정보 스트림이있는 경우 이메일을 보내기위한 조건이 "기본"노드에서 발생하지 않으면 어떻게 될까요? 그런 다음 데이터/상태를 "기본"노드 으로 전송하는 별도의 메커니즘이 필요합니다.
0

또 다른 옵션은 데이터 스트림을 처리하는 상태 저장 작업자 풀을 가지고 있으며 이메일을 보낼 때마다 ServiceRemoting/Rest/ServiceBus/다른 통신 채널을 통해 다른 서비스에 알립니다. 이 서비스는 이메일의 실제 전송을 처리합니다.

이 전자 메일 보내기 서비스가 상태 저장 인 경우 문제가 하나 인 경우 중복을 처리 할 수 ​​있습니다.