节点职责
节点按照职责可以分为:
- master节点
- 数据节点
- 协调节点
节点类型可以进行单独配置。默认情况下,集群不会对节点角色进行划分,所有节点都是平等的,可以担任所有的职责。但是在生产环境中需要对这些节点的角色进行最优划分,否则在高并发请求的情况下,集群容易出现服务阻塞超时甚至服务崩溃的隐患。
master节点
master节点负责维护整个集群的相关工作,管理集群的变更,如创建/删除索引、节点健康状态监测、节点上/下线等。
数据节点
数据节点主要负责索引数据的保存工作,此外也执行数据的其他操作,如文档的删除、修改和查询操作。
数据节点的很多工作是调用Lucene库进行Lucene索引操作,因此这种节点对于内存和I/O的消耗比较大,生产环境中应多注意数据节点的计算机负载情况
协调节点
客户端可以向ES集群的节点发起请求,这个节点叫作协调节点。
在默认情况下,协调节点可以是集群中的任意节点,此时它的生命周期是和一个单独的请求相关的。也就是说,当客户端向集群中的某个节点发起请求时,此时该节点被称为当前请求的协调节点;当它将响应结果返回给客户端后,该协调节点的生命周期就结束了。
为了降低集群的负载,可以设置某些节点作为单独的协调节点。
路由计算
当客户端向一个ES协调节点发送一条数据的写入请求时,协调节点会根据数据获取分片ID的计算公式【shard=hash(routing)%number_of_primary_shards】来确认当前数据应该存储在哪个节点。
文档读写过程
当ES协调节点接收到来自客户端对某个索引的写入文档请求时,该节点会根据一定的路由算法将该文档映射到某个主分片上,然后将请求转发到该分片所在的节点。
完成数据的存储后,该节点会将请求转发给该分片的其他副分片所在的节点,直到所有副分片节点全部完成写入,ES协调节点向客户端报告写入成功
参考文章
##
https://blog.csdn.net/ntzzzsj/article/details/126021342