当前位置: 首页>前端>正文

通过postman查询 es 集群信息 es集群查询过程

集群环境部署

es集群环境搭建过程,参考之前写的“Elasticsearch专栏-2.es环境安装”

springboot集成

springboot集成es,无论其实单机还是集群,集成方法都是一样的。参考“Elasticsearch专栏-9.springboot集成es”

集群读写过程

  • es集群组成结构

    从上图中,可以看出来es集群的基本组成单元:
  1. es集群由多个节点组成,每个节点就是一个es实例。
  2. es实例会包含多个索引。每个索引由多个分片组成,
  3. es索引中每个分片就是一个独立的lucence索引。
  4. lucence索引是由多个segment构成。
  5. segment是倒排索引的文档集合。
  6. segment最终存入磁盘,不过在写入过程中,小的segment会合并成大的segment。
  • es集群读写过程

    上图举例的索引是3个分片,每个主分片挂一个副本。现结合上图,简要说下es集群读写过程:
    写过程:
  1. 集群写入时,会先随机选取一个节点(node),该节点可以称之为“协调节点”。
  2. 新文档写入前,es会对其id做hash取模,来确定该文档会分布在哪个分片上。
  3. 当分片位置确定好后,es会判图当前“协调节点”上是否有该主分片。如果有,直接写;如果没有,则会将数据路由到包含该主分片的节点上。
  4. 整个写入过程是,es会将文档先写入主分片上(如p0),写完后再将数据同步一份到副本上(如r0)
  5. 待副本数据也写完后,副本节点会通知协调节点,最后协调节点告知客户端,文档写入结束。

读过程:
1.es引入副本的概念,除了做高可用外,再一个功能就是负载均衡。所以当一个读请求过来时(如根据id查文档),es集群随机选取一个节点作为协调节点处理请求。之后协调节点会对id做取模运算(和写入一样),确定该文档分布在哪些节点上(包含主分片、副本)。之后会将包含该文档主分片、副本所在的节点信息一起返回。由协调节点做负载均衡调用,获取结果。
2.如果做聚合计算,数据会分布在不同分片和节点上。此时,协调节点会将请求发至不同节点,由节点计算完数据后,一并返回给协调节点。协调节点在同一做汇总、聚合、分页等工作。最后将查询数据返回客户端。

高可用原理及验证

es集群高可用的原理是,当某一节点挂掉(或新增一个节点),原数据分片都会重新分配。以三个节点举例(索引分片为3主+1副):当节点挂掉时候,存储在另外两台机器上的该节点主分片对应的副本,其中一个会提升为主分片。而丢失的副本也会重新进行创建。验证结果如下:

原始节点

节点

分片分布

88.207

p1-r0

88.206

p2-p0

88.110

r1-r2

删除一个110节点

节点

分片分布

88.207

p1-r0-r2

88.206

p2-p0-r1

88.110

重启110节点

节点

分片分布

88.207

r1-r0

88.206

p0-r2

88.110

p1-p2

新增101节点

节点

分片分布

88.207

r0

88.206

p0

88.110

p1-p2

88.101

r1-r2

删除101节点

节点

分片分布

88.207

r0-r1

88.206

p0-r2

88.110

p1-p2

88.101



https://www.xamrdz.com/web/2dy1961685.html

相关文章: