分片及副本原理

分片原理

分片组成一个 ES 实例,这个 ES 实例可以维护一个或者多个索引(数据库)。

前文提到过,ES 是基于 Lucene 开发的,实际上一个分片就是一个 Lucene 实例。在创建某个索引之前,需要指定分配这个索引多少个索引?多少个副本?副本就这这个分片的备胎,当分片挂掉了,它的副本就会随时准备上位,因此副本也是个分片只不过不负责主要功能。

不仅仅如此,ES 如何能够提高数据吞吐量呢?增加副本个数就是个不错的选择,比如说读写分离,读数据的时候从副本上读,写数据的时候只用主分片去写。需要注意的是,主分片的个数实在建立索引之前要确定,建立完索引之后,是不能够进行修改的,除非重新建索引。因此在建索引之前,一定要合理的配置分片个数,副本个数的话后期是可以改动的。

如何设置副本

启动 2 个 ES 节点,配置分片个数为 3,副本个数为 1。如下图,蓝色的代表主分片,绿色的是副本,仔细一点不难发现,分片与其副本不在同一个节点内。这是非常合理的,因为副本本来就是主分片的备胎,当主分片节点挂了,另外一个节点的副本将会充当主分片,如果它们在同一个节点内,副本将发挥不到作用。

image-20191127175952178

水平扩展原理

单个节点的容量是有限的,如果后期两个节点的容量不能够支持三个分片,那么另外启动一个节点就可以了,ES 会自动的重新规划分片,如下图:可以看到 A

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ZooKeeper是一个开源的分布式协调服务,它提供了高可用性和一致性的数据管理。在ZooKeeper中,分片(Sharding)是一种将数据分散存储在多个节点上的技术,以实现数据的水平扩展和负载均衡。 ZooKeeper的分片原理如下: 1. 哈希分片:ZooKeeper使用哈希算法将数据根据其标识(例如路径)进行哈希计算,然后将计算结果映射到不同的节点上。这样可以保证相同标识的数据总是被映射到同一个节点上,实现了数据的均匀分布。 2. 一致性哈希:ZooKeeper使用一致性哈希算法来确定每个节点负责的数据范围。一致性哈希将节点和数据都映射到一个固定的哈希环上,每个节点负责环上其后续节点之间的数据范围。当有新节点加入或节点离开时,只需要重新计算受影响的数据范围,而不需要重新分配所有数据。 3. 数据复制:为了保证数据的高可用性和容错性,ZooKeeper采用了数据复制机制。每个分片都有多个副本存储在不同的节点上,其中一个节点作为主节点(leader),其他节点作为从节点(follower)。主节点负责处理客户端的写请求,从节点负责复制主节点的数据并处理客户端的读请求。 4. 选举机制:ZooKeeper使用选举机制来选择主节点。当主节点失效或离开时,剩余的节点会通过投票选举出新的主节点。选举过程中,每个节点都会提出自己的候选人,并通过投票来选择最合适的候选人作为新的主节点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值