ElasticSearch集群定义
ElasticSearch集群指的就是:多个ElasticSearch单个搜索服务器组成的,这些服务器的集合称为集群。
ElasticSearch集群作用
ElasticSearch可以作为一个独立的单个搜索服务器,但是单台的处理能力始终是有限的,所以考虑可以通过扩展为集群增加吞吐量。
除此之外,通过集群还可以实现容错和高可用性,提升性能的同时,一并解决高可用的问题。
ElasticSearch集群原理
1.ElasticSearch架构
ElasticSearch集群架构,如下图所示:
通过上图,可以看出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面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》