Docs 菜单
Docs 主页
/
MongoDB Atlas
/

使用 Google Cloud 管理连接

在此页面上

  • 最佳实践
  • Google Cloud 连接示例

您可以使用 Google Cloud Functions 与 Atlas 集群进行交互 和 Google Cloud Run。

使用以下最佳实践正确管理 Google Cloud 函数和 Atlas 之间的连接:

  • 使用全局范围的数据库连接而不是函数范围的数据库连接创建 Cloud Function。

    请勿在每次调用函数时都定义一个新的 MongoClient 对象。如果这样做,则驱动程序每次函数调用都会创建新的数据库连接。这种方式的成本很高,并可能导致应用程序超过数据库连接限制。在定义新的 MongoClient 时,您应当:

    1. 创建一次 MongoClient 对象。

    2. 存储此对象,以便函数可以在函数调用之间重复使用 MongoClient

    连接示例重复使用现有数据库连接来加快与数据库的通信,并将数据库连接计数保持在相对于应用程序流量的合理水平。

    如果您有一个函数连接到具有许多分片的分片集群,则可能会遇到性能问题。例如,对于具有 10 个分片的 Atlas 集群,驱动程序默认连接到所有 30 个mongos实例。您可以在连接字符串中使用srvMaxHosts选项来设置驱动程序连接到的主机的最大数量。要提高驱动程序性能,请设置srvMaxHosts=3 。例如:

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

    要了解更多信息,请参阅连接选项。

  • 限制对 Atlas 集群的网络访问。

    使用 Atlas 集群和 Google Cloud 函数之间的网络对等连接,或者私有端点,通过私有网络连接到 Atlas 集群,这样您就可以只允许IP 访问列表中的私有 IP 地址。

    如果不使用私有网络,请考虑通过 NAT 网关 连接到 Atlas 集群 。否则,您必须允许所有 IP 地址(0 .0 .0 .0 /0 )访问您的 Atlas 集群。

    警告

    0.0.0.0/0添加到您的 IP 访问列表中,这允许从公共互联网中的任何位置访问集群。在允许从任何位置进行访问时,请确保对所有数据库用户使用强式档案。

  • maxIdleTimeMS设置为60000 ,可在1分钟的空闲时间后自动关闭连接。调整maxIdleTimeMS有助于减少无服务器函数发生超时错误的概率。

  • 配置并发。创建新的 Google Cloud 函数时:

    • 选择 2nd gen环境,它可以处理多个并发请求。 第 2 代还允许函数与许多并发调用共享单个MongoClient ,从而减少了服务器上的连接负载。

    • 增加并发设置以最大限度地减少冷启动并改善延迟。

    注意

    如果增加并发设置,则可能需要增加 CPU 才能获得最佳性能。要了解更多信息,请参阅 并发。

以下示例将 Node.js Google Cloud 函数连接到 Atlas 部署。将<YOUR-ATLAS-CONNECTION-STRING>替换为 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;
}
← 使用 Azure Functions 管理连接