看到探究 | Elasticsearch CPU高排查思路,其实和昨天说的思路一致,首先考虑的就是扩大内存。

但其中有一点,是:插入数据的时候,副本数设置为0。分片数不可以修改,副本数是可以修改的。注意:分片过多,会导致:堆内存压力大。

这点有点疑问,副本和分片有什么差异?

分片(shard)

一个分片驻留在单个节点上,一个节点可以容纳多个分片。
默认情况下,Elasticsearch中的一个新索引分配了五个主要分片。 这意味着我们可以将索引最多扩展到五个节点上,每个节点上都有一个分片。 容量很大,而且完全不需要使用者考虑!ES自动管理和组织分片,并在必要的时候对分片数据进行再平衡分配,所以用户基本上不用担心分片的处理细节,一个分片默认最大文档数量是20亿。

Elasticsearch集群允许系统存储的数据量超过单机容量,实现这一目标引入分片策略shard。在一个索引index中,数据(document)被分片处理(sharding)到多个分片上。Elasticsearch屏蔽了管理分片的复杂性,使得多个分片呈现出一个大索引的样子。


副本(replica)

副本的主要目的是用于故障转移,如《集群内部的生命》中所述:如果拥有主分片的节点死亡,则副本将升级为主角色。
我们通过添加第二个节点来增加索引的容量。添加更多节点不会帮助我们增加索引容量,但是我们可以在搜索时通过增加副本数量来利用额外的硬件。

为了提升访问压力过大是单机无法处理所有请求的问题,Elasticsearch集群引入了副本策略replica。副本策略对index中的每个分片创建冗余的副本,处理查询时可以把这些副本当做主分片来对待(primary shard),此外副本策略提供了高可用和数据安全的保障,当分片所在的机器宕机,Elasticsearch可以使用其副本进行恢复,从而避免数据丢失。


相关参考

Shard Overallocation
Replica Shards
Elasticsearch分片、副本与路由(shard replica routing)



Related Posts: Elasticsearch CPU高排查思路 :

留言