MongoDB报表实例 -- 隐藏成员方案
一个复制集的隐藏成员被配置为priority: 0,为了阻止它们被选举为主,设置hidden: true,阻止客户端连接到复制集路由读操作到它,即使他们指定了一个读偏好为secondary。
从一个隐藏成员读,你会看到一个独立的连接,而不是MongoReplicaSetClient类型,并指定slave_ok。
隐藏成员设置
你可以使用mongo shell来隐藏一个存在复制集的成员:$ mongo admin -uxucy -p
PRIMARY> conf = rs.config()
{ "_id" : "test", "version" : 21, "members" : [ { "_id" : 0, "host" : "xucy.local:27017", }, { "_id" : 1, "host" : "xucy.local:28017", }, { "_id" : 2, "host" : "xucy.local:29017", } ] }
PRIMARY> conf.members[1].priority = 0
PRIMARY> conf.members[1].hidden = true
PRIMARY> conf.version += 1
PRIMARY> rs.reconfig(conf)
xucy.local:28017现在隐藏。他将继续复制和像往常一样在选举中投票,但是连接到复制集的客户端将不会从它读取,即使xucy.local:29017下线:irb(main):012:0> rs = Mongo::MongoReplicaSetClient.new(["xucy.local:27017", "xucy.local:28017", "xucy.local:29017"])
=> <Mongo::MongoReplicaSetClient:0x3fe06e4fe564 @seeds=[["xucy.local", 27017], ["xucy.local", 28017], ["xucy.local", 29017]] @connected=true>
irb(main):013:0> rs.primary
=> ["xucy.local", 27017]
irb(main):014:0> rs.secondaries
=> #<Set: {}> # an empty set -- as far as this connection is concerned, there are no secondaries.
报表代码将会像这样(使用Ruby):
require 'mongo' reporting = Mongo::MongoClient.new("xucy.local", "28017", slave_ok: true) # error checking goes here reporting['my_application']['users'].aggregate(...)
考虑
使用隐藏的成员是一个最简单的方式去配置实例用于专属的工作负载像报表,然而:
隐藏成员不能在紧急情况下读取
带有2个普通和1个隐藏成员在一个复制集中,对于写的错误容忍等价于一个常规的3个成员的集合。然而,你失去两个节点,你的生产应用将不能优雅的降级到只读模式,因为你的隐藏成员将不允许复制集客户端读取。如果你只是喜欢一个隐藏成员的简单,并且花费不是问题,使用一个5成员(带有一个成员隐藏)的集合代替。
对于复制集的包装代码不能被使用
很多团队创建应用定制的包装代码添加基础知识给客户端,由MongoDB驱动提供。因为你需要使用独立连接到你的报表实例,你不能重用投资,将会让你很伤心。
- MongoDB报表实例 -- 隐藏成员方案
- MongoDB报表实例 -- 标签成员方案
- MongoDB报表实例方案选型 推荐
- MongoDB报表实例方案选型
- mongodb 简单部署方案及实例
- mongodb 简单部署方案及实例
- mongodb 简单部署方案及实例
- Java成员变量的隐藏(实例讲解)
- MongoDB报表实例 -- 架构
- [置顶] 敏感逻辑的保护方案:把函数名隐藏在结构体里,以函数指针成员的形式存储。
- mongodb 简单部署方案及实例
- FineReport报表系统实例方案之医院院长查询分析系统
- mongodb 简单部署方案及实例
- 静态变量、实例变量初始化时机,以及子类隐藏父类成员时,创建子类对象的一些问题
- mongodb 简单部署方案及实例
- 注册表-盘符16进制表、隐藏盘符实例
- 官方水晶报表 .NET 应用程序实例下载 (C#、Visual C++.NET)
- java中类成员和实例成员调用的区别
- 七.SpringBoot集成实例系列-多数据源mongodb+lombok(二)
- JAVA 基础 成员变量和实例变量 常量