解密MongoDB高可用高可靠架构

大家好,我是指北君,大数据时代的来临,不仅仅带来了Hadoop、Spark等分析系统的流行,同时在交易系统中也对传统关系型数据库带来了颠覆性革命,包含NoSQL,NewSQL的诞生,MongoDB正是其中的佼佼者。

概述

MongoDB的出现在保证了传统数据的高性能和高可用基础上,使得数据库系统更易扩展。我们可以根据需要将MongoDB部署为单服务器,集群,甚至多数据中心架构。 MongoDB利用内存提供高性能的数据读写操作,另外通过本地复制和自动故障转移功能实现高可靠性。

MongoDB的高可用高可靠架构将从两个维度来介绍:

  1. 副本集架构
  2. 集群分片架构

副本集架构

副本集架构是以单个MongoDB节点为基础,通过MongoDB的数据复制能力,实现节点的多副本能力,可以根据业务需要实现读写分离,数据备份,实时系统和分析系统分离等多种业务应用场景。

副本集架构

主节点

主节点接受所有的写操作,副本集中最多只有一个主节点,当主节点不可用,通过副本集选举推选出新的主节点。

从节点

从节点通过复制主节点的操作来实现数据同步,从节点提供数据读取请求。 有一些特殊类型的从节点:

  • 0优先副本, 用于备用数据中心或者冷备节点
  • 隐藏副本,应用不可见
  • 延迟副本,用于历史快照,可用数据恢复

副本集的最小高可用、高可靠架构为三副本集:

  • 主节点,用于读写请求。
  • 从节点,用于读请求。
  • 隐藏节点,用于备份数据或其他业务。

应用直接访问主节点和备节点。当主节点故障时,将影响数据写入,此时若从节点可用,则查询类业务任然可以执行。 若仅仅从节点不可用,隐藏节点接管从节点服务,保证高可用。

集群分片架构

集群作为一个独立运行数据库,MongoDB分片集群包括以下组件:

  • 路由节点,mongos充当查询路由器,在客户端应用程序和分片集群之间提供接口。
  • 配置节点,存储了分片集群的元数据和配置信息。
  • 分片节点,每个分片包含被分片的数据集中的一个子集,单一一个分片可以为前面介绍到的副本集。

集群架构

  • 多个路由节点实现负载均衡及故障转移,可以动态增删路由节点。
  • 分片节点采用副本集,高可靠和高可用由副本集来保证,
  • 配置节点负责存储实例的配置信息,配置节点为单节点

分片及优势

使用分片键实现各个分片节点数据分布,分片是实现MongoDB扩展能力的核心。

  • 读写:将读写请求负载分布在分片集群中的各个分片上,每个分片处理集群操作的一部分,实现集群中水平扩展读写能力。
  • 存储:增加分片的数量增加存储容量。
  • 高可用:当一个分片节点故障时,其他节点仍然可以提供对应的分片数据的操作。

总结

以上就是指北君本期介绍的内容,从两个主要方面带领大家认识MongoDB的高可用、高可靠和可扩展架构。

我是指北君,操千曲而后晓声,观千剑而后识器。感谢各位人才的:点赞、收藏和评论,我们下期更精彩!

Java Geek Tech wechat
欢迎订阅 Java 技术指北,这里分享关于 Java 的一切。