MongoDB分片副本集
- 副本集模式
- 介绍: 开启多个服务器作为节点,分主节点和从节点,主节点负责写,从节点负责读。 - 目的: 数据冗余、高可用、故障转移、提高读性能 - 组成: 一个副本集通常包含多个节点,至少3个,包括一个主节点和多个从节点。 - 工作机制: - 写操作需在主节点进行,并且会记录操作日志(oplog),读操作在主节点和从节点进行都可以。 - 从节点异步复制主节点的oplog,并应用日志中的操作,实现数据同步。 - 节点之间通过心跳机制检测健康状态,若主节点故障,会自动在从节点中选举出新的主节点。
- 分片模式
- 介绍: 将数据打散到不同的分片,提供配套服务保证高可用,每个分片可以独立完成读写操作。 - 目的: 提高读写性能 - 组成: 路由服务器、配置服务器、分片服务器 - 工作机制: - 路由服务器负责获取配置信息,接收请求,转发请求给对应的分片服务器,返回数据。可以水平拓展。 - 配置服务器负责记录集群元数据,如数据块分布信息,分片信息等。必须部署为副本集,确保数据分布信息安全。 - 分片服务器负责存储集群一部分数据,处理路由服务器转发过来的操作请求,可独立完成读写操作。可以水平拓展。 - 分片策略: - 范围分片: 实现容易,但是更容易出现热点问题。 - 哈希分片: 数据分布更平均,但是分片中数据与数据关联小,范围查询性能低。 - 标签分片: 按实际业务标签分片,数据分布可能不会太平均,但是可能更符合业务需求,设计难度较大。
- 分片副本集模式
- 介绍: 分片模式与副本集模式的结合,以分片模式为主体,将分片服务器替换为分片副本集。 - 目的: 提高读写性能的基础上,保证高可用,数据冗余。 - 组成: 路由服务器、配置服务器、分片副本集。 - 工作机制: - 主体采用分片模式工作模式,分片副本集内采用副本集工作模式。两者结合而工作互不干扰。
- 一般演进过程
单机实例 -> 副本集模式 -> 分片副本集模式 通常不建议先开启分片模式,分片模式设计复杂,组成部分较多,延迟不好控制。