文章目录
一、项目架构
1.1 项目结构
hrpc-client和hrpc-server都依赖hrpc-core
应用时,consumer调用hrpc-client
provider调用hrpc-server
1.2 整体架构
整体架构:
项目分zk注册中心、客户端、服务端三块,其中客户端和服务端通过netty通信。服务端启动时注册到注册中心,客户端启动时去注册中心拉取可用服务信息,并为rpc接口生成代理。当客户端接收第三方请求时,通过代理完成远程调用
二、服务端实现
2.1 服务端整体架构
服务端要做哪些事?
1、服务注册:向zk中写入服务名称、节点信息
2、基于netty监听端口接收连接:接收数据、请求解码、业务处理、响应编码、发送数据
2.2 自定义注解HrpcService
通过注解去容器中拿到bean,然后完成注册逻辑
2.3 基于netty启动服务端
编写NettyServer(可参考上节netty服务编写)
三、客户端实现
3.1 整体架构
分3部分:
1、服务发现-从zk拉去服务信息,更新缓存
2、动态代理
3、netty网络模块
注意:当一个类实现接口:ApplicationContextAware之后,这个类就可以方便的获得ApplicationContext对象(spring上下文),
3.2 动态代理
给某个bean的某个属性注入接口代理怎么做呢?
引出bean的后置处理器-beanpostprocessor,controller会被加入到spring容器中,然后能被多个后置处理器(BeanPostProcessor)处理。
代理可以使用cglib或者jdk代理。
3.3 netty网络模块
编写NettyClient(可参考上节netty服务编写)