【博学谷学习记录】超强总结,用心分享|架构师-手写rpc

一、项目架构

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服务编写)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值