yangyang12138

导航

es(一)

1.概述

  Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。

2.启动流程

  1) 选举主节点

  2) 选举集群元信息

  3) allocation过程

  4) index recovery

  5) 集群启动日志

3.选主流程

  bully算法

    假定所有节点都有一个唯一的ID,使用该ID对节点进行排序,任何时候的当前leader都是参与集群的最高id节点,

  

 

  执行本流程的线程池是generic

  

  选举完临时master以后,每个节点开始执行一个流程,对于master节点

    等待所有节点加入集群,如果超时则此次选举失败,若成功发布新的clusterState

  对于非master节点则向master发起join请求。等master发布clusterState后确认join。

4.写入流程

    写请求进入主副本节点,节点为该操作分配SN,使用该SN创建UpdateRequest结构,然后将该UpdateRequest插入自己的prepare list。

    主副本节点将携带SN的updateRequest发往从副本节点,从节点收到后同样插入prepare list,完成后给主副本节点回复一个ACK

    一旦主副本节点收到所有从副本节点的响应,确定该数据已经被正确写入所有的从副本节点,此时认为可以提交了,将此updateRequest放入commit list

    主副本节点回复客户端更新成功,想从副本节点发送commit。

5.读取流程

  把读请求转发到相关分片,注意,因为大多数搜索都会发送到一个或多个索引,通常需要从多个分片中读取,每个分片都保存这些数据的一部分

  从副本组中选择一个相关分片的活跃副本,

  发送分片级的读请求到被选中的副本

  合并结果并返回

 

posted on 2020-08-07 01:51  杨杨09265  阅读(106)  评论(0编辑  收藏  举报