写点什么

Dubbo 框架学习笔记四

作者:风翱
  • 2021 年 12 月 17 日
  • 本文字数:755 字

    阅读完需:约 2 分钟

Dubbo 框架学习之 dubbo-remoting 模块,此模块提供了多种客户端和服务端通信的功能。


Dubbo 的整体架构设计图中 Remoting 层,其中包括了 Exchange、Transport 和 Serialize 三个子层次。其中 dubbo-remoting 模块主要对应 Exchange 和 Transport 两层。


Dubbo 并没有自己实现一套完整的网络库,而是使用现有的、相对成熟的第三方网络库,例如,Netty、Mina 或是 Grizzly 等 NIO 框架。我们可以根据自己的实际场景和需求修改配置,选择底层使用的 NIO 框架。对应的,dubbo-remoting-netty4 子模块使用 Netty4 实现 Dubbo 的远程通信,dubbo-remoting-grizzly 子模块使用 Grizzly 实现 Dubbo 的远程通信,dubbo-remoting-zookeeper 使用 Apache-Curator 实现了与 Zookeeper 的交互。


其中 dubbo-remoting-api 是其他 dubbo-remoting-* 模块的顶层抽象,其他 dubbo-remoting 子模块都是依赖第三方 NIO 库实现 dubbo-remoting-api 模块的。


dubbo-remoting-api 包含的主要包:

  • buffer 包:定义了缓冲区相关的接口、抽象类以及实现类。缓冲区在 NIO 框架中是一个不可或缺的角色,在各个 NIO 框架中都有自己的缓冲区实现。这里的 buffer 包在更高的层面,抽象了各个 NIO 框架的缓冲区,同时也提供了一些基础实现。

  • exchange 包:抽象了 Request 和 Response 两个概念,并为其添加很多特性。这是整个远程调用非常核心的部分。

  • transport 包:对网络传输层的抽象,但它只负责抽象单向消息的传输,即请求消息由 Client 端发出,Server 端接收;响应消息由 Server 端发出,Client 端接收。有很多网络库可以实现网络传输的功能,例如 Netty、Grizzly 等, transport 包是在这些网络库上层的一层抽象。

  • 其他接口:Endpoint、Channel、Transporter、Dispatcher 等顶层接口放到了 org.apache.dubbo.remoting 这个包,这些接口是 Dubbo Remoting 的核心接口。


发布于: 刚刚阅读数: 2
用户头像

风翱

关注

还未添加个人签名 2017.11.24 加入

勇于尝试,持续成长

评论

发布
暂无评论
Dubbo框架学习笔记四