【035】Dubbo3从0到1系列之dubbo-remoting核心接口Endpoint
文章目录
- 2.3 Endpoint接口
- 2.3.1 Endpoint概述
- 2.3.2 消息发送功能
- 2.3.3 生命周期管理
- 2.3.4 设计特点
2.3 Endpoint接口
在 Dubbo 中会抽象出一个 “端点(Endpoint)” 的概念,我们可以通过一个 ip 和 port 唯一确定一个端点,两个端点之间会创建 TCP 连接,可以双向传输数据。Dubbo 将 Endpoint 之间的 TCP 连接抽象为通道(Channel),将发起请求的 Endpoint 抽象为客户端(Client),将接收请求的 Endpoint 抽象为服务端(Server)。这些抽象出来的概念,也是整个 dubbo-remoting-api 模块的基础,下面我们会逐个进行介绍。

Dubbo中Endpoint接口定义

2.3.1 Endpoint概述
Endpoint 接口是 Dubbo 中所有远程通信实体的基础接口,代表了一个可以发送消息、接收消息并管理连接状态的通信端点。
✅ 主要功能
- getUrl(): 获取该端点关联的 URL 配置信息,包含协议、地址、参数等配置
- getChannelHandler(): 获取与该端点绑定的通道处理器,用于处理接收到的消息
- getLocalAddress(): 返回本地地址信息,表示该端点监听的本地 IP 和端口
2.3.2 消息发送功能
void send(Object message) throws RemotingException;
void send(Object message, boolean sent) throws RemotingException;
- 提供两种发送消息的方法,支持同步或异步发送模式
- sent 参数控制是否等待消息真正发送完成后再返回
2.3.3 生命周期管理
- close(): 关闭连接,释放资源
- close(int timeout): 在指定超时时间内优雅关闭连接
- startClose(): 开始关闭流程,标记端点即将被关闭
- isClosed(): 查询当前端点是否已经关闭
2.3.4 设计特点
- 线程安全: 接口设计为线程安全,可以在多线程环境中并发使用
- 原型模式: 每个实例都是独立的原型对象,不共享状态
- SPI 支持: 可通过 Dubbo 的 SPI 机制扩展不同的实现
相关接口继承关系:
- 继承关系: Channel 和 Client 接口都继承自 Endpoint
- 实现关系: RemotingServer 实现了 Endpoint 接口
- 处理器关联: 通过 ChannelHandler 处理消息事件
