wwbmmm commented on code in PR #3535:
URL: https://github.com/apache/brpc/pull/3535#discussion_r4068740726


##########
docs/cn/handshake_common_design.md:
##########
@@ -0,0 +1,499 @@
+# RDMA、URMA、UBSHM 公共握手设计(修订版)
+
+## 1. 文档目的
+
+本文在现有公共 framing、`HandshakeSession` 和协议字段 adapter 的基础上,进一步明确四个职责边界:
+
+1. `Socket` 只感知一个顶层 `AdapterTransport`,不感知 TCP、RDMA、URMA、UBSHM,也不感知握手 phase。
+2. `AdapterTransport` 自动完成连接升级;升级成功或回退 TCP 后,统一通知 `Socket` 建链完成。
+3. 具体 Transport 只提供握手所需的资源操作接口;握手顺序、状态转换和 fallback 由上层统一编排。
+4. Transport 只负责数据传输和资源生命周期,不负责 TCP 建链、wire framing、握手状态机或握手流程编排。
+
+本文只定义架构和迁移方向,不改变 RDMA/URMA/UBSHM 当前 wire format。
+
+## 2. 当前问题
+
+现有实现已经抽取了 `HandshakeSession`、`HandshakeCodec` 和公共 framing,但职责仍未完全收敛:
+
+- `ProcessHandshakeAtClient` 仍位于具体 Transport 或 endpoint 路径中,client 的握手入口不统一。
+- `RdmaTransport`、`UBShmTransport` 等仍通过各自的 `S_*` 常量暴露握手阶段;`HandshakePhases` 
需要填入不同 transport 的 phase,公共 session 无法真正统一。
+- server handshake adapter 需要通过 `Socket` 找到 `AdapterTransport`,再找到具体 
Transport,并且直接驱动资源创建、激活和 fallback。
+- `AdapterTransport` 虽然已经是 `Socket` 的顶层对象,但握手的 client/server 
入口、连接完成通知和数据面切换仍分散在多个层次。
+- “握手成功”与“Socket 建链完成”不是同一个明确事件,导致 TCP fallback、升级成功和异常退出的发布顺序难以验证。
+
+根因是把“传输能力”和“建链流程”混在了一起。Transport 是被流程调用的参与者,不应成为流程的拥有者。
+
+## 3. 目标架构
+
+### 3.1 分层
+
+```text
+Socket
+  |
+  v
+AdapterTransport                         Socket 唯一感知的 Transport
+  |-- TcpTransport                       TCP 控制面和 fallback 数据面
+  |-- HighSpeedTransport                 RDMA / URMA / UBSHM 数据面
+  |-- ConnectionUpgradeCoordinator       统一的建链与升级编排
+  |     |-- HandshakeSession              公共状态机、I/O、framing
+  |     |-- HandshakeCodec                协议 wire 字段编解码
+  |     |-- TransportUpgradeOps           被调用的资源阶段接口
+  |     `-- SocketConnectionNotifier      建链完成/失败通知
+  `-- ActiveTransport                    根据统一状态选择数据面
+```
+
+这里的 `ConnectionUpgradeCoordinator` 可以先作为 `AdapterTransport` 
的内部实现,不要求立即新增独立公开类;重要的是职责必须集中在该层,而不是分散到具体 Transport。
+
+### 3.2 依赖方向
+
+```text
+Socket -> AdapterTransport -> TcpTransport / HighSpeedTransport
+Socket -> AdapterTransport -> ConnectionUpgradeCoordinator
+ConnectionUpgradeCoordinator -> TransportUpgradeOps
+ConnectionUpgradeCoordinator -> HandshakeSession
+TransportUpgradeOps -> transport-specific endpoint/resource
+```
+
+禁止以下反向依赖:

Review Comment:
   AI废话太多。



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to