Mongo 副本集负载管理

Mongo replica sets load management

目前我有两个使用 mongo 副本集的节点应用程序(1 个主节点和 6 个辅助节点)。目前,一个应用程序的读取查询会导致 mongo 负载并影响另一个应用程序的性能。因此,我想划分次要节点,以便 1 个应用程序使用主要成员和 4 个次要成员,而另一个应用程序使用主要成员和其他 2 个次要成员。我不希望一个应用程序的负载影响另一个应用程序。我如何实现相同的目标?

您可以为每个应用程序设置不同的标签,并根据定义的标签从 SECONDARY 成员中读取,例如:

app1--> db.collection.find({}).readPref( "secondary", [ { "app": "app1" } ] )
app2--> db.collection.find({}).readPref( "secondary", [ { "app": "app2" } ] )

你的replicaSet是否如下:

{
"_id" : "myrs",
"version" : 2,
"members" : [
         {
                 "_id" : 0,
                 "host" : "host1:27017",
                 "tags" : {
                         "app": "app1"
                 }
         }, {
                 "_id" : 1,
                 "host" : "host2:27017",
                 "tags" : {
                         "app": "app1"
                 }
         }, {
                 "_id" : 2,
                 "host" : "host3:27017",
                 "tags" : {
                         "app": "app1"
                 }
         },  {
                 "_id" : 3,
                 "host" : "host4:27017",
                 "tags" : {
                         "app": "app2"

                 }
         },  {
                 "_id" : 4,
                 "host" : "host4:27017",
                 "tags" : {
                         "app": "app2"

                 }
         }           
]
}

如何添加标签:

conf = rs.conf();
conf.members[0].tags = { "app": "app1" };
conf.members[1].tags = { "app": "app1" };
conf.members[2].tags = { "app": "app2" };
conf.members[3].tags = { "app": "app2" };
conf.members[4].tags = { "app": "app2" };
rs.reconfig(conf);