簡體   English   中英

Mongoid首選讀取副本

[英]Mongoid preferred read replica

我正在構建地理冗余的MongoDB副本集,但是存在問題。 每次將查詢發送到數據庫時,顯然都會選擇一個隨機副本。

MOPED: x.x.x.0:p COMMAND      database=admin command={:ismaster=>1} runtime: 148.4439ms
MOPED: x.x.x.1:p COMMAND      database=admin command={:ismaster=>1} runtime: 150.5547ms
MOPED: x.x.x.2:p COMMAND      database=admin command={:ismaster=>1} runtime: 3.8707ms
MOPED: x.x.x.3:p COMMAND      database=admin command={:ismaster=>1} runtime: 289.3072ms

如您所見,第三個副本是最近的副本,因此從另一個副本中讀取數據會浪費時間,但這就是發生的情況:

MOPED: x.x.x.3:p QUERY        database=d collection=c selector={} flags=[:slave_ok] limit=-1 skip=0 batch_size=nil fields=nil runtime: 393.3878ms

所以問題是,我可以指定首選讀取的IP地址,還是僅告訴MOPED連接到最快的IP地址?

mongoid.yml文件現在指定所有4個副本:

  hosts:
    - x.x.x.0:p
    - x.x.x.1:p
    - x.x.x.2:p
    - x.x.x.3:p
  options:
    read: :secondary

一種選擇是僅手動設置原版和最近的副本:

  hosts:
    - x.x.x.0:p
    - x.x.x.2:p
  options:
    read: :secondary

但是我覺得這不是一個很好的解決方案,因為如果發生故障,可用性會受到影響。

弄清楚了,讀這篇文章: https : //github.com/mongoid/moped/blob/master/lib/moped/read_preference.rb您可以看到助力車支持從最近的副本中讀取,因此解決方案非常簡單,在mongoid中.yml:

hosts:
  - x.x.x.0:p
  - x.x.x.2:p
options:
  read: :nearest

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM