共计 1498 个字符,预计需要花费 4 分钟才能阅读完成。
说到集群,生产环境中很多服务都会进行集群部署,那么 mongodb 的集群都有哪些知识点须要把握呢
mongodb 集群 分为 主从集群 和分片集群,先从主从集群开始
为什么须要集群?
为了保障服务的高可用
咱们能够晓得,如果咱们部署单点 mongodb 服务,那么是非常容易呈现 单点故障 的,若这台 mongodb 服务不可用了,那岂不是整个业务都要 over 了?
当咱们部署多个 mongodb 的时候,有互相关系的,这叫集群,依据集群是否有状态分为:
- 有状态集群
指集群外面的服务 都须要 存放数据
无状态的集群,服务本身不存储数据,集群中的服务任意一个被客户端拜访失去的后果都是一样的,与理论拜访到哪一个服务没有关系
因为这些服务不存储数据,数据都是去找一个公共的组件获取
- 无状态集群
指集群外面的服务 不须要 存放数据
有状态的集群,即本身是存储数据的,那么在集群中,就会呈现数据一致性的问题
咱们来看看 CAP 准则:
指的是在一个分布式系统中的三个个性
- C(Consistency)
数据一致性
- A(Availability)
可用性
- P(Partition tolerance)
分区容忍性
CAP 准则中,最多只能同时实现两点,不可能三者兼顾,所有集群都须要思考上三个个性
主从集群
主从集群是由一组 mongod 保护雷同数据集的实例,一个正本集蕴含如下节点:
- 多个数据承载节点
- 一个仲裁器节点,这个仲裁器节点是可选的
当主节点不可用,则选举符合要求的次节点为主节点,如果正本集成员数为偶数,增加仲裁器来进行选举主节点
仲裁器 是 mongod 过程,但不保护数据集,通过响应其余正本集成员的心跳和选举申请来保护集群中的仲裁机制
在数据承载节点中,只有一个成员被视为次要节点,而其余节点则被视为次节点
主从复制集群提供冗余并进步数据可用性是这样做的:
应用不同数据库服务器上的多个数据正本,复制可提供肯定水平的容错能力
这样做是为了避免失落单个数据库服务器
那么就会有这样的问题,主从是如何同步数据?
主从集群的同步机制是什么?
mongo db 外面的同步机制有如下几点:
- oplog
- 心跳机制
- 选举机制
- 正本回滚
oplog 是什么?
oplog 其实就是 mongodb local 数据库外面的一个汇合
local.oplog.rs
汇合,固定汇合的大小默认是硬盘的 5%,默认最大也不会超过 50 个 G
oplog 下面会寄存整个 mongodb 的所有 写操作
oplog 的初始化是如何做的
若一个集群中,有 1 个 primary(mongodb 1)和 2 个 secondary(mongodb 2,mongodb 3),曾经存在一段时间了,产生了一些 oplog 信息了,这个时候,又接上来了一个 secondary(mongodb 4)
此时 mongodb 4 会去读取 mongodb 3 和 mongodb 2 的正本,看谁是最新的,就同步谁的 oplog 数据
如果默认的源节点网络故障或者其余起因无奈同步数据了,则这个新的 secondary 就会间接找 主节点进行 oplog 的同步
指定 oplog 初始化形式
当然咱们在 mongodb 外面也是能够间接设置最新的 secondary 找谁同步数据,通过如下指令
db.adminCommand(replSetSyncFrom:"ip:port")
心跳机制
心跳机制,底层实现个别都是都是 发 TCP 包来检测连通性,当然工作中也有本人利用包来检测业务是否失常的
mongodb 外面,心跳机制默认工夫是 2 s,超过这个工夫,则会被认为是服务不可用
欢送点赞,关注,珍藏
敌人们,你的反对和激励,是我保持分享,提高质量的能源
好了,本次就到这里
技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。
我是 阿兵云原生,欢送点赞关注珍藏,下次见~