分片集群简介

MongoDB常见部署架构

  1. 单机版(测试环境)
  2. 复制集 (线上)
  3. 分片集群 (线上,大型核心的业务场景)

image.png

为什么要使用分片集群

image.png

分片如何解决?

  • 最多分1024片

image.png
image.png
image.png

完整的分片集群

image.png

分片集群解剖:路由节点mongos

  • mongos至少有两个,高可用的存在

image.png

分片集群解剖:配置节点mongod

image.png

分片集群解剖:数据节点 mongod

  • 每一个分片必须是一个复制集

image.png

MongoDB分片集群特点

image.png

三种分片方式

image.png

  • chunk是逻辑的chunk
  • 查询性能比较优良点

image.png

  • 哈希是安全的做法,哈希本身是随机的,可以随机的写到各个区块不同的范围内,起到一个随机分布到各个节点上的效果(对大量写入有不错的优化)
  • 缺点:连续取数据的话,需要从很多个节点上取

image.png

  • 打标签,把不同地区的数据放在不同地域的节点上,本地写和本地读

image.png

小结

image.png

分片集群设计

image.png

合理的架构

分片大小

image.png

需要多少个分片

image.png

其他需求

image.png

正确的姿势来使用

image.png

选择合适的片键

image.png

选择基数大的片键

  • 值的大小就是基数

image.png

选择分布均匀的片键

image.png

定向性好

image.png

例子

image.png

  • 片键太大

image.png

  • 哈希,查的话需要去多个分片中

image.png

  • 使用userID

image.png

常见的方法 组合片键
  • 因为基数不够大,加上time就可以了
  • userID定向查询。time基数变大

image.png

足够的资源

  • SSD 或者快速的存储,保证数据如果没有在内存的话,保证快速的从磁盘上访问,
  • 瓶颈性能见的最多的就是存储层

image.png

扩展性

image.png