mongoDB 架构
******************
单机

只有一个数据节点,当节点发生故障,服务不可用(常用于开发测试环境)
******************
副本集


主节点:负责写入数据,与客户端进行读写交互
从节点:同步主节点的数据,并可供客户端读取数据,实现读写分离
仲裁节点:故障转移投票阶段进行辅助投票(只投票不存储数据)
主从数据复制
从节点写入数据会在oplog中记录,
从节点监控主节点的oplog,在本地数据库写入oplog,并执行写入过程
主节点记录从节点的同步状态,当落后太多时,会阻塞等待,或者根据配置,等待足够数量的从节点同步完成
故障转移
副本集运行时,各节点会周期性的会进行心跳检测,
当检测到从节点不能正常工作时,直接将其下线;
当检测到主节点不能正常工作时,会触发故障转移;
各节点投票选举主节点,主节点选取后,从节点同步主节点数据
******************
分片集群

分片服务器:存储数据,用副本集形式部署,实现数据的高可用
配置服务器:存储分片的配置信息,块的元数据,数据库和集合的分片配置信息等
mongos:路由服务器,不存储任何数据,根据配置服务器存储的配置信息,将客户端的请求路由到对应的分片
分片策略:区间分片、hash分片、标签分片(具体详见 mongoDB 概述)
需要分片的集合根据分片策略进行分片,
当块的大小或者数据量达到限制值时,块分裂成两半(修改块的元数据信息,数据物理存储位置不变),
当不同分片服务器的快的数量相差较大时(相差8左右),触发块的迁移,使各个分片服务器上块的数量大致相等
2647

被折叠的 条评论
为什么被折叠?



