elasticsearch源码分析之分片分配(十)

分片

什么是分片

分片是把索引数据切分成多个小的索引块,这些小的索引块能够分发到同一个集群中的不同节点。在检索时,检索结果是该索引每个分片上检索结果的合并。类似于数据库的分库分表。

为什么分片

1、这样可以提高读写性能,实现负载均衡。
2、副本容易扩展,备份恢复快。

怎么分片

分片(或者叫分区)是分布式系统的一个经典问题。常用的分片方式:

分片方式 说明 优点 缺点
简单hash 除余取模 简单 扩展困难、容易数据倾斜
数据范围分布 按照数据的所处范围进行分类,每个分区可以动态分裂 易扩展 元数据服务维护复杂,容易成为瓶颈
数据量分布 按照数据块大小分布 与数据内容无关,无数据倾斜,易扩容 元数据维护维护复杂
一致性hash 数据和节点hash后沿环形匹配、虚拟节点 易扩展 -

es采用的是简单hash,默认hash的是_id字段,另外也可以指定分片字段。hash完同一结果的数据分配到一个分片shard中。

分片分配

什么是分片分配

已经切分为多份的索引块,索引块分发到同一个集群中的不同节点。这个把shard分发到node的过程就是分片的分配。分配的原则是主要还是基于提高读写性能,实现负载均衡,备份恢复快。

怎么分片分配

分片时机

This can happen during initial recovery, replica allocation, rebalancing, or when nodes are added or removed.

  1. index的增删
  2. node的增删
  3. reroute操作
  4. replica的设置更改
  5. 初始化恢复过程

AllocationService.reroute调用位置,也就是调用分片分配的时机:

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值