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

`TransportService` 是 **Elasticsearch 传输层的“中枢路由器”**

`TransportService` 是 **Elasticsearch 传输层的“中枢路由器”**,负责把节点间的 **所有请求(搜索、集群状态、索引、恢复、快照、许可证……)** 通过 **TCP 连接** 发出去、收回来,并管理 **连接生命周期、超时、重试、压缩、流控和反压**。  
一句话:  
> **“TransportService 就是 Elasticsearch 的『RPC 总线』,所有跨节点调用都要经过它。”**

---

### ✅ 1. 核心职责(8.x)

| 功能 | 说明 |
|---|---|
| **节点间 RPC** | 发送任意 `TransportRequest`,接收 `TransportResponse`,支持同步/异步/批量。 |
| **连接管理** | 维护与其他节点的长连接池(TCP keep-alive、重连、断线剔除)。 |
| **处理器注册** | 通过 `registerRequestHandler` 把各种业务逻辑(搜索、集群、索引、快照…)挂到 `action` 字符串上。 |
| **流控/反压** | 基于 Netty 的 `ByteBuf` 管理,防止 OOM。 |
| **压缩** | 支持压缩阈值配置,默认开启。 |
| **安全** | 集成 TLS/SSL、节点认证、许可控制。 |

---

### ✅ 2. 典型调用链(任意业务 → TransportService)

```text
业务代码(如 SearchTransportService)
↓ 构造 TransportRequest
TransportService.sendRequest(connection, ACTION_NAME, request, listener)
↓ Netty
对端节点 TransportService
↓ 查找 handler
TransportRequestHandler.handle(request, channel, task)
↓ 业务逻辑
channel.sendResponse(response)
```

---

### ✅ 3. 与 SearchTransportService 的关系

- **SearchTransportService** 只是对 `TransportService` 的 **薄封装**,把搜索相关的 `ACTION_NAME` 和序列化逻辑注册到 `TransportService`。
- 其他模块(如 `TransportClusterStateAction`、`TransportShardBulkAction`、`TransportSnapshotRestoreAction`…)同样通过 `TransportService` 完成跨节点通信。

---

### ✅ 4. 关键 API(8.x)

| 方法 | 用途 |
|---|---|
| `sendRequest(node, action, request, listener)` | 发请求 |
| `registerRequestHandler(action, requestReader, executor, handler)` | 注册处理逻辑 |
| `connectToNode(node)` / `disconnectFromNode(node)` | 连接管理 |
| `getConnection(node)` | 获取连接池对象 |

---

### ✅ 一句话总结

> `TransportService` 是 **Elasticsearch 所有节点间通信的“高速公路”**,搜索、集群、索引、恢复、快照等模块都只是在这条路上跑的不同“车次”。

http://www.xdnf.cn/news/15804.html

相关文章:

  • SparseTSF:用 1000 个参数进行长序列预测建模
  • RabbitMQ面试精讲 Day 4:Queue属性与消息特性
  • Java拓扑排序:2115 从给定原材料中找到所有可以做出的菜
  • LWJGL教程(2)——游戏循环
  • 网络(HTTP)
  • 【实战1】手写字识别 Pytoch(更新中)
  • 【no vue no bug】 npm : 无法加载文件 D:\software\nodeJS\node22\npm.ps1
  • 嵌入式硬件篇---舵机(示波器)
  • 小架构step系列20:请求和响应的扩展点
  • 解锁Phpenv:轻松搭建PHP集成环境指南
  • 使用“桥接模式“,实现跨平台绘图或多类型消息发送机制
  • 抓包工具使用教程
  • PaliGemma 2-轻量级开放式视觉语言模型
  • 【RocketMQ 生产者和消费者】- 消费者发起消息拉取请求 PullMessageService
  • ps2025下载与安装教程(附安装包) 2025最新版photoshop安装教程
  • 群组功能实现指南:从数据库设计到前后端交互,上班第二周
  • SElinux和iptables介绍
  • Kafka——Java生产者是如何管理TCP连接的?
  • MCP 协议详细分析一 initialize ping tools/list tools/call
  • C++数据结构————集合
  • 暑期训练8
  • 读书笔记:最好使用C++转型操作符
  • MCP 协议详细分析 二 Sampling
  • NX二次开发常用函数——从一个坐标系到另一个坐标系的转换(UF_MTX4_csys_to_csys )相同体坐标转化
  • Supertest(Node.js)接口测试
  • NJU 凸优化导论(9) 对偶(II)KKT条件+变形重构
  • 笔试强训——第一周
  • 阿里云服务器 CentOS 7 安装 MySQL 8.4 超详细指南
  • 2025年医疗人工智能发展现状
  • 网络基础DAY14-可靠性概念及要求+链路聚合