Golang mgo驱动指定Mongo服务器读取
Replica Sets搭建
服务器采用Replica Sets搭建,可参考Deploy a Replica Set
读模式
Mongod的读模式共有五种:
- primary. 在主节点上进行所有的读操作
- primaryPreferred. 优先在主节点上进行读操作,如果主节点不可用,再从从节点操作。
- secondary.所有的读操作在从节点上进行。
- secondaryPreferred.优先在从节点进行读操作,如果所有从节点都不可用,再从主节点操作。
- nearest. 根据网络延迟时间 ,就近进行读操作,不考虑节点类型。
配置节点Tags Sets
Tag sets 允许指定一个replica set进行读操作,其中Mongod的读模式必须是以下四种之一:primaryPreferred
、secondary
、secondaryPreferred
、nearest
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)
icattlecoder
放牛的程序猿
推荐阅读
P2P分布式网络简史
ARPANET,中文称为阿帕网,一开始只是连接加州大学洛杉矶分校,斯坦福研究所,加州大学-圣塔芭芭拉和犹他大学,彼此间视为对等的计算机节点,而不非 C/S 结构。阿帕网为美国国防部高级研究计划署开发的世界上第一...
icattlecoder赞 1阅读 5.8k
硬卷完了!MongoDB 打怪升级进阶成神之路( 2023 最新版 )!
前面我们学习:MySQL 打怪升级进阶成神之路、Redis 打怪升级进阶成神之路,然后我们还在继续 NoSQL 的卷王之路。从第一篇文章开始,我们逐步详细介绍了 MogoDB 基础概念、安装和最基本的CURD操作、索引和聚合、工...
民工哥赞 6阅读 505
「刷起来」Go必看的进阶面试题详解
逃逸分析是Go语言中的一项重要优化技术,可以帮助程序减少内存分配和垃圾回收的开销,从而提高程序的性能。下面是一道涉及逃逸分析的面试题及其详解。
王中阳Go赞 4阅读 1.9k评论 1
初学后端,如何做好表结构设计?
这篇文章介绍了设计数据库表结构应该考虑的4个方面,还有优雅设计的6个原则,举了一个例子分享了我的设计思路,为了提高性能我们也要从多方面考虑缓存问题。
王中阳Go赞 4阅读 1.7k评论 2
滚蛋吧,正则表达式!
你是不是也有这样的操作,比如你需要使用「电子邮箱正则表达式」,首先想到的就是直接百度上搜索一个,然后采用 CV 大法神奇地接入到你的代码中?
良许赞 4阅读 2.3k
又一款眼前一亮的Linux终端工具!
今天给大家介绍一款最近发现的功能十分强大,颜值非常高的一款终端工具。这个神器我是在其他公众号文章上看到的,但他们都没把它的强大之处介绍明白,所以我自己体验一波后,再向大家分享自己的体验。
良许赞 5阅读 1.8k
一分钟搞明白!快速掌握 Go WebAssembly
最近因为各种奇怪的原因,更多的接触到了 WebAssembly。虽然之前很多博客也翻过写过各种文章,但总感觉欠些味道。于是今天梳理了一版,和大家一起展开学习。
煎鱼赞 4阅读 2.2k
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。