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,
},
],
如 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,
},
],