1 简介
1 注册中心采用zookeepr
2 接口调用采用netty (需要兼容spring)
2 工程介绍
1 netty-rpc
core: netty rpc 核心包 公用编解码、注解、handler、格式定义、工具类等功能。
client:服务消费者依赖包,提供服务发现、channel复用、监听服务提供信息等功能。
server:服务提供者依赖包,提供服务注册、client调用响应等功能。
2 spring-demo:
api:定义相关接口
spring-customer: 服务消费。
spring-provider: 服务提供者。
3 流程介绍
3.1 服务提供者
1 启动服务提供者,扫描RoshRpcService注解,并把相关接口注册相关信息到zk上。
2 启动NettyServer,提供rpc服务响应。
3.2 服务消费者
1 启动服务消费者,发现zk相关服务信息,并且监听变化。
2 后置处理器,收集RoshRpcRemote相关注解service,采用动态代理进行加强。
3.3 编解码
1 TCP粘包、半包采用LengthFieldBasedFrameDecoder,固定header,变body。
2 请求格式RpcRequest、响应格式为RpcResponse,根据客户端/服务端场景不同,采用不同的RpcResponse、RpcRequest 编解码器。
4 项目演示
1 依次启动spring-provider、spring-customer。
2 查看zk服务注册信息。
3 访问消费者接口
5 代码地址
https://gitee.com/zhurongsheng/netty-rpc