MongoDB集群

1:replica set

数据冗余(保证数据不丢失)+主节点切换(服务可用)

Primary/Secondary/其他类型节点(为了投票选primary、数据备份、延迟复制等)

读写都是primary,保证强一致性

读写分离:写必须primary读secondary,此时保证的是最终一致性而非强一致性

read preference和write concern

如何复制?联想下mysql的主从复制如何实现?复制到一半断电了怎么办?

replica set oplog

如何选举?联想下分布式系统的选举算法(redis、zookeeper各自是如何实现)?

http://docs.mongodb.org/manual/core/replica-set-elections/#replica-set-elections

paxos?

2:分片

数据量太大单节点存储不够、单节点读写压力过大

query routers:请求入口,可以有多个,做负载均衡。接受请求再请求shard然后再返回结果给请求者

config servers:存储分片的元数据,每个shard存储的数据key范围。replica set防止单点故障

shards:存储分片数据 replica set防止数据丢失

如何分片?

将shard key映射到chunk,然后将chunk存储到指定的shard

shard key的选择

range based sharding

hash based sharding

分片的split和rebalanc?

某些范围的shard key对应的数据越来越多 对应chunk越来越大,当超过指定大小max之后,会split chunk(两个大小为max的chunk),就会造成某些shard上的chunk越来越多

然后就会启动rebalance,平衡每个shard上的chunk的数量

rebalance过程中的读写如何保证?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数据副本 MongoDB中的一组副本是一群mongod进程,这些进程维护同样的数据集。副本集提供了冗余和高可用性,...
    大蟒传奇阅读 2,700评论 4 16
  • 刚接触MongoDB,就要用到它的集群,只能硬着头皮短时间去看文档和尝试自行搭建。迁移历史数据更是让人恼火,近10...
    davidpp阅读 51,778评论 9 78
  • mongoDB 集群模式记录 官方手册 replica set(复制集) replica set 是一组存储了相同...
    半枚荔枝阅读 1,003评论 0 1
  • lklkk opopo 喁喁
    ahlang阅读 140评论 0 1
  • 每个舒适圈都是经过锻炼出来的,正因为我们现在的活在舒适圈里,那是因为我们已经习惯了现在的生活。 前天几想去健身房,...
    念追忆loveing阅读 233评论 0 0