ElasticSearch 集群内的原理

ElasticSearch 集群内的原理

参考文档

  1. Elasticsearch: 权威指南 » 基础入门 » 集群内的原理 » 空集群
  2. Elasticsearch: 权威指南 » 基础入门 » 集群内的原理 » 水平扩容

集群内的原理

一个运行中的 Elasticsearch 实例称为一个节点,而集群是由一个或多个相同 cluster.name 配置的节点组成,
它们共同承担数据和负载的压力。当有节点加入或移除时,集群将会重新平均分部所有的数据。

当一个节点被选举为称为主节点时,它将负责管理集群范围内的所有变更,例如增加、删除索引,或者增加删除节点等。
而主节点并不需要涉及到文档级别的变更和搜索等操作,所以当集群中只拥有一个主节点的情况下,即使流量的增加它
也不会称为瓶颈。任务节点都可以称为主节点。

作为用户,我们可以将请求发送到集群中的任何节点,包括主节点。每个节点都知道任意文档所处的位置,并且能够将
我们的请求直接转发到存储我们所需文档的节点。无论我们将请求发送到哪个节点,它都能负责从各个包含我们所需文档
的节点收集回数据,并将最终结果返回给客户端。

我们往 Elasticsearch 添加数据时需要用到索引——保存相关数据的地方。索引实际上是指向一个或多个物理分片的逻辑
命名空间。

一个分片是一个底层的工作单元,它仅保存了全部数据中的一部分。一个分片是一个 Lucene 的实例,它本身就是一个完整
的搜索引擎。我们的文档被存储和索引到分片内。应用程序直接与索引交互,不与分片交互。

Elasticsearch 利用分片将数据分发到集群内各处的。分片是数据的容器,文档保存在分片内,分片又被分配到集群内的各个
节点里。当你的集群规模扩大或者缩小时,Elasticsearch 会自动的在各节点中迁移分片,使得数据仍然均匀分布在集群里。

一个分片可以是主分片或者副本分片。索引内任意一个文档都归属于一个主分片,所以主分片的数据决定这索引能够保存的最大数据量。

一个副本分片只是一个主分片的拷贝。副本分片作为硬件故障时保护数据不丢失的冗余备份,并为搜索和返回文档等操作提供服务。

在索引建立的时候就已经确定了主分片数,但是副本分片数可以随时被修改。索引在默认情况下会被分配 5 个主分片。

添加故障转移

当你在同一台机器上启动了第二个节点时,只要它和第一个节点有同样的 cluster.name,它就会自动发现集群并加入到其中。
但是在不同机器上启动节点的时候,为了加入到同一集群,需要配置一个可连接到的单播主机列表。

当第二个节点加入到集群后,3个副本分片将会分配到这个节点上,每个主分片对应一个副本分片。这意味着当集群内任何一个节点
出现问题时,我们的数据都完好无缺。

所有新近被索引的文档都将会保存在主分片上,然后被并行的复制到对应的副本分片上。这就保证了我们既可以从主分片又可以从副本
分片上获得文档。

水平扩容

Cluster

Node 1 和 Node 2 上各有一个分片被迁移到了新的 Node 3 节点,现在每个节点都拥有 2 个 分片,而不是之前的 3 个。这表示
每个节点的硬件资源(CPU,RAM, I/O)都将被更少的分片所共享,每个分片的性能将会得到提升。

分片是一个功能完整的搜索引擎,它拥有使用一个节点上所有资源的能力。我们这个拥有 6 个分片(3 个主分片和 3 个副本分片)的索引
可以最大扩容到 6 个节点,每个节点上存在一个分片,并且每个分片拥有所在节点的全部资源。

主分片的数目在索引创建时就已经确定了下来。实际上,这个数据定义了这个索引能够存储的最大数据亮。但是,读操作——搜索和返回数据——
可以同时被主分片或副本分片所处理,所以当你拥有越多的副本分片时,也将拥有越高的吞吐量。

在运行的集群上是可以动态调整副本分片数目的,我们可以按需伸缩集群。

PUT /blogs/_settings
{
   "number_of_replicas" : 2
}

blogs 索引现在拥有 9 个分片:3 个主分片和 6 个副本分片。这意味着我们可以将集群扩容到 9 个节点上,每个节点一个分片。相比原来
3 个节点时,集群搜索性能可以提升 3 倍。

当然,如果只是在相同节点数据的集群上增加更多的副本分片并不能提高性能,因为每个分片从节点上获得的资源会变少。需要增加更多的硬件
资源来提升吞吐量。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值