专栏首页立权的博客elasticsearch-分片思想

elasticsearch-分片思想

继上一篇 elasticsearch 基本概念

elasticsearch的分片思路:

最好的情况是,我们能知道自己对单个分片的要求,比如单个分片对用户的响应时间不能长于哪个值,测试的方法是使用历史数据,压入到一个测试的分片中

知道这个分片的响应速度使我们无法忍受,这时候的数据量就是单个分片的最大容量。最最好的情况下,我们有自己的最大数据目标,也就是业务的数据量天花板

用这个天花板 除以 单个分片的最大容量,也就是我们业务发展到天花板之后需要的最大物理机数量。但是实际上,我们的业务数据的天花板是不可估摸的

确定物理机数量就是个难题,当然不是说一开始就需要那么多物理机。毕竟业务也是由小到大发展,机器集群也是由小到大发展。

elasticsearch官方给出 对于分片的声明是:

  分片不应该分裂,而是一开始就存在,之后的水平扩展中只是简单地将分片复制到另一台物理机上。

  比如上图,一开始就确定了业务只有两个主分片,之后向集群添加物理机 (或者虚拟机)NODE 2 之后,主分片P1只是简单地复制到 NODE2 上

  为什么不是使用分裂呢?如下图 P0 容量达到某个上限之后 将 P0分裂成两个分片,P00 和 P01 分别存入 NODE1 和 NODE2

  需要注意的是,如果分裂分片,需要对正排索引 和 倒排索引 进行分裂。

  正排索引还好说,因为类似与关系型数据库,可以采用分表的思想分出去,但是倒排索引的内容可能关乎整个分片

  拿上一篇的图来距离,“南山” 这个 term 可能会联系到 正排索引中 任意一行,如果要分裂正排索引,那么需要根据分裂后的正排索引重新构建倒排索引

然而,日积月累存下来的数据要一次性全部重新构建倒排索引,可想而知对硬件消耗之大!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 简记 Redis 类型转化

    SET GET APPEND STRLEN 对字符串 字符串实现:1. SDS 2. emb SDS(大于 39 变成 SDS)

    执生
  • Java锁膨胀过程中的解惑:1.单线程不一定能获取偏向锁 ; 2.安全点重偏向不能直接占有仍有效偏向锁

    1.偏向锁的获取逻辑主要在汇编实现的 biased_locking_enter 方法中

    执生
  • elasticsearch-基本概念

    先类比 elasticsearch 和 关系型数据库对应的某些概念,了解ES的结构:

    执生
  • 《ElasticSearch6.x实战教程》之准备工作、基本术语

    ElasticSearch6.3.2下载地址(Linux、mac OS、Windows通用,下载zip包即可):https://www.elastic.co/c...

    用户1148394
  • 『互联网架构』软件架构-Sharding-Sphere分库分表(66)

    水平拆分的数据库(表)的相同逻辑和数据结构表的总称。例:订单数据根据主键尾数拆分为10张表,分别是torder0到torder9,他们的逻辑表名为t_order...

    IT故事会
  • Elasticsearch的索引、分片、文档、副本

    我们往 Elasticsearch 添加数据时需要用到 索引 —— 保存相关数据的地方。 索引实际上是指向一个或者多个物理 分片 的 逻辑命名空间 。 一个 分...

    苦咖啡
  • 以太坊分片Sharding FAQ

    目前,在所有的区块链协议中每个节点存储所有的状态(账户余额,合约代码和存储等等)并且处理所有的交易。这提供了大量的安全性,但极大的限制了可扩展性:区块链不能处理...

    芒果2018
  • RChain的跨分片交易算法

    岑玉海
  • MongoDB之分片集群(Sharding)

    分片(sharding)是一个通过多台机器分配数据的方法。MongoDB使用分片支持大数据集和高吞吐量的操作。大数据集和高吞吐量的数据库系统挑战着单一服务的性能...

    小忽悠
  • MongoDB之分片集群(Sharding)

      分片(sharding)是一个通过多台机器分配数据的方法。MongoDB使用分片支持大数据集和高吞吐量的操作。大数据集和高吞吐量的数据库系统挑战着单一服务的...

    小忽悠

扫码关注云+社区

领取腾讯云代金券