共计 1913 个字符,预计需要花费 5 分钟才能阅读完成。
这篇文章主要介绍“MongoDB 高可用分为哪些方式”,在日常操作中,相信很多人在 MongoDB 高可用分为哪些方式问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MongoDB 高可用分为哪些方式”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!
1:MongDB 的架构设计之中,MongoDB 支持多个机器之间通过异步复制达到故障转移和实现冗余,多台的机器之中只有一台是用于写操作,正是由于这个原因,在 MongoDB 之中只有一台充当了 Primary 角色的机器能把读操作分发给 Slave。
MongoDB 高可用可以分为两种的方式:
1:master——Slave 主从复制,目前已经不怎么实用了
2:Replica Sets 复制集
MongoDB 在 1.6 版之后加入了新的一个功能点叫做复制及:replica Set,增加了故障的自动切换和自动修复成员节点。各个 DB 之间的数据完全一致。大大降低了维护成功,
如图:
数学上来将,就是一个同构型的集合:也就是一个集群。MongoDB 的 Relica Set 架构是通过一个日志来存储写操作的。这个操作就叫做”oplog“,oplog.rs 是一个固定长度的 CappedCollection。这个 Collection 的位置存在于“Local 数据库之中”,用于记录 Replica Set 操作的日志,它在默认的情况之下,对于 64 位的 MongoDB,opLog 是比较大的。可以达到 5% 的磁盘空间,oplog 的大小是可以通过 Mongod 的参数 ”—oplogSize“来改变。
除了固定的复制集意外,还保持了较好的伸缩性,一旦需求得不到满足,那么就需要添加新的机器。那么句需要增加一些节点将压力平均分配一下。
增加节点的方式,一般可以通过 oplog 直接进行增加节点,操作简单并且无需人工干预,可是 oplog 是
capped collection,采用的循环方式进行日志处理,所以采用的是 oplog 的方式来添加,可能会有不一致的问题。
因为日志中间存储的信息由可能已经刷新过了。不过没关系。通常而言,你可以通过数据库的快照 –fastsync 和 oplog 结合的
方式来增加节点。这种方式的操作流程是,先取某一个复制集成员的物理文件来作为一个初始化的数据,然后剩余的部分用
oplog 的方式去添加。
而 Sharding,这是一种将海量的数据水平扩展的数据库集群系统,数据库分表存储在 sharding 的各个节点之上。MongoDB 的数据分块成为 chunk,每一个 Chunk 都是 Collection 中一段连续的数据记录,通常的最大的尺寸是 200MB。超出那么就会生成一个最新的数据块。这个和 Hbase Region 的分裂是一样的。
整个分拆的过程大致如下:
对于 MongoDB
首先在 CL:Client 这一层面来说,底层是否需要分片?是否需要这样的一个复制集对与使用者来说完全不必要知道。Mongos:好比就是一个大管家,要怎么去分拆 Collections?,你 Client 完全不必要知道,只需要你告诉我一个东西:分区的 Key 是什么?在很多的组件之中,包括在 hadoop,Storm,等个各种数据库之中都会有这样的一个 Partition Key 的概念。对应于我们的网络之上就会充当了这样一个路由的功能。并且将自己所把控的一些集群的信息存放在 Config 服务器之中。
在其他的数据库中间也就是如此,对于 Hbase。依然需要对于表再进行分拆。对应于 Hbase 之中的 Region。和 MongoDB 的分片其实用一个比较常用的英文名字就叫做 Segment。
如果你对于 Hbase 之流不够了解没关系。你只是需要知道,Region 是表分裂的一个片段,region 按大小分割的,每个表一开始就只是一个 Region,Region 随着数据的写入会不断的扩大,以至于达到了设计阈值以后,Region 就开始分裂了,由 1 分二。当 table 中的行越来越多的时候,Region 的数量就越来越多。
HRegion 是 Hbase 之中分布式存储和负载的最小的单位,在这里给出一个比照的图:如下:
而在 kafka 之中之中的 Replication,其实更加相当于 Hadoop 体系之中的【副本机制】,和分片所需要解决的矛盾不同。
简单的额来说,分布式系统有自己独特的属性与性质,对于其存存储体系有着固定的诉求。
到此,关于“MongoDB 高可用分为哪些方式”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!