大家好,我是指北君,大数据时代的来临,不仅仅带来了Hadoop、Spark等分析系统的流行,同时在交易系统中也对传统关系型数据库带来了颠覆性革命,包含NoSQL,NewSQL的诞生,MongoDB正是其中的佼佼者。
概述
MongoDB的出现在保证了传统数据的高性能和高可用基础上,使得数据库系统更易扩展。我们可以根据需要将MongoDB部署为单服务器,集群,甚至多数据中心架构。 MongoDB利用内存提供高性能的数据读写操作,另外通过本地复制和自动故障转移功能实现高可靠性。
MongoDB的高可用高可靠架构将从两个维度来介绍:
- 副本集架构
- 集群分片架构
副本集架构
副本集架构是以单个MongoDB节点为基础,通过MongoDB的数据复制能力,实现节点的多副本能力,可以根据业务需要实现读写分离,数据备份,实时系统和分析系统分离等多种业务应用场景。
主节点
主节点接受所有的写操作,副本集中最多只有一个主节点,当主节点不可用,通过副本集选举推选出新的主节点。
从节点
从节点通过复制主节点的操作来实现数据同步,从节点提供数据读取请求。 有一些特殊类型的从节点:
- 0优先副本, 用于备用数据中心或者冷备节点
- 隐藏副本,应用不可见
- 延迟副本,用于历史快照,可用数据恢复
副本集的最小高可用、高可靠架构为三副本集:
- 主节点,用于读写请求。
- 从节点,用于读请求。
- 隐藏节点,用于备份数据或其他业务。
应用直接访问主节点和备节点。当主节点故障时,将影响数据写入,此时若从节点可用,则查询类业务任然可以执行。 若仅仅从节点不可用,隐藏节点接管从节点服务,保证高可用。
集群分片架构
集群作为一个独立运行数据库,MongoDB分片集群包括以下组件:
- 路由节点,mongos充当查询路由器,在客户端应用程序和分片集群之间提供接口。
- 配置节点,存储了分片集群的元数据和配置信息。
- 分片节点,每个分片包含被分片的数据集中的一个子集,单一一个分片可以为前面介绍到的副本集。
- 多个路由节点实现负载均衡及故障转移,可以动态增删路由节点。
- 分片节点采用副本集,高可靠和高可用由副本集来保证,
- 配置节点负责存储实例的配置信息,配置节点为单节点
分片及优势
使用分片键实现各个分片节点数据分布,分片是实现MongoDB扩展能力的核心。
- 读写:将读写请求负载分布在分片集群中的各个分片上,每个分片处理集群操作的一部分,实现集群中水平扩展读写能力。
- 存储:增加分片的数量增加存储容量。
- 高可用:当一个分片节点故障时,其他节点仍然可以提供对应的分片数据的操作。
总结
以上就是指北君本期介绍的内容,从两个主要方面带领大家认识MongoDB的高可用、高可靠和可扩展架构。
我是指北君,操千曲而后晓声,观千剑而后识器。感谢各位人才的:点赞、收藏和评论,我们下期更精彩!