Dubbo 框架学习笔记四
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 的核心接口。
版权声明: 本文为 InfoQ 作者【风翱】的原创文章。
原文链接:【http://xie.infoq.cn/article/eb7b9b3f0e36b9022b363342a】。文章转载请联系作者。
评论