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

Administrar conexiones con Google Cloud

Puedes interactuar con tus clústeres de Atlas usando Funciones de Google Cloud y Google Cloud Run.

Utiliza las siguientes mejores prácticas para gestionar adecuadamente las conexiones entre las funciones de Google Cloud y Atlas:

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

    No defina un nuevo objeto cliente cada vez que invoque su función. Si lo hace, el controlador creará una nueva conexión a la base de datos con cada llamada a la función. Esto puede resultar costoso y provocar que su aplicación supere los límites de conexiones a la base de datos. Para obtener el mejor rendimiento, siga estas recomendaciones:

    1. Cree el objeto cliente una vez.

    2. Almacena el objeto para que tu función pueda reutilizar el cliente entre invocaciones de la función.

    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 el número de conexiones con la base de datos en un nivel razonable con respecto al tráfico de la aplicación.

    Si tienes una función que se conecta a un clúster con muchas particiones, es posible que experimentes problemas de rendimiento. Por ejemplo, con un clúster Atlas de diez particiones, el driver se conecta a los 30 mongosinstancias por defecto. Puede usar la opción srvMaxHosts 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, establezca srvMaxHosts=3. 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éctate a tu clúster de Atlas a través de una red privada utilizando un conexión peering de red entre tu clúster de Atlas y tu función de Google Cloud, o, alternativamente, un nodo privado, para que puedas permitir sólo direcciones IP privadas desde tu lista de acceso IP.

    Si no utilizas la red privada, considera conectarte a tu clúster Atlas a través de un puerta de enlace NAT. De lo contrario, debe permitir que todas las direcciones IP (0.0.0.0/0) 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.

  • Configura la simultaneidad. Cuando creas una nueva función de Google Cloud:

    • Selecciona el 2nd gen un entorno que puede gestionar varias solicitudes simultáneas La 2.ª generación también reduce la carga de conexión en el servidor al permitir que la función comparta un solo MongoClient con muchas llamadas simultáneas.

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

    Nota

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

El siguiente ejemplo conecta una función de Google Cloud Node.js a una implementación de Atlas. Sustituye <YOUR-ATLAS-CONNECTION-STRING> por tu 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