DENO mongo 主集群发生变化时的 atlas 连接问题

DENO mongo atlas connection issue when primary cluster is changing

如 deno.land/x/mongo 中所写,要连接到 mongo Atlas,应该使用这样的配置:

import { MongoClient } from "https://deno.land/x/mongo@v0.21.0/mod.ts";
    
    const client1 = new MongoClient();
    
    await client.connect({
    db: "<db>",
    tls: true,
    servers: [
      { 
        host: "<host>",
        port: 27017,
      },
    ],
    credential: {
      username: "<user>",
      password: "<password>",
      db: "<db>",
      mechanism: "SCRAM-SHA-1",
    },
  });
    
 const db = client1.database("TestingDB");
    
 export default db;

那里,<host>应该被一个特定的集群地址替换(看起来像这样:cluster0.hmdnu.mongodb.net)而不是一个完整的字符串,如 mongodb+srv://user1:MYPASSWORD@cluster0.hmdnu.mongodb.net/TestingDB?retryWrites=true&w=majority.

这个解决方案效果很好。但我认为有一个缺点:有时,Mongo 集群可能会失败,而辅助集群可能会成为主要集群。如果我们在我们的代码上使用了一个特定的集群,那个集群可能会宕机,我们的程序也会宕机。有人遇到过类似的问题吗?你是怎么解决的?

添加更多集群

 servers: [
  { 
    host: "<host>", /*primary*/
    port: 27017,
  },
  { 
    host: "<host>", /*secondary*/
    port: 27017,
  },
  { 
    host: "<host>", /*secondary*/
    port: 27017,
  },
],