博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
elasticsearch技术总结(一)-集群分片
阅读量:2290 次
发布时间:2019-05-09

本文共 1129 字,大约阅读时间需要 3 分钟。

一 分片概念以及设置

分片概念:一个 分片 是一个底层的 工作单元 ,它仅保存了全部数据中的一部分。我们往 Elasticsearch 添加数据时需要用到索引 —— 保存相关数据的地方。索引实际上是指向一个或者多个物理 分片 的 逻辑命名空间。

分片分为主分片和副本,数量可以设置。

举个例子:

假设elasticsearch集群由6台服务器,分别是 node-1、node-2、node-3、node-4、node-5、node-6

分片以及副本的数量在创建索引时候设置:

 
  1. PUT /index-test-1

  2. {

  3. "settings" : {

  4. "index" : {

  5. "number_of_shards" : 6,

  6. "number_of_replicas" : 1,

  7. "max_result_window" : 50000

  8. }

  9. }

  10. }

其中分片数量设置为 6,副本数量设置成 1;即index 包含6个主分片,6个副本,均衡散落在6台服务器上;

下图是kinaba视图,可以看出该索引分片的散落位置

node -1 : 主分片 5 、副本 4                

node -2 : 副本 0 、副本 2

node -3 : 主分片 0 、副本 1                

node -4 : 主分片 3 、主分片 4

node -5 : 副本 3 、副本 5                     

node -6 : 主分片 1 、主分片 2

主分片负责读、写,副本只负责读。

二 分片动态变化

索引创建好之后,在每个节点上的分片或者主从关系并不是一成不变的;

比如node-3 节点因为网络原因失联了,集群该如何应对? (这在生产环境中实际遇见过此问题)

集群会对分片进行再均衡,具体如下:

  1. Node-3 在网络中失联了
  2. Master 立即注意到了这个节点的离线,它决定在集群内提拔其他拥有 node-3 上面的主分片对应的副本分片为主分片; node-2上的副本0提拔为主分片
  3. 在副本被提拔为主分片以后,master 节点开始执行恢复操作来重建缺失的副本。集群中的节点之间互相拷贝分片数据,网卡压力剧增,集群状态尝试变绿。即重新拷贝一个副本1 散落在其他节点。
  4. 由于目前集群处于非平衡状态,这个过程还有可能会触发小规模的分片移动。其他不相关的分片将在节点间迁移来达到一个最佳的平衡状态

分片动态变化保证了集群数据的安全性;同时也会引发其他问题,比如Node-3是偶尔失联,几分钟之内有回来了,那么这些操作也会不会被终止,恰巧如果集群数据量巨大,那么这个机制会引发大量的IO操作,以至于集群卡死。这样的结果肯定不是我们想要的。如何解决这个问题,我们将在另外一篇文章集群管理进行解答。

 

参考:

《Elasticsearch权威指南》

你可能感兴趣的文章
“刚刚”顺丰校招二面+美团社招三面面经,分享给准备冲刺金三银四的你
查看>>
多位阿里专家整理总结多线程与高并发实战开发手册,你都具备了?
查看>>
4面字节跳动,终于“跳进去”了 分享一波字节的面经
查看>>
阿里、字节等大厂Java面试汇总:心态准备+简历+50道高频面试题+面试经验总结
查看>>
阿里架构师吐血整理:从源码到架构的Spring全系列笔记,已全部分享
查看>>
2021年最新京东技术岗现场三面:jvm调优+高并发+算法+网络+数据库+设计模式
查看>>
有了阿里P8大牛手写的720页Java高级面试手册,offer稳了
查看>>
面试官都爱问的Spring源码:Spring与Mybatis高级整合
查看>>
好文推荐:微服务架构下的分布式事务基础入门
查看>>
Spring 异步实现原理与实战分享
查看>>
JVM源码分析之jstat工具原理完全解读
查看>>
面经分享:如何一招破解 Java 集合类面试题?
查看>>
Java注解是如何玩转的,面试官和我聊了半个小时
查看>>
一位阿里P7的面试题经验分享,希望能帮助到你
查看>>
一文Get所有 Redis 性能问题分析手段
查看>>
什么是架构?架构的本质和作用!
查看>>
Java总结:Java多线程
查看>>
从Java码农到年薪八十万的架构师
查看>>
python psutil结合钉钉报警
查看>>
一键升级python
查看>>