Estoy diseñando un servicio sin estado que esencialmente procesa un flujo de información y luego, según las condiciones, envía correos electrónicos. Quiero alojar esto en la estructura de servicio, con más de uno activo en caso de falla, sin embargo, ¿cómo limito el correo electrónico que se enviará solo desde el "principal".

¿Es activo / activo solo válido para servicios con estado que están particionados? Si los servicios tienen que ser activos / pasivos, ¿cómo sabe el servicio cuándo es ahora el activo?

1
Telavian 17 oct. 2017 a las 20:24

3 respuestas

La mejor respuesta

No hay un mecanismo integrado para elección de líder ( que puedes usar) dentro de SF. Puede utilizar un arrendamiento de blobs. El líder será quien adquiera el contrato de arrendamiento y necesite actualizarlo mientras esté "vivo". Si se bloquea, perderá el contrato de arrendamiento y otra instancia puede obtenerlo. Esto introduce una dependencia externa, reduciendo el% de disponibilidad general de su sistema.

También podría crear un servicio con estado que haga algo similar.

2
LoekD 17 oct. 2017 a las 18:36

Iré con el servicio Stateful por dos razones:

  • Solo desea un "primario" para manejar el correo electrónico.
  • Desea una copia de seguridad / réplica en caso de que el primario se caiga. Esto es predeterminado por servicio con estado
  • Es difícil con múltiples instancias de servicio sin estado. Cuando tiene flujo de información manejado por instancia múltiple. ¿Qué sucede si la condición para enviar correo electrónico no está ocurriendo en el nodo "primario"? Luego tiene que usar un mecanismo separado para transferir esos datos / estado al nodo "primario".
0
duongthaiha 18 oct. 2017 a las 09:14

Otra opción es tener un grupo de trabajadores apátridas que procesen su flujo de datos, y luego, cuando quiera enviar un correo electrónico, notificará a otro servicio (a través de ServiceRemoting / Rest / ServiceBus / otro canal de comunicación) y este servicio se encargará de envío real de correos electrónicos.

Si este servicio de envío de correo electrónico tiene estado, puede manejar duplicados si esa es una preocupación que tiene.

0
anderso 1 nov. 2017 a las 11:51