Pergunta

Eu tenho um punhado de servidores todos conectados por links WAN (largura de banda moderada, maior latência) que todos precisam ser capazes de compartilhar informações sobre clientes conectados.Cada cliente pode se conectar a qualquer um dos servidores na "malha".Estou à procura de algum tipo de banco de dados distribuído, cada servidor pode hospedar e atualizar.Seria importante que cada servidor seja capaz de ser atualizado com o estado atual se ele estiver offline por qualquer período de tempo.

Se eu não conseguir encontrar nada, a alternativa será escolher um servidor para hospedar um db mysql todos os servidores podem inserir para;Mas eu realmente gostaria de remover isso como um único ponto de falha, se possível.(e o tempo de inatividade associado a promover um escravo para dominar)

Existe alguma loja de dados distribuída sem sentido que você usou antes e recomendaria?

seria mais útil se alguma solução tiver interfaces Python.

Foi útil?

Solução

Você já olhou para Python's multiprocessing.Manager objetos?

Você teria que adicionar lógica para manter um banco de dados distribuído (por exemplo, escolhendo novos mestres, redundância e quaisquer atributos que você deseja), o que pode ser facilmente feito, estendendo os objetos Manager e implementando seus próprios objetos Proxy, mas o módulo Imencionado cuidaria de todas as sincronizações e dados enviando para você.

Desta forma, em vez de ter um banco de dados distribuído, sua malha compartilharia um dict do Python ou um tipo de dados complexo que você instruir seu objeto Manager para compartilhar para proxies conectados.

Outras dicas

Dê uma olhada em dooerd project .Há um cliente python com base no gevent .

Talvez Hadoop ou algo assim funcionaria para você?

http://hadoop.apache.org/

O que você descreve lembra-me de um cluster do Apache Cassandra configurado para que cada máquina hospeda uma cópia de todo o conjunto de dados e leia e escreve com sucesso quando eles atingem um único nó (eu nunca fiz isso, mas acho que é possível).Os nós devem ser capazes de permanecer funcional quando os links WAN estiverem para baixo e receber atualizações pendentes assim que voltarem on-line.Ainda assim, não há mágicas - se as atualizações conflitantes forem emitidas em diferentes servidores ou réplicas desatualizadas são usadas para gerar novos dados, os problemas de consistência surgirão em qualquer arquitetura que você selecionar.

Uma segunda questão é que para cada escrita local, você receberá o N-1 Remote Write e seus servidores poderão gastar muito tempo e largura de banda debatendo quem tem o recorde mais recente.

Eu sugiro fortemente que você dispare algumas instâncias EC2 e jogue com sua conectividade para verificar se tudo funciona do jeito que você espera.Esta parece estar na área "Creative Ubuse" e sua quilometragem pode variar descontroladamente, se você conseguir algum.

.

seria importante que cada servidor seja capaz de ser atualizado com o estado atual se ele estiver offline por qualquer período de tempo.

zookeeper O nó efêmero permite que você mantenha informações de presença para todos os nós do servidor.

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