网络协议

对于 Dubbogo 微服务框架来说,网络协议是远程过程调用中负责网络通信的模块,负责从应用层到网络层的数据序列化、打包、请求发起、网络端口监听等功能。Dubbogo 为协议抽象了一组接口,如下所示

type Protocol interface {
// Export service for remote invocation
Export (invoker Invoker) Exporter
// Refer a remote service
Refer(url *common.URL) Invoker
// Destroy will destroy all invoker and exporter, so it only is called once.
Destroy()
}

该接口包含三个方法。其中,Export 方法负责服务的暴露过程,输入参数 invoker 是 dubbo 的概念,封装了一个可被调用的实例。在具体的网络协议(例如 Triple)实现的 Export 方法中,对于具体的协议,会将用一定逻辑封装好的可调用实例 Invoker 以网络端口监听的形式暴露给外部服务,外部对该网络端口的请求会被 Export 方法开启的监听协程获取到,然后会根据网络协议进行解包反序列化,得到解析后的请求数据。

Refer 方法负责服务的引用过程,输入参数 url 是 dubbo 框架的通用结构,可以描述一个你想要引用的服务,url 参数中包含了你想要引用服务的多个参数,例如对应服务的接口名、版本号(version)、使用协议(protocol)等等。在具体的网络协议(例如 Triple)实现的 Refer 方法中,会将具体的网络协议封装到 Invoker 可调用实例的方法中,用户层发起的 RPC 调用可以直接通过返回的 Invoker 对象发起对应协议的网络请求。

Destroy 方法用于销毁当前暴露的服务,用于服务下线场景。Dubbogo 框架拥有优雅下线机制,可以在服务进程终止前以监听信号的形式将所有已启动的服务进行注销。


上次修改时间:2023 年 1 月 2 日:增强 Dubbogo 文档 (#1800) (71c8e722740)