ES初探之——shard和replica

ES中shard和replica

  1. index包含多个shard
  2. 每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力
  3. 增减节点时,shard会自动在nodes中负载均衡
  4. primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica shard中,不可能存在于多个primary shard
  5. replica shard是primary shard的副本,负责容错,以及承担读请求负载
  6. primary shard的数量在创建索引的时候就固定了,replica shard的数量可以随时修改
  7. primary shard的默认数量是5,replica默认是1,默认有10个shard,5个primary shard,5个replica shard
  8. primary shard不能和自己的replica shard放在同一个节点上(否则节点宕机,primary shard和副本都丢失,起不到容错的作用),但是可以和其他primary shard的replica shard放在同一个节点上

在这里插入图片描述

当索引创建完成的时候,主分片的数量就固定了,但是复制分片的数量可以随时调整。
让我们在集群中唯一一个空节点上创建一个叫做blogs的索引。默认情况下,一个索引被分配5个主分片,但是为了演示的目的,我们只分配3个主分片和一个复制分片(每个主分片都有一个复制分片):

当索引创建完成的时候,主分片的数量就固定了,但是复制分片的数量可以随时调整。
让我们在集群中唯一一个空节点上创建一个叫做blogs的索引。默认情况下,一个索引被分配5个主分片,但是为了演示的目的,我们只分配3个主分片和一个复制分片(每个主分片都有一个复制分片):
PUT /blogs
{
   "settings" : {
      "number_of_shards" : 3,
      "number_of_replicas" : 1
   }
}

附带索引的单一节点集群: 有一个索引的单一节点集群
在这里插入图片描述

我们的集群现在看起来就像上图——三个主分片都被分配到Node 1。
在同一个节点上保存相同的数据副本是没有必要的,如果这个节点故障了,
那所有的数据副本也会丢失。

如果我们启动了第二个节点,这个集群看起来就像下图。
双节点集群——所有的主分片和复制分片都已分配: 

在这里插入图片描述

第二个节点已经加入集群,三个复制分片(replica shards)也已经被分配了
——分别对应三个主分片,这意味着在丢失任意一个节点的情况下依旧可以保证数据的完整性。

文档的索引将首先被存储在主分片中,然后并发复制到对应的复制节点上。
这可以确保我们的数据在主节点和复制节点上都可以被检索。
随着应用需求的增长,我们该如何扩展?
如果我们启动第三个节点,集群会重新组织自己

在这里插入图片描述

参考来源:https://blog.csdn.net/jiaojiao521765146514/article/details/82761645
https://es.xiaoleilu.com/010_Intro/00_README.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值