mongo——分片(sharding)

概念

随着应用系统规模的增长,成本会变得越来越高,而且有时候无法实现使用单台机器来处理负载压力。这种问题的一个解决方案就是汇聚大量低价、低处理能力的机器来解决问题。mongodb的分片就是为解决这种问题而设计的:把超大数据使用更小的片进行分区存储,这样就不需要在单个机器上存储所有的数据或者承担全部压力。mongodb分片对于应用系统是透明的,这意味着对于分片集群的查询与可复制或者单个mongo服务器实例的查询完全一样。

什么时候分片?

什么时候分片的问题在理论上非常简单,但是必须完全理解系统是怎么使用的。通常有两种分片情况:

1.存储分片式

1.负载分片式:

分片架构

1.分片:存储了应用程序的数据。在分片集群中,只有mongos路由器或者系统管理员可以直接连接分片服务器节点。与不分片的部署一样,每个分片可以单独作为开发和测试的节点,但是生产环境下应该是个可复制集。

2.mongos路由器(中心):缓存了集群的元数据并使用它来路由操作到正确的分片服务器。

3.配置服务器(右上):一直存储集群的元数据,包括哪个分片包含哪些数据集

分片:存储应用程序数据

分片,如图12.1左上角所示的,或者是单个mongod服务器或者是一个存储部分应用数据的可复制集。事实上,分片是分片集群中应用程序数据存储的唯一位置。用于测试,一个片可以是单个的mongod服务器,但是在生产环境中应该是可复制集,因为它会有自己的复制机制并且可以自动灾备和故障转移。可以连接到一个片,也可以连接到单个服务器节点或者可复制集。但是如果尝试在这个片上直接运行操作,则只能看到整个集群数据中的一部分。

mongos路由:路由操作

因为每个分片包含的只是总数据的一部分,所以需要某个东西来路由操作到适当的片上。这就是mongos的作用。mongos进程如上图所示,是个可以直接转发所有读、写命令到正确的分片上的路由器。mongos提供给客户端单点连接集群的方式,这使得整个集群看起来就像单个节点一样。

mongos进程是轻量级的、不持久化的。因此,它们通常部署在应用程序服务器上,以确保只有一个网络节点来转发请求,。换句话来说,应用程序连接本地的mongos,而mongos管理与每个分片服务器的连接

配置服务器:存储元数据

mongos进程是非持久化的,这意味着必须有某个东西来存储集群的元数据。这个工作就由配置服务器来做,如图右上角所示。这些元数据包含全局的集群配置信息,每个数据库,集合、特定数据的范围

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小卒曹阿瞒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值