以一个30个节点的集群为例,介绍一下ES的集群角色
在上面每个框代表一个节点。
主节点:master-node,职责:控制整个集群的元数据的管理:索引的分片信息,主副本的信息,分片的节点对应的关系。index的,就只有一个master节点,单节点的,setting配置信息。类似于kafka中的controller,类似于rocketmq的namesever
合格的主节点:候选人:和master保证心跳。会参会选举,时时刻刻等待着变成master。我们配置的都是候选人,系统动态的过程选出master节点。
数据节点:管理所有的主副分片,存数据的。类似kafka中的Broker:不光是控制节点,还是非控制节点,它都承担了数据节点的角色,管理数据的,它都管理了topic下的potation的。类似于rocketmq的broker:只不过主分片:master,和副分片是分开的:slave。在es中一个node既能管理所有的主副分片。类似于redis集群中对应的是node。
数据节点的职责:
1、该节点用于建立文档索引,接收应用创建索引
2、接收用户的搜索请求
搜索请求有两个阶段:
①、在请求query阶段,协调节点将请求转发到 保存数据的数据节点
在每个数据节点在本地执行请求并将其结果返回给协调节点
②、在收集fetch阶段,协调节点将每个数据节点的结果汇集为单个全局结果集
协调节点:如果我要检索我是中国人,假设在每个分片都有文档。30个分片里面分成30个部分,这个汇总和合并,排序的工作由协调节点来做,最终结果的挑选由协调节点来做,本身没有任何的分片,不存储数据。
ingest转换节点:在写的过程当中,转换节点用的,写的时候写到Ingest节点,做数据的预处理,过滤,数据类型的转换。写到正本上,满足对数据预处理的,也可以让协调节点来做.
任何的节点承担上面的任何的角色一个或者多个,通过简单的配置就可以了。
部落节点:超大的集群会有这个角色。有专门的程序来配置的,是另一个包来配置的