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

Elasticsearch 节点角色详解及协调节点请求策略

引言

Elasticsearch 集群中的节点可以承担多种角色,如主节点、数据节点、预处理节点和协调节点。合理配置和理解这些节点角色,对于保障集群的高可用性、性能优化以及请求调度至关重要。本文将深入解析各类节点的职责与配置方式,并介绍如何通过客户端实现请求只发送到协调节点的实践方法,帮助您更好地设计与运维 Elasticsearch 集群架构。

节点种类

一个节点可以同时扮演多个角色,包括 Master Node、Data Node、Coordinating Node 和 Ingest Node。事实上,默认情况下,Elasticsearch 中的所有节点通常都是多角色节点(三个配置默认值都为true),即它们可以同时充当 Master Node、Data Node、Coordinating Node 和 Ingest Node 的角色。这种多角色的配置可以在小规模集群中简化架构,并且在资源有限的情况下有效利用每个节点的能力。

一个节点同时是Master Node、Data Node、Ingest Node。

node.master: true
node.data: true
node.ingest: true

主节点(Master Node)

负责管理集群的状态,包括节点的加入和离开、索引的创建和删除、分片的分配和重分配等。建议配置至少三个 Master Node 作为候选主节点以确保高可用性,一个 ES 集群只能有一个主节点。

node.master: true
node.data: false
node.ingest: false

数据节点(Data Node)

存储实际的数据,并处理所有数据相关的操作,如文档的创建、更新、删除,以及搜索和聚合请求。

node.master: false
node.data: true
node.ingest: false

预处理节点(Ingest Node)

通过预处理管道(Ingest Pipeline)在文档被索引之前对其进行各种处理,例如添加字段、删除字段、修改字段值等。当使用Ingest Pipelines时,Elasticsearch会将文档发送到Ingest Node。

node.master: false
node.data: false
node.ingest: true

协调节点(Coordinating Node)

接收来自客户端的请求,并将这些请求进行请求接收与分发、查询合并以及负载均衡等功能。

node.master: false
node.data: false
node.ingest: false

如何能让请求只发送到协调节点?

如果想请求只发送到协调节点,可以通过RestHighLevelClient创建客户端时指定节点,客户端会轮询这些节点进行请求来实现。

// 创建RestHighLevelClient实例,连接到Elasticsearch集群中的多个节点
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("node1.example.com", 9200, "http"), // 集群中的第一个节点new HttpHost("node2.example.com", 9200, "http"), // 集群中的第二个节点new HttpHost("node3.example.com", 9200, "http")  // 集群中的第三个节点)
);

注:官方说,协调节点最好不要单独分离出来,跟数据节点在一起就行。分离开的意义不大。


感谢您的阅读!如果文章中有任何问题或不足之处,欢迎及时指出,您的反馈将帮助我不断改进与完善。期待与您共同探讨技术,共同进步!

http://www.lryc.cn/news/2387454.html

相关文章:

  • 视频逐帧提取图片的工具
  • 数据结构第1章编程基础 (竟成)
  • 互联网大厂Java求职面试:AI大模型与云原生架构融合中的挑战
  • msql的乐观锁和幂等性问题解决方案
  • Python 实现桶排序详解
  • 大模型(5)——编码器(Encoder)、解码器(Decoder)
  • Web3怎么本地测试连接以太坊?
  • Vue-02 (使用不同的 Vue CLI 插件)
  • 理解vue-cli 中进行构建优化
  • 理解计算机系统_线程(九):线程安全问题
  • vue3基本类型和对象类型的响应式数据
  • 3.8.4 利用RDD实现分组排行榜
  • python web flask专题-Flask入门指南:从安装到核心功能详解
  • C语言中的“类框架”工具
  • 【HW系列】—web组件漏洞(Strtus2和Apache Log4j2)
  • 第六十八篇 从“超市收银系统崩溃”看JVM性能监控与故障定位实战
  • Debian 11 之使用hostapd与dnsmasq进行AP设置
  • 有铜半孔的设计规范与材料创新
  • 机器学习知识体系:从“找规律”到“做决策”的全过程解析
  • STM32之FreeRTOS移植(重点)
  • 做好测试用例设计工作的关键是什么?
  • R语言科研编程-标准偏差柱状图
  • 未来教育考试答题软件4.0【自用链接备份】
  • OpenGL Chan视频学习-11 Uniforms in OpenGL
  • Flink系列文章列表
  • GitLab 从 17.10 到 18.0.1 的升级指南
  • 产业集群间的专利合作关系
  • PyQt学习系列02-模型-视图架构与数据管理
  • redis主从复制架构安装与部署
  • Kotlin 中 Lambda 表达式的语法结构及简化推导