美文网首页
MongoDB集群

MongoDB集群

作者: b1055bae4a4d | 来源:发表于2016-01-21 19:34 被阅读0次

    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集群

          本文链接:https://www.haomeiwen.com/subject/ljwlkttx.html