Pregunta

Estamos diseñando un programa cliente / servidor y necesito algo de ayuda con una decisión de diseño.

El lado del servidor del programa se ejecutará como un servicio en un número de servidores Windows, el servicio está monitoreando esos servidores, cuando sea necesario el servicio envíenos un correo electrónico un informe.

El cliente puede utilizar para controlar y gestionar los servicios que se ejecutan en los servidores, pero no siempre se ejecuta.

Mi pregunta es dónde y cómo debo almacenar la configuración para el servicio. Los ajustes (SMTP, etc.) serán definidos en el cliente, pero los servicios que se ejecutan en servidores remotos (puede haber muchas) necesitan ser actualizados con los ajustes y también guardará esa configuración unitil son actualizaciones de nuevo.

No puedo pensar en dos opciones, un centro de recurso compartido de Windows, donde los servicios de leer la configuración de los éxitos o cuando los clientes 'salvar' los ajustes se guardan en un lugar en cada servidor.

¿Qué haría usted? Algo que deba tener en cuenta?

Gracias

¿Fue útil?

Solución

No tengo experiencia con este tipo de servicios, sino una sugerencia podría ser para almacenar la configuración en una base de datos central que todos tienen acceso. Por lo que cada vez que se crea un nuevo servidor se crea una nueva entrada en la configuración de la base de datos.

Simplemente tirar esto en la discusión.

Otros consejos

he desarrollado un sistema que implica un cliente y varios servidores. Los requisitos para mi sistema incluyen que sea muy fiable y de alta disponibilidad (que puede no ser sus necesidades). Desde ese punto de vista, aquí están algunas ideas:

  • Si almacena la configuración en una ubicación central - ya sea por acción archivo o una base de datos - que ha creado un único punto de fallo en su sistema distribuido. Una solución sería la de almacenar la configuración en 2 o más ubicaciones centrales. Pero, ¿cómo asegurarse de que las ubicaciones de 2 o más están en sincronía?)

  • Si su tienda los ajustes con cada servidor, ¿y si la comunicación cliente / servidor falla con un servidor en el momento en que usted está tratando de guardar la configuración, o lo que si uno de los servidores no está arriba. Ahora usted tiene una situación en la que los servidores no están de acuerdo acerca de lo que los ajustes son. Así, de nuevo, ¿cómo asegurarse de que los múltiples servidores están sincronizados?

  • Así que .... pensar en cómo se puede mantener de forma fiable los servidores de sincronización, y cómo se puede detectar cuando no están en sincronía. En mi sistema, hay un esquema de maestro / esclavo entre los servidores, los latidos del corazón con números de secuencia para que los esclavos se aseguran constantemente a sí mismos que están en sincronía y no han perdido un mensaje. Si el maestro está abajo, el sistema se degrada, pero todavía funciona también, así que maestro no es un único punto de fallo catastrófico.

Hay una serie de cosas a tener en cuenta aquí.

La elección obvia es un repositorio ya se trate de registro, archivo, base de datos en el extremo del servidor. Y cuando sus servicios cargas para el que obtuvo todos estos ajustes en una colección. Sin embargo lo que sucede cuando se agrega un servicio más en el extremo del servidor para Digamos que el seguimiento de algunas otras tareas.

Ahora estás en un problema ya que si los parámetros consiguieron actualizan en el DATABSE través de un servidor al otro servicio / s necesita ser informado de la actualización y que necesitan reinicialización.

Puede venir sobre esto introduciendo muchos machenism es decir, las colas del IPC, la memoria compartida, Tubuladuras entre muchos de los servicios. Yo sugeriría Memoria compartida si los servicios no se distribuyen colas o en un servidor central o una base de datos si no lo es; como mejores opciones. Sin embargo todavía necesita servicios para colaborar de alguna forma para dar un toque a otros servicios acerca de la actualización de los parámetros.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top