Web架构之路:MongoDB集群及高可用实践
副本集包括三种节点:主节点、从节点、仲裁节点。
官方推荐MongoDB副本节点最少为3台, 建议副本集成员为奇数,最多12个副本节点,最多7个节点参与选举。限制副本节点的数量,主要是因为一个集群中过多的副本节点,增加了复制的成本,反而拖累了集群的整体性能。 太多的副本节点参与选举,也会增加选举的时间。而官方建议奇数的节点,是为了避免脑裂 的发生。 选举过程 副本集的选举过程大致如下: 得到每个服务器节点的最后操作时间戳。每个 mongodb都有oplog机制会记录本机的操作,方便和主服务器进行对比数据是否同步还可以用于错误恢复。 如果集群中大部分服务器down机了,保留活着的节点都为secondary状态并停止,不选举了。 如果集群中选举出来的主节点或者所有从节点最后一次同步时间看起来很旧了,停止选举等待人来操作。 如果上面都没有问题就选择最后操作时间戳最新(保证数据是最新的)的服务器节点作为主节点。 MongoDB 同步延迟问题 在MongoDB中,所有写操作都会产生 oplog,oplog 是每修改一条数据都会生成一条,如果你采用一个批量update命令更新了 N 多条数据,那么oplog 会有很多条,而不是一条。所以同步延迟就是写操作在主节点上执行完后,从节点还没有把 oplog 拿过来再执行一次。而这个写操作的量越大,主节点与从节点的差别也就越大,同步延迟也就越大了。 分片 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。 分片集群结构分布: ![]() 三个主要组件:
Mongos本身并不持久化数据,Sharded Cluster所有的元数据都会存储到Config Server,而用户的数据会议分散存储到各个shard。Mongos启动后,会从配置服务器加载元数据,开始提供服务,将用户的请求正确路由到对应的碎片。 Mongos的路由功能:
分片部署 条件有限,我们还是在单机上,用不同MongoDB线程来部署分片。 ![]() 分片服务器 Shard Server和普通Mongod程序一样,不同的是需要在配置文件中添加shardsvr=true标记为Shard Server,配置参考如下:
(编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |