Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

[VAZA]

Plano de contingência (Servidor/Clientes)

Recommended Posts

Pessoal...

 

Eu possuo um cliente que possui 10 lojas com meu sistema instalado...e essas 10 lojas acessam uma unica base via SOAP...

funciona tudo direitinho e tal...

 

Mas acontece de que em algumas lojas a conexão com a internet é lenta ou cai toda hora...e eu preciso oferecer um plano de contigência para meus clientes que, caso a internet cair, ele continue fazendo as vendas normalmente e usando o sistema...

como se os clientes tivessem uma base local sei lá...para q se a internet cair, ele consiga visualizar todos os registros da base, inserir e atualizar novos.

Mas quando a net voltasse, atualizasse a base no servidor.

 

Qual a melhor forma de fazer isso? alguém já teve experiência com esse problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu também tinha estes problemas.

 

Resolvi fazendo inserções simultâneas, tanto no servidor local quanto no principal, mas caso não haja comunicação com o principal, há uma aplicação dedicada que faz swap entre os servidores, que fica constantemente enviando os dados dos servidores locais para o servidor principal dos dados que não foram inseridos em tempo real, mas claro que antes de enviar, precisa analisar várias informações pra não duplicar dados nem tampouco deixar de envia-los.

 

Também sei que é possível criar servidor slave no mysql, mas nunca utilizei esse rescurso e não sei como utilizar.

 

Valewww...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que ficar fazendo inserções/atualizações simultaneas é complicado...

O meu maior medo é duplicidade, falha de constraints...etc

 

O que eu tava pensando, é em colocar na minha aplicação, que caso não detecte a internet ou reconheça q ela esta muito lenta, gravar as vendas em um arquivo XML e depois passar tudo para o servidor quando a net voltasse....

E criar um programa que possibilite todos os dias de manhã ou final de expediente os clientes ficarem salvando as alterações de todos os dados em arquivos XML no cliente..pra quando for fazer a venda e tiver sem net, puxar os dados dos xml atualizado...

 

O que acham dessa solução?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Num vejo complicação em fazer a simultaneidade não cara!

 

Só vai te dar um pouco mais de trabalho pra deixar tudo redondinho, inclusive criando muitas exceptios pra evitar bug.

 

Pra resolver seu problema de duplicidade, basta você criar um flag como campoflag=0 se não enviado, campoflag=1 se enviado.

 

Sua aplicação, portanto, somente olharia para os flags.

 

1 - Tento enviar o dado em tempo real.

deu certo? não precisa fazer nada.

deu errado? flaga o campo com 0 (zero).

 

Dai sua aplicação dedicada fica tentando enviar esse dado para o servidor principal. Quando ele conseguir, muda o flag para 1 (um).

 

Muito simples e mantém os dados atualizados constantemente sem precisar de esperar fim ou início de dia pra atualizar.

 

Valewww...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok...

 

existe um tipo de tabela chamado FEDERATED (como tem InnoDB ou MyISAM) esse tipo de tabela eh uma tabela vinculada entre dois servidores de MySQL.

 

basicamente você ingressa os dados em ambas as tabelas ( a local e a federated) o tempo todo, sendo ambas identicas.

 

Tendo em mente as chaves de ambas as tabelas (q sao identicas) q impeçam a duplicaçao, você todo dia de manha(como você sugeriu) faz um

 

insert ignore into tab_vinculada select * from tab_local

 

mantendo assim sempre as duas tabelas atualizadas.

 

Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Giesta...

 

Nunca tive oportunidade de utilizar tabelas FEDERATED, mas, pelo que li, não vi nada relacionado com os casos em que a conexão estiver off-line. Neste tipo de situação ele armazena local e depois volta a comunicar-se automaticamente com o servidor principal?

 

No site do MySQL não vi nada que falasse explicitamente sobre este tipo de situação.

 

Aguardo retorno.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E eu falei alguma coisa disso?

 

Eu falei q era possivel vincular tabelas de servidores remotos no servidor local.

 

Sendo assim você possui duas tabelas identicas uma no servidor local e outra no servidor remoto (q esta vinculada ao servidor local).

Ou até mesmo banco(na verdade todas as tabelas, pois nao da pra vincular o banco em si) identicos um local e um remoto vinculado caso isso seja necessario

 

Todo insert ocorre nas duas tabelas ( a remota e a local) .

 

Caso a remota nao esteja disponivel, beleza ele salvou na local.

 

Caso a remota esteja disponivel, apos o insert normal ele faz um select na local nos registros dos ultimos 7 dias por exemplo e tenta inserir (insert ignore) na tabela remota. Tendo em mente chaves que impeçam duplicaçao e inconsistencias , esse tipo de coisa funciona bem direitinho, ainda mais pro tipo de sistema q foi proposto (sistema de loja)

Compartilhar este post


Link para o post
Compartilhar em outros sites

e no caso de duas bases locais sem net criarem ids iguais?

Compartilhar este post


Link para o post
Compartilhar em outros sites

no meu sistema hipotetico nesse caso isso nao acontece pois quem gera a chave seria o sistema e nao o banco

 

as chaves sao BIGINT(20)

CONCAT(DATE_FORMAT(now(),'%Y%m%d%H%i%s'),$localidade,RIGHt(rand(),4))

 

ou seja se duas pessoas na mesma localidade (base operacional)(00 a 99) cadastrarem alguma coisa no mesmo segundo existe 0,1% de chance do sistema gritar

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.