您现在的位置是:课程教程文章
mongodb 如何读写分离
2023-12-18 20:46课程教程文章 人已围观
-
2020NodeJS+Express+MongoDB实战项目【千锋Web前
2020NodeJS+Express+MongoDB实战项目【千锋Web前获取视频资料源码,请添加官方指定qq:2377443170 课程介绍 Node.js作为JavaScript的... -
【云知梦】MongoDB数据库/NoSQL实战应用
【云知梦】MongoDB数据库/NoSQL实战应用MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提... -
React全栈商城管理系统(react/redux/node/ex
React全栈商城管理系统(react/redux/node/ex特别说明: 本套课程使用的react-router-dom为V5版本,若使用最新的react-router-dom... -
【赵强老师】MongoDB的体系结构
【赵强老师】MongoDB的体系结构MongoDB是一个可移植的数据库,它在流行的每一个平台上都可以使用,即所谓的...
MongoDB复制集(Replica Set)通过存储多份数据副本来保证数据的高可靠,通过自动的主备切换机制来保证服务的高可用。但需要注意的时,连接副本集的姿势如果不对,服务高可用将不复存在。
使用前须知:
MongoDB复制集里Primary节点是不固定的。当遇到复制集轮转升级、Primary宕机、网络分区等场景时,复制集可能会选举出一个新的Primary,而原来的Primary则会降级为Secondary,即发生主备切换。总而言之,MongoDB复制集里Primary节点是不固定的。
当连接复制集时,如果直接指定Primary的地址来连接,当时可能可以正确读写数据,但一旦复制集发生主备切换,您连接的Primary会降级为Secondary,您将无法继续执行写操作,这将严重影响到您的线上服务。所以生产环境千万不要直连Primary,那么到底该如何连接复制集?
正确连接复制集:
要正确连接复制集,您需要先了解下MongoDB的Connection String URI,所有官方的driver都支持以Connection String的方式来连接MongoDB。
Connection String包含以下内容:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
说明:
mongodb:// 前缀:代表这是一个Connection String。
username:password@:如果启用了鉴权,需要指定用户密码。
hostX:portX:复制集成员的ip:port信息,多个成员以逗号分割。
/database:鉴权时,用户帐号所属的数据库。
?options:指定额外的连接选项。
实现读写分离:在options里添加readPreference=secondaryPreferred读请求优先到Secondary节点,从而实现读写分离的功能。更多读选项请参考Read preferences。
限制连接数:在options里添加maxPoolSize=xx即可将客户端连接池限制在xx以内。
设置数据写入到大多数节点后返回客户端确认:在options里添加w= majority即可保证写请求成功写入大多数节点才向客户端确认,更多写选项参考Write Concern。
以连接AliCloudDB for MongoDB为例,当您购买阿里云MongoDB复制集时,会得到复制集的名称以及复制集成员的地址信息。
为了方便用户使用,MongoDB管理控制台上也生成了连接复制集的Connection String及通过Mongo Shell连接到命令。
例如通过Java来连接AliCloudDB for MongoDB:
MongoClientURI connectionString = new MongoClientURI("mongodb://root:****@dds-*****.mongodb.rds.aliyuncs.com:3717, ****.aliyuncs.com:3717/admin?replicaSet=mgset-677201"); // ****替换为root密码 MongoClient client = new MongoClient(connectionString); MongoDatabase database = client.getDatabase("mydb"); MongoCollection collection = database.getCollection("mycoll");
通过正确的Connection String来连接MongoDB复制集,客户端会自动检测复制集的主备关系,当主备关系发生变化时,自动将写切换到新的主上,以保证服务的高可用。
python学习网,大量的免费MongoDB入门教程,欢迎在线学习!
课程教程:mongodb 如何读写分离上一篇:python如何无限循环语句
下一篇:没有了