1.mongodb的五种读取偏好
该读取偏好通常通过应用程序在连接时设置。
mongodb支持以下读取偏好。
Primary:默认模式,所有的读取请求都路由到主节点。
primaryPreferred:优先从主节点去取,主节点不可用时从辅助节点读取。
secondary:从辅助成员读取。
SecondaryPreferred:优先从辅助节点读取,辅助节点不可用从主节点读取。
nearest:从最近的副本集成员读取。
2.通过读取偏好,可以实现读写分离,降低主节点的压力。
java实现如下
const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb://localhost:27017,localhost:27018,localhost:27019/?replicaSet=rs0";
const client = new MongoClient(uri);
async function run() {
try {
await client.connect();
const db = client.db('myDatabase');
const collection = db.collection('myCollection');
// 设置为只从主节点读取
const primaryReadPreference = collection.withReadPreference('primary');
// 设置为主节点优先,如果主节点不可用则从从节点读取
const primaryPreferredReadPreference = collection.withReadPreference('primaryPreferred');
// 设置为只从从节点读取
const secondaryReadPreference = collection.withReadPreference('secondary');
// 设置为从节点优先,如果没有从节点可读则读取主节点
const secondaryPreferredReadPreference = collection.withReadPreference('secondaryPreferred');
// 设置为按网络延迟读取
const nearestReadPreference = collection.withReadPreference('nearest');
// 从设置的偏好读取数据
const result = await primaryReadPreference.find({}).toArray();
console.log(result);
} finally {
await client.close();
}
}
run().catch(console.dir);