gpt4 book ai didi

node.js - 如何防止 MongoDB 副本集查询主副本集?

转载 作者:太空宇宙 更新时间:2023-11-04 00:39:09 24 4
gpt4 key购买 nike

仅读取操作:

有没有办法拥有一个 MongoDB 副本集,但要使连接到的机器上的 MongoDB 实例成为被查询的 MongoDB?

我在 AWS 负载均衡器后面有三个 EC2 实例。

每个 EC2 实例上都运行 MongoDB,它是副本集的一部分。

我在 NodeJS 上有快速端点,并且按如下方式连接到副本集

 mongodb.MongoClient.connect('mongodb://1.1.1.1,2.2.2.2,3.3.3.3.',
function (err, db)
{
if (err)
{
complete('{}');
}
else
{

我希望将查询负载均匀分布在 MongoDB 副本集的所有三个实例上,而不是默认将所有查询路由到定义主 MongoDB 的 EC2 实例,因为这会破坏负载均衡器的要点(即均匀平衡所有三个实例之间的查询负载)。

我的理解是,当连接到 MongoDB 副本集时,除非主实例已关闭,否则始终会选择主实例,因此每个辅助实例的目的只是作为备份。

在我的例子中,有些人会称之为“热”、“冷”、“冷”。因为有两个实例从未被使用过。

我希望查询负载均匀分布的原因是我的设置可以是WARM、WARM、WARM。

将来当用户数量增加时,为了保持查询性能最佳,我可以在负载均衡器后面添加更多 EC2 实例,以提高查询性能。

当数据增长时,单个实例变得太慢而无法按时返回数据,这时我会将每个实例分片到其他 EC2 实例中。

注意:我希望每个 EC2 实例的源代码都相同。我正在使用 git,我想轻松地将源代码推送和拉取到我的副本集中的每个实例。

最佳答案

您想使用ReadPreference ,这将允许您将读取请求定向到辅助 Node 。 MongoDB node.js 驱动程序的示例代码可以参见 here .

mongodb.MongoClient.connect('mongodb://1.1.1.1,2.2.2.2,3.3.3.3./?readPreference=secondary', ...

关于node.js - 如何防止 MongoDB 副本集查询主副本集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37619983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com