本文介绍 SOFARPC 的架构模块。
工程架构
SOFARPC 架构如下所示:SOFARPC 从下到上分为两层:
核心层:包含了 RPC 的核心组件(例如各种接口、API、公共包)以及一些通用的实现(例如随机等负载均衡算法)。
功能实现层:所有的功能实现层的用户都是平等的,都是基于扩展机制实现的。
模块划分
SOFARPC 各个模块的实现类都只在自己模块中出现,一般不交叉依赖。需要交叉依赖的实现类已经全部抽象到 core 或者 common 模块中。
模块划分如下:
模块名 | 子模块名 | 中文名 | 说明 | 依赖 |
all | - | 发布打包模块 | 需要打包的全部模块。 | all |
bom | - | 依赖管控模块 | 依赖版本管控。 | 无 |
example | - | 示例模块 | - | all |
test | - | 测试模块 | 包含集成测试 | all |
core | api | API模块 | 各种基本流程接口、消息、上下文、扩展接口等。 | common |
core | common | 公共模块 | utils、数据结构。 | exception |
core | exception | 异常模块 | 各种异常接口等。 | common |
bootstrap | - | 启动实现模块 | 启动类,发布或者引用服务逻辑以及 registry 的操作。 | core |
proxy | - | 代理实现模块 | 接口实现代理生成。 | core |
client | - | 客户端实现模块 | 发送请求、接收响应、连接维护、路由、负载均衡、同步异步等。 | core |
server | - | 服务端实现模块 | 启动监听、接收请求,发送响应、业务线程分发等。 | core |
filter | - | 拦截器实现模块 | 服务端和客户端的各种拦截器实现。 | core |
codec | - | 编解码实现模块 | 例如压缩,序列化等。 | core |
protocol | - | 协议实现模块 | 协议的包装处理、协商。 | core |
transport | - | 网络传输实现模块 | TCP 连接的建立、数据分包粘包处理、请求响应对象分发等。 | core |
registry | - | 注册中心实现模块 | 实现注册中心,例如 zk。 | core |