Proxy para servidor de banco de dados / conexão?

1

Estou vindo de uma perspectiva de desenvolvimento de aplicativos (meu trabalho diário) e não de infraestrutura, ou operações, perspectiva, por isso, se essa é uma pergunta completamente fútil, avise-me!

Temos proxies na frente dos nossos servidores de aplicativos e isso normalmente nos serviu bem. Esse proxy (hardware / software) fornece um terminal abstraído (além de outros serviços, como balanceamento de carga / distribuição) para que nossos clientes sempre saibam como se conectar.

Alguém tem alguma experiência em colocar um proxy entre os servidores de aplicativos e o banco de dados?

Parece que alguém precisa estar fazendo isso, especialmente no provedor de hospedagem, ou no espaço da nuvem, mas quando falo com nossas equipes de infra-estrutura (empresarial), elas apenas dizem "não", embora eu ainda esteja lutando para entender < strong> why .

Eu não entendo se, devido à camada extra de abstração na frente do banco de dados, isso causa problemas funcionais ou de desempenho, ou simplesmente dificulta a resolução de problemas quando as coisas dão errado.

Alguém pode compartilhar pensamentos, experiências ou recursos nessa área? Eu agradeceria muito!

Obrigado!

Z

    
por Zach Bonham 23.09.2010 / 20:35

3 respostas

2

Eu também gosto da ideia de DNS da TomTom. TTLs curtos e isso é mais fácil do que você imagina.

Mas você certamente pode executar um proxy na frente de seus bancos de dados. SQLProxy e HAProxy podem fazer isso, por exemplo. Mas, novamente, se sua preocupação não é balancear a carga ou separar leituras e escritas, por que adicionar esse nível extra de latência (de e para o proxy) quando você poderia fazer isso com um CNAME - e eu acho que o argumento é o único seus caras do tipo Ops / Systems vão considerar.

    
por 23.09.2010 / 21:55
2

Principais problemas:

  • As conexões do banco de dados são muito mais persistentes entre os servidores de aplicativos e os back-ends, de modo que o balanceamento de carga é difícil.

  • Os proxies ouvem o protocolo. Existem toneladas de proxies HTTP lá. Tente obter um, por exemplo, o protocolo do SQL Server. Não há necessidade, não há mercado - nenhum produto.

  • Finalmente, embora o que os SQL Servers sejam, o armazenamento em cache não é possível. Não sem um protocolo para invalidar resultados, etc., e isso não faz parte de nenhuma implementação SQL. Nenhuma tag "se modificada desde". Portanto, você não ganharia nada nem lidaria com dados desatualizados - ambos não aceitáveis nessa camada.

por 23.09.2010 / 20:43
1

Eu percebo que esta é uma pergunta antiga, mas neste momento há pelo menos alguns produtos de banco de dados decentes para escolher. Isto é, se você estiver usando o MariaDB ou o MySQL:

  • MaxScale , afirma ser o proxy de banco de dados mais avançado do mundo
  • ProxySQL , que possui muitos dos recursos encontrados no MaxScale

Eu só tenho experiência com o MaxScale, o que eu sinto que posso recomendar neste momento. MaxScale funciona muito bem, por ex. com aglomerados Galera. Demorou um pouco para amadurecer, talvez porque seja um conceito relativamente novo desenvolvido do zero e esteja resolvendo alguns problemas não triviais.

Deve-se notar que o MaxScale tem uma licença especial não-aberta - BSL. (ProxySQL, por outro lado, está licenciado sob a GPL.)

Eu também poderia mencionar o HAProxy que não é um proxy que reconhece o banco de dados, mas que tem sido amplamente usado com sucesso como um proxy de banco de dados para MariaDB / MySQL e PostgreSQL.

    
por 29.01.2018 / 18:50