Gerencie conexões com o Google Cloud
Você pode interagir com seus Atlas clusters usando GCP Funções e GCP Run.
Melhores práticas
Use as seguintes melhores práticas para gerenciar adequadamente as conexões entre as funções do Google Cloud Platform e o Atlas:
Crie uma função de nuvem com conexão a um banco de dados com escopo global, não com conexão a um banco de dados com escopo de função.
Não defina um novo objeto
MongoClient
sempre que invocar a sua função. Isso faz com que o driver crie uma nova conexão de banco de dados com cada chamada de função. Isso pode ser caro e resultar em um aplicativo que exceda os limites de conexão do banco de dados. Ao definir um novoMongoClient
, você deve:Crie uma vez o objeto
MongoClient
.Armazene o objeto para que sua função possa reutilizar o
MongoClient
em invocações de função.
O Exemplo de conexão reutiliza as conexões de banco de dados existentes para acelerar a comunicação com o banco de dados e manter as contagens de conexão com o banco de dados em um nível razoável em relação ao tráfego do aplicativo.
Se você tiver uma função que se conecta a um cluster fragmentado com muitos fragmentos, poderá enfrentar problemas de desempenho. Por exemplo, com um cluster do Atlas de dez fragmentos, o driver se conecta a todas as trinta instâncias
mongos
por padrão. Você pode usar a opçãosrvMaxHosts
em sua string de conexão para definir o número máximo de hosts aos quais o driver se conecta. Para melhorar o desempenho do driver, definasrvMaxHosts=3
. Por exemplo:mongodb+srv://<db_username>:<db_password>@<clusterName>.mongodb.net/?retryWrites=true&w=majority&srvMaxHosts=3 Para saber mais, consulte Opções de conexão.
Restringir o acesso à rede ao seu Atlas cluster.
Conecte-se ao Atlas cluster por meio de rede privada usando umaconexão de peering de rede entre o cluster Atlas e a função GCP ou, alternativamente, um endpoint privado, para que você possa permitir apenas endereços IP privados da sua lista de acessoIP .
Se você não usa rede privada, considere conectar-se ao cluster do Atlas por meio de um gateway NAT. Caso contrário, você deve permitir que todos os IPs (0.0.0.0/0) acessem seu cluster do Atlas.
Aviso
Adicionar
0.0.0.0/0
à sua lista de acesso IP permite o acesso ao cluster de qualquer lugar na Internet pública. Certifique-se de usar credenciais fortes para todos os utilizadores de banco de dados ao permitir o acesso de qualquer lugar.
Defina maxIdleTimeMS como
60000
para fechar automaticamente suas conexões após 1 minuto de tempo ocioso. Ajustar seumaxIdleTimeMS
pode ajudar a reduzir a ocorrência de erros de tempo limite nas suas funções sem servidor.
Configure Simultaneidade. Quando você cria uma nova função do Google Cloud:
Selecione o ambiente do 2nd gen , que pode lidar com várias solicitações simultâneas. A 2a geração também reduz a carga de conexão no servidor ao permitir que a função compartilhe um único
MongoClient
com muitas invocações simultâneas.Aumentar a configuração de simultaneidade para minimizar inicializações a frio e melhorar a latência.
Observação
Se você aumentar a configuração de simultaneidade, talvez seja necessário aumentar a CPU para obter o melhor desempenho. Para saber mais, consulte Simultaneidade.
Exemplo de conexão com o Google Cloud
O exemplo a seguir conecta uma função Node.js Google Cloud a uma implantação do Atlas. Substitua <YOUR-ATLAS-CONNECTION-STRING>
por sua string de conexão do Atlas.
const { MongoClient } = require('mongodb'); let client; async function getConnection() { if (!client) { const client = new MongoClient('<YOUR-ATLAS-CONNECTION-STRING>'); client.on('connectionCreated', () => { console.log('New connection created successfully.'); }); // Connect to the database in the global scope await client.connect(); } return client; }