gpt4 book ai didi

ruby-on-rails - MongoDB:不同的应用程序连接到不同的副本

转载 作者:搜寻专家 更新时间:2023-10-30 22:34:25 26 4
gpt4 key购买 nike

我们使用 Mongodb 作为我们应用程序的中央数据库;面向消费者的移动应用程序。目前它是一个 7 成员的副本集,此时 replica-set-1 是 master。连接到 mongo 副本的后端是用 Ruby on Rails 构建的,我们使用 mongoid 作为 ODM。

主要有 3 个部分连接到 MongoDB 副本集。

  1. 消费者应用
  2. 管理员和客户服务管理应用
  3. 数据检索应用程序(用于分析等目的)

所有这 3 个应用程序现在都连接到同一个副本集。

我想知道的是是否可以将不同的应用程序连接到特定的副本。

For example, the mobile app connects to the primary for writes and the replicas 2-4 
to read; the customer care management application connects to the primary
( for writes ) and replicas 5-7 for reads.

我不认为在 mongoid.yml 配置中明确提及特定副本是有效的。尽管我已经在数据检索应用程序的 mongoid 主机文件中仅提到了 replica-set-7,但我确实在 replica-set-2 和 3 的日志文件中看到了某些查询。

很明显,MongoDB 决定了在其副本之间分发查询的标准,尽管在客户端 mongoid 端指定了配置。

我真的很想知道使用 MongoDb 和 mongoid 是否可以实现这样的事情,因为它可以帮助我们解决很多负载问题。现在来自客户服务和数据检索应用程序的大量查询也会影响面向消费者的移动应用程序;因为读取没有分离。所以基本上想把读数分开。

此外,如果这一切都是可能的,我会再次关注这方面可能存在的任何陷阱;特别是所有 3 个应用程序都可以写入数据库。例如,replica-3 在一次选举后突然成为主副本,并且它没有在数据检索应用程序的配置中明确提及。那里可能发生的事情会成为一个问题。

我完全不确定这是否可能;但只是想知道是否有办法解决这个问题。任何帮助都会非常可观。

最佳答案

当您连接到副本集的任何成员时,客户端会被告知副本集的完整状态,并且可以连接到其中任何一个。初始主机集只是该进程的种子——只要您的应用程序可以到达其中一台主机,该配置中的主机并不重要。

Mongo确实有tagged replica set members的概念.创建连接或执行查询时,您可以指定用于选择要读取的副本集成员的标签。

关于ruby-on-rails - MongoDB:不同的应用程序连接到不同的副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39115862/

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