Pergunta

Estamos projetando um programa de cliente / servidor e eu preciso de alguma ajuda com uma decisão de projeto.

O lado do servidor do programa será executado como um serviço em um número de servidores Windows, o serviço está monitorando esses servidores, quando necessário o serviço irá enviar-nos um relatório.

O cliente será usada para controlar e gerenciar os serviços em execução nos servidores, mas não vai ser sempre em execução.

A minha pergunta é onde e como devo guardar a configuração para o serviço. As configurações de SMTP (etc) será definida no cliente, mas os serviços executados em servidores remotos (pode haver muitos) precisam ser atualizados com as configurações e também manter essas configurações unitil eles são atualizações novamente.

Eu posso pensar de duas opções, um centro de Windows Share onde os serviços de ler as configurações de ou quando os hits cliente 'salvar' as configurações são salvas para um local em cada servidor.

O que você faria? Qualquer coisa que eu deveria estar ciente de?

Graças

Foi útil?

Solução

Eu não tenho experiência com tais serviços, mas uma sugestão poderia ser a de armazenar as configurações em um banco de dados central que todos eles têm acesso. Assim, cada vez que você criar um novo servidor você cria uma nova entrada de configurações no banco de dados.

Apenas jogando isso na discussão.

Outras dicas

Eu desenvolvi um sistema que envolve um cliente e vários servidores. Os requisitos para o meu sistema incluem que ser muito confiável e altamente disponível (que pode não ser suas necessidades). A partir desse ponto de vista, aqui estão alguns pensamentos:

  • Se você armazenar as configurações em uma localização central - ou um compartilhamento de arquivo ou um banco de dados - você criou um único ponto de falha em seu sistema distribuído. Uma solução alternativa seria armazenar as configurações em 2 ou mais locais centrais. Mas, como você garantir que os 2 ou mais locais estão em sincronia?)

  • Se a sua loja as configurações com cada servidor, e se a comunicação cliente / servidor falhar com um servidor no momento em que você está tentando salvar as configurações, ou o que, se um dos servidores não é para cima. Agora você tem uma situação em que os servidores não concordam sobre quais são as definições. Então, mais uma vez, como você garantir que os vários servidores estão em sincronia?

  • Então .... pense sobre como você pode manter com segurança os servidores em sincronia, e como eles podem detectar quando eles não estão em sincronia. No meu sistema, há um esquema de master / slave entre os servidores, batimentos cardíacos com números de sequência para que escravos constantemente pode assegurar-se de que eles estão em sincronia e não ter perdido uma mensagem. Se o mestre é baixo, as degrada sistema, mas ainda funciona também, para que mestre não é um ponto único de falha catastrófica.

Há um número de coisas a considerar aqui.

A escolha óbvia é um repositório seja Registro, arquivo, banco de dados no final do servidor. E quando seus serviços cargas você foi buscar todas essas configurações em uma coleção. No entanto o que acontece quando você adiciona mais um serviço no final do servidor para vamos dizer monitorando algumas outras tarefas.

Agora você está no problema, pois se os parâmetros foram atualizados no databse através de um servidor a outro serviço / s precisa ser informado da atualização e eles precisam de reinicialização.

Você pode superar isso através da introdução de muitos IPC machenism ou seja, filas, memória compartilhada, Pipes, Sockets entre muitos dos serviços. Eu sugeriria memória compartilhada se os serviços não são distribuídos ou filas em um servidor central ou um banco de dados se não é; como um melhores opções. No entanto serviços ainda precisa colaborar de alguma forma para dar uma dica para outros serviços sobre o updation dos parâmetros.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top