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.读取流程
把读请求转发到相关分片,注意,因为大多数搜索都会发送到一个或多个索引,通常需要从多个分片中读取,每个分片都保存这些数据的一部分
从副本组中选择一个相关分片的活跃副本,
发送分片级的读请求到被选中的副本
合并结果并返回