- 扫描指定路径中的需要注册的服务及其暴露的方法,缓存在本地
- 获取服务的实现类,初始化并注册(放入本地内存中)
- 监听端口
- 解析请求体,获取模块号和操作号和有关参数信息
- 通过注册好的对象,反射执行方法,获取执行结果
- 序列化结果并返回响应
和服务端一样,进行扫描,缓存信息
- 生成代理
- 如果服务为本地实现类直接调用本地方法,否则进行rpc调用
- 将调用的服务和方法封装为符合指定协议的请求体,发送请求到指定ip和端口
- 将响应反序列化,得到调用结果
- 返回代理的执行结果
用于RPC中传输数据,一般将数据转换为二进制格式,节省开销。 该项目采用自定义的序列化协议,以Netty的ByteBuf为基础进行序列化:https://github.com/AzeroCoder/MySerializer
- 包号:即分隔符,用于分包,避免粘包现象
- 模块号:访问的资源,映射为类
- 操作号:访问的方式,映射为方法
- 具体数据的大小和内容(需要序列化)