资讯专栏INFORMATION COLUMN

Golang mgo驱动指定Mongo服务器读取

rollback / 453人阅读

摘要:搭建服务器采用搭建,可参考读模式的读模式共有五种在主节点上进行所有的读操作优先在主节点上进行读操作,如果主节点不可用,再从从节点操作。

Replica Sets搭建

服务器采用Replica Sets搭建,可参考Deploy a Replica Set

读模式

Mongod的读模式共有五种:

primary. 在主节点上进行所有的读操作

primaryPreferred. 优先在主节点上进行读操作,如果主节点不可用,再从从节点操作。

secondary.所有的读操作在从节点上进行。

secondaryPreferred.优先在从节点进行读操作,如果所有从节点都不可用,再从主节点操作。

nearest. 根据网络延迟时间 ,就近进行读操作,不考虑节点类型。

配置节点Tags Sets

Tag sets 允许指定一个replica set进行读操作,其中Mongod的读模式必须是以下四种之一:
primaryPreferredsecondarysecondaryPreferrednearest
Tags Sets配置参考:Configure Replica Set Tag Sets
主要操作如下:

conf = rs.conf()
conf.members[0].tags = { "dc": "east", "use": "production"  }
conf.members[1].tags = { "dc": "east", "use": "reporting"  }
conf.members[2].tags = { "use": "production"  }
rs.reconfig(conf)
mgo代码示例

根据以上的配置,如果需要指定从members 1中进行数据库读操作,可采取以下代码:

session, err := mgo.Dial("localhost")
if err != nil {
    log.Fatalln(err)
}
defer session.Close()
session.SetMode(mgo.Eventual, true) //需要指定为Eventual
session.SelectServers(bson.D{{"dc", "east"}, {"use", "reporting"}}) // 指定从1中读取
db := session.DB("test")
col := db.C("tbl")
data := make([]interface{}, 10)
col.Find(nil).Limit(10).All(&data)
log.Println(data)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/18714.html

相关文章

  • golang基础学习-MongoDB使用

    摘要:如果删除所有用替换其他写了一个和结合的数据查询服务细节可点击链接到查看 1.系统环境 Golang:go version go1.10.3 darwin/amd64 OS:MacOS MongoDB: version: 3.4.4 2.Golang使用MongoDB 使用:gopkg.in/mgo.v2 获取包:go get gopkg.in/mgo.v2 引入:impor...

    LinkedME2016 评论0 收藏0
  • 用Go语言借助mgo实现一个对MongoDB进行增删改查的demo

    摘要:准备数据结构这个以对一个简单的通讯录进行插入查询更新删除记录为例,中包含和两个字段下载还没出官方的驱动包,是现在比较流行的第三方包,能找到的相关资料也比较多。准备实现对的增删改查操作,先想了下怎么写测试案例。查找,通过查找该条记录。 环境声明:go version go1.11MongoDB server version 4.0.3 背景 这是我第一次接触golang和MongoDB,...

    Jingbin_ 评论0 收藏0
  • Golang服务教程(三)

    摘要:本节将学习来统一管理和部署微服务,引入第三个微服务并进行存储数据。到目前为止,要想启动微服务的容器,均在其中的同时设置其环境变量,服务多了以后管理起来十分麻烦。 译文链接:wuYin/blog原文链接:ewanvalentine.io,翻译已获作者 Ewan Valentine 授权。 本文完整代码:GitHub 在上节中,我们使用 go-micro 重新实现了微服务并进行了 Doc...

    Drummor 评论0 收藏0
  • golang -- mgo解析各种数据类型分析

    摘要:无法打开和都是,也就是说它们可以指向任意类型,此时是指向结构的指针是具体此时是指针,指向的类型是会把当成对待所有域的信息都会输出来此时是指向结构的指针只有确定了类型后,才会当成具体类型只有确定了类型后,才会当成具体类型输出结果如下 package main import ( gopkg.in/mgo.v2 log reflect ) func main() ...

    xcold 评论0 收藏0
  • 利用mongo的findAndModify原子性操作实现auto increment ID

    摘要:实际情况默认情况下,使用自动生成,而且在自带的命令里,无法指定一个自增字段。自增字段在多线程时必须是原子性的,这在大数据情况下很难实现伸缩性。而且,在里面,有一个命令是原子性的。代码如下无法打开创建个模拟多线程环境输出查询结果 实际情况 默认情况下,mongo使用_id自动生成uniq id,而且在mongo自带的命令里,无法指定一个自增字段。自增字段在多线程时必须是原子性的,这在大数...

    genedna 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<