ElasticSearch集群详解(定义作用及原理架构)

ElasticSearch集群详解(定义作用及原理架构)-mikechen

ElasticSearch集群定义

ElasticSearch集群指的就是:多个ElasticSearch单个搜索服务器组成的,这些服务器的集合称为集群。

 

ElasticSearch集群作用

ElasticSearch可以作为一个独立的单个搜索服务器,但是单台的处理能力始终是有限的,所以考虑可以通过扩展为集群增加吞吐量。

除此之外,通过集群还可以实现容错和高可用性,提升性能的同时,一并解决高可用的问题。

 

ElasticSearch集群原理

1.ElasticSearch架构

ElasticSearch集群架构,如下图所示:

ElasticSearch集群详解(定义作用及原理架构)-mikechen

通过上图,可以看出ElasticSearch集群是由:多个 Node (节点)组成,每个节点又会分成:主分片与复制分片。

所以,要理解ElasticSearch集群,需要搞明白ElasticSearch集群里的Node 节点以及分片Shard等,下面接着谈。

 

2.集群节点Node

一个 Elasticsearch 实例即一个 Node节点,每个节点上会有多个 shard 分片。

ElasticSearch的配置文件中可以通过node.master、node.data来设置节点类型:

  • node.master:表示节点是否具有称为主节点的资格;
  • node.data:表示节点是否存储数据;

比如:

node.master: true
node.data: true

true:代表的是有资格竞选主节点;

false:代表的是没有资格竞选主节点;

Elasticsearch 默认每个节点都是这样的配置,节点即有成为主节点的资格,又存储数据。

 

3.分片Shard

单台机器无法存储大量数据,为了支持更大量的数据,ElasticSearch可以将一个索引中的数据切分为多个shard分片。

ElasticSearch的分片(shard)机制:将一个索引内部的数据分布地存储于多个节点。

每个分片又分为:

  • 主分片(Primary Shard);
  • 副本分片(Replica Shard);

副本就是对分片的 Copy,每个主分片都有一个或多个副本分片,当主分片异常时,副本可以提供数据的查询等操作,保证数据不丢失。

默认每个主分片有一个复制分片,默认一个索引创建后会有5个主分片,即:5主+5复制=10个分片,一个索引的复制分片的数量可以动态地调整。

 

4.集群健康值

green:所有主要分片和复制分片都可用;

yellow:所有主要分片可用,但不是所有复制分片都可用;

red:不是所有的主要分片都可用。

集群健康值可以通过三面三种颜色来区分,以及了解ElasticSearch集群的健康度。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法