2

我有一个基于 ruby​​ on rails 的应用程序。目标是从一个 mongo 副本集成员中读取:

  1. secondary
  2. delayed by x seconds
  3. priority: 0
  4. 放置在单独的数据中心。

DETAILS:我有一个使用 mongo 副本集的生产集群正在运行。

以前,有人注意到,有时 Moped 从其他具有高延迟的辅助节点(远程存在于其他数据中心)而不是从所需的辅助节点读取。为了解决同样的问题,我们在远程辅助节点上添加了延迟。

现在我有一个使用 mongoid 的新分析应用程序。有没有一种方法可以强制使用 mongoid 或任何其他 gem 从 SPECIFIC 二级读取?即有没有办法覆盖 Mongoid / Moped / MongoDB 中的自动发现功能?请建议

4

1 回答 1

1

您可以使用 tag_sets。在Mongoid 配置文档中,您可以看到,在“读取”设置下,您可以指定分配给要显式读取的辅助节点的 tag_set:

# Change the default read preference. Valid options for mode are: :secondary,
# :secondary_preferred, :primary, :primary_preferred, :nearest
# (default: primary)
    read: 
        mode: :secondary_preferred
        tag_sets:
            - use: web

您在副本集中配置 tag_sets 的方式记录在此处

我希望这可以帮助你。这是一个非常先进和强大的功能,不是每个人都知道如何使用。

于 2016-07-19T20:33:32.177 回答