Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Menu Docs
Página inicial do Docs
/

Gerencie conexões com o Google Cloud

Você pode interagir com seus Atlas clusters usando Google Cloud Platform Functions e Google Cloud Platform Run.

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 de cliente 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. Para obter o melhor desempenho, siga estas diretrizes:

    1. Crie uma vez o objeto do cliente .

    2. Armazene o objeto para que sua função possa reutilizar o cliente 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 de Atlas de dez fragmentos, o driver se conecta a todas as trinta instânciasmongos por padrão. Você pode usar a opção srvMaxHosts 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, defina srvMaxHosts=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 o CIDR 0.0.0.0/0 permite o acesso de qualquer lugar. Essa configuração pode expor seu sistema ao acesso não autorizado, exfiltração de dados e outras atividades maliciosas. Restrinja o acesso a endereços IP confiáveis ou faixas CIDR sempre que possível, e use credenciais fortes para todos os usuários do banco de dados ao permitir o acesso da Internet pública.

    Observação

    Se você adicionar o CIDR 0.0.0.0/0 a uma lista de acesso ao projeto, o Atlas enviará um e-mail de alerta para todos os usuários que receberam uma função diretamente no projeto ou receberam uma função indiretamente por meio da associação da equipe (se a equipe receber uma função no projeto).

  • Defina maxIdleTimeMS como 60000 para fechar automaticamente suas conexões após 1 minuto de tempo ocioso. Ajustar seu maxIdleTimeMS 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 Concorrência.

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;
}

Voltar

Azure Functions

Nesta página