整个副本读我想了解的行为在MongoDB中的副本集读取。特别是我有一个读取速度快,写入速度低,数据量相对较小(比如小于8GB)的环境。我有一个3节点副本集。分布在MongoDB中
我阅读本文件:
http://docs.mongodb.org/manual/core/read-preference/
特别是:
主默认模式。所有操作都从当前副本集中读取。
primaryPreferred在大多数情况下,操作从初级读取,但如果它是不可用的,操作从次要部件读出。
次级所有操作从副本集的次要部件读出。
secondaryPreferred在大多数情况下,操作从次要构件读取但如果没有二次部件是可用的,操作从初级读取。
最近的操作从副本集的最近的构件读取,而不论该成员的类型的。
所以我的理解是,默认读取转到主要。有阅读偏好设置,允许从中读取(secondary
和secondaryPreferred
)。在这些情况下,可能会提供陈旧的数据。
在我看来,最好是将读数分布在主机和辅助机器上,这样我可以在所有3台机器上最好地使用它。但我并不认为这是一种选择。尤其是下面的语句困扰我:
如果读操作占了你的应用程序的流量的很大比例,分配读取二次会员可以提高读取吞吐量。但是,在大多数情况下,分片可以为更大规模的操作提供更好的支持,因为集群可以在一组机器上分配读写操作。
但是,在数据集相对较小的情况下,分片根本没有意义。有人可以阐明正确的配置吗?
为什么你想分配读取到辅助?这听起来像主要可能能够满足您的需求就好了。 –
是什么让你觉得呢?它能够每秒处理1K查询(显然具有低延迟)?每秒10K查询呢?无论我的流量负载如何,在某一点上,一台机器无法处理它,然后我想要在整个机器上分配流量。 – Kevin
当然,我测试过可以处理30K读/秒的系统。您扩展或分发的方式不是通过辅助,而是通过分片。 –