集群架构概述


  • Lv 1

    【MongoDB简介/设计理论/使用技巧】

    集群架构概述

    1. 前言:
    MongoDB是一个基于分布式文件存储的数据库。目的在于为WEB应用提供可扩展的高性能数据存储解决方案。一般数据库如mysql,若要做到分布式的数据存储或是自动扩展,则需要加一个数据访问层用程序去控制。随着分布结点越多,管理上是越复杂。不过mongodb所有的这一切通过他自己的内部机制就可以搞定 。本章节将简单介绍MongoDB集群的基本架构。

    2. MongoDB 分布式架构

    2.1. 集群的进程与组件

    • mongos(路由处理):
      作为Client与MongoDB集群的请求入口,所有用户请求都会透过Mongos协调,它会将数据请求发到对应的Shard(mongod)服务器上,再将数据合并后回传给用户。

    • config server(配置节点):
      即:配置服务器;主要保存数据库的元数据,包含数据的分布(分片)以及数据结构,mongos收到client发出的需求后,会从config server加载配置信息并缓存于内存中。
      一般在生产环境会配置不只一台config server,因为它保存的元数据极为重要,若损坏则影响整个集群运作。

    • mongod(分片存储数据):
      这边的mongod指的就是shard,也就是分片。MongoDB利用分片的机制来实现数据分布存储与处理,达到横向扩容的目的。默认情况下,数据在分片之间会自动进行移转,以达到平衡,此动作是靠一个叫平衡器(balancer)的机制达成。

    • replica set(副本集):
      副本集实现了数据库高可用,若没做副本集,则一旦存放数据的服务器节点挂掉,数据就丢失了,相反若配置了副本集,则同样的数据会保存在副本服务器中(副本节点),一般副本集包含了一个主节点与多个副本节点,必要时还会配置arbiter(仲裁结点)作为节点挂掉时投票用。

    • arbiter(仲裁节点):
      仲裁服务器本身不包含数据,仅能在主节点故障时,检测所有副本服务器并选举出新的主节点,其实现方式是通过主节点、副本节点、仲裁服务器之间的心跳(Heart beat)实现。

    2.2. 集群架构图

    0_1476763152301_集群架構圖(簡易).jpg
    2.3. 结语
    MongoDB透过Sharding实现横向扩容,又利用副本集(Replica Set)的配置来达到高可用/高可靠性,提供大数据应用场景下安全可靠的生产环境。
    集群的服务器扩容与数据分配管理,MongoDB都已经自动处理掉,开发人员不需要去烦恼数据如何搬迁,仅需要在集合创建时定义好搬迁的规则(片键),之后就可以交给MongoDB去做管理,至于如何定义片键以集MongoDB扩容的考虑等议题,我们后面的章节会再向大家介绍。


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待