Docs Menu
Docs Home
/

Administrar conexiones con Google Cloud

You can interact with your Atlas clusters by using Funciones de Google Cloud and Google Cloud Run.

Utilice las siguientes prácticas recomendadas para administrar correctamente las conexiones entre las funciones de Google Cloud y Atlas:

  • Cree su función en la nube con una conexión de base de datos de alcance global en lugar de una conexión de base de datos de alcance de función.

    No definas una nueva MongoClient objeto cada vez que invoca su función. Esto hace que el controlador cree una nueva conexión a la base de datos con cada llamada a la función. Esto puede ser costoso y provocar que su aplicación exceda los límites de conexión a la base de datos. Al definir un nuevo MongoClient, debe:

    1. Crea el objeto MongoClient una vez.

    2. Se debe almacenar el objeto para que la función pueda reutilizar el MongoClient entre invocaciones de funciones.

    El ejemplo de conexión reutiliza las conexiones de base de datos existentes para acelerar la comunicación con la base de datos y mantener los recuentos de conexiones a la base de datos en un nivel razonable con respecto al tráfico de la aplicación.

    Si tiene una función que se conecta a un clúster fragmentado con muchos fragmentos, podría experimentar problemas de rendimiento. Por ejemplo, con un clúster Atlas de diez fragmentos, el controlador se conecta a las treinta instancias de forma predeterminada. Puede usar mongos la srvMaxHosts opción en su cadena de conexión para establecer el número máximo de hosts a los que se conecta el controlador. Para mejorar el rendimiento del controlador,srvMaxHosts=3 configure. Por ejemplo:

    mongodb+srv://<db_username>:<db_password>@<clusterName>.mongodb.net/?retryWrites=true&w=majority&srvMaxHosts=3

    Para obtener más información, consulta Opciones de conexión.

  • Se debe restringir el acceso a la red al clúster de Atlas.

    Conéctese a su clúster Atlas a través de una red privada utilizando un Network Peering connection between your Atlas cluster and your Google Cloud function, or, alternatively, a private endpoint, so that you can allow only private IP addresses from your IP access list.

    Si no utiliza una red privada, considere conectarse a su clúster Atlas mediante una puerta de enlace NAT. De lo contrario, debe permitir que todas las direcciones IP (,,,0 0000/) accedan a su clúster Atlas.

    Advertencia

    Agregar 0.0.0.0/0 a la lista de acceso IP permite el acceso al clúster desde cualquier lugar de la internet pública. Hay que garantizar estar usando credenciales fuertes para todos los usuarios de base de datos cuando se permita el acceso desde cualquier lugar.

    Nota

    Si se añade el CIDR 0.0.0.0/0 a la lista de acceso de un proyecto, Atlas envía un correo electrónico de alerta a todos los usuarios a los que se les haya otorgado un rol en el proyecto de forma directa o indirecta a través de la pertenencia al equipo (si al equipo se le otorga un rol en el proyecto).

  • Establecer maxIdleTimeMS en 60000 para cerrar automáticamente las conexiones después de 1 minuto de inactividad. Ajustar maxIdleTimeMS puede ayudar a reducir la ocurrencia de errores de tiempo de espera en las funciones sin servidor.

  • Configurar la simultaneidad. Al crear una nueva función de Google Cloud:

    • Seleccione el 2nd gen environment, which can handle multiple concurrent requests. 2nd gen also reduces the connection load on the server by allowing the function to share a single MongoClient with many concurrent invocations.

    • Aumente la configuración de concurrencia para minimizar los inicios en frío y mejorar la latencia.

    Nota

    Si aumenta la configuración de concurrencia, es posible que deba aumentar la CPU para obtener el mejor rendimiento. Para obtener más información, consulte Concurrencia.

El siguiente ejemplo conecta una función de Google Cloud de Node.js a una implementación de Atlas. Reemplace <YOUR-ATLAS-CONNECTION-STRING> con su cadena de conexión de 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;
}

Volver

Funciones Azure

En esta página