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

`SearchTransportService` 是 **协调节点与数据节点之间“搜索子请求”通信的运输层**

`SearchTransportService` 是 **协调节点与数据节点之间“搜索子请求”通信的运输层**,它把**协调节点**发出的 **查询阶段、取回阶段、DFS 阶段、滚动上下文等** 请求 **序列化并通过 TCP 发送给各个数据节点**,再把数据节点的返回结果 **反序列化后交还给协调节点**。

一句话:  
> **“协调节点不直接调用 SearchService,而是通过 SearchTransportService 把请求发出去,让数据节点上的 SearchService 干活。”**

---

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

| 职责 | 说明 |
|---|---|
| **发送子请求** | `sendExecuteQuery`、`sendExecuteFetch`、`sendExecuteDfs`、`sendFreeContext` … |
| **注册处理器** | 在启动时把 `SearchService` 的各阶段方法注册为 `TransportRequestHandler`,让数据节点能够接收并执行。 |
| **结果回调** | 所有方法都是 **异步** 的,返回 `ActionListener<SearchPhaseResult>` 给协调节点。 |
| **连接管理** | 内部封装 `TransportService`,自动处理节点下线、重试、超时。 |

---

### ✅ 典型调用链(协调节点 → 数据节点)

```
协调节点 SearchPhase
↓ 调用 SearchTransportService.sendExecuteQuery(...)
↓ TCP
数据节点 SearchTransportService → 对应 RequestHandler
↓ 调用 SearchService.executeQueryPhase(...)
↓ 返回结果
↓ TCP
协调节点 listener.onResponse(...)
```

---

### ✅ 关键源码片段(8.x)

```java
// 协调节点:TransportSearchAction → InitialSearchPhase
searchTransportService.sendExecuteQuery(
connection,
queryShardRequest,
new ActionListener<QuerySearchResult>() { ... });

// 数据节点:启动时注册
transportService.registerRequestHandler(
QUERY_ACTION_NAME,
QuerySearchRequest::new,
ThreadPool.Names.SEARCH,
(request, channel, task) -> {
QuerySearchResult result = searchService.executeQueryPhase(request, (SearchShardTask) task);
channel.sendResponse(result);
});
```

---

### ✅ 一句话总结

> `SearchTransportService` 是 **协调节点与数据节点之间的“搜索 RPC 层”**,所有跨节点的查询/取回/DFS/滚动请求都经它转发,真正的查询逻辑仍落在数据节点的 `SearchService`。

http://www.dtcms.com/a/289912.html

相关文章:

  • 如何用immich将苹果手机中的照片备份到指定文件夹
  • 开发工具缓存目录
  • 零基础学习性能测试第一章:核心性能指标-响应时间
  • 单链表的手动实现+相关OJ题
  • PostgreSQL 字段类型速查与 Java 枚举映射
  • 【硬件】GalaxyTabPro10.1(SM-T520)刷机/TWRP/LineageOS14/安卓7升级全过程
  • 讲座|人形机器人多姿态站起控制HoST及宇树G1部署
  • C++ 并发 future, promise和async
  • 2025年AIR SCI1区TOP,缩减因子分数阶蜣螂优化算法FORDBO,深度解析+性能实测
  • 基于51单片机的温湿度检测系统Protues仿真设计
  • 创建一个触发csrf的恶意html
  • 低速信号设计之I3C篇
  • windows11环境配置torch-points-kernels库编译安装详细教程
  • 【前端】懒加载(组件/路由/图片等)+预加载 汇总
  • NJU 凸优化导论(10) Approximation+Projection逼近与投影的应用(完结撒花)
  • InfluxDB 数据模型:桶、测量、标签与字段详解(二)
  • springboot --大事件--文章管理接口开发
  • 简洁高效的C++终端日志工具类
  • 响应式编程入门教程第七节:响应式架构与 MVVM 模式在 Unity 中的应用
  • SEO中关于关键词分类与布局的方法有那些
  • 【实战1】手写字识别 Pytoch(更新中)
  • Codes 通过创新的重新定义 SaaS 模式,专治 “原教旨主义 SaaS 的水土不服
  • 一文速通《二次型》
  • 复盘与导出工具最新版V27.0版本更新-新增财联社涨停,自选股,表格拖拽功能
  • Agentic-R1 与 Dual-Strategy Reasoning
  • Raspi4 切换QNX系统
  • cmake语法学习笔记
  • 模电基础-开关电路和NE555
  • 【2025西门子信息化网络化决赛】模拟题+技术文档+实验vrrp standby vxlan napt 智能制造挑战赛 助力国赛!
  • Linux之conda安装使用