手撸一个rpc远程调用(初始化工程)

62 阅读2分钟

什么是RPC

Remote Procedure Call(RPC):远程过程调用。可以让开发者调用远程方法跟调用本地方法一样简单。

image.png

客户端通过某种协议(tcp/udp)来与服务端建立连接,客户端传递定义好的客户句柄(这个句柄可以是一个二进制流,也可以是一个对象,必须得双方都先规定好),服务端接收到句柄并且解析,就知道了客户端想要调用什么方法,服务端调用方法再通过网络通信返回结果。

rpc框架

封装好参数编组、消息解组、底层网络通信的RPC程序开发框架,带来的便捷是可以直接在其基础上只需要专注于过程代码编写。如dubbo 就是一款优秀的rpc框架

简单的rpc框架应该包含客户端(client)和服务端(server)。要解决的问题有

1 使用什么技术进行网络通信

2 句柄在进行网络传输时需要进行序列化与反序列化,使用什么序列化技术。

3 我们需要使用代理来代理客户端,让用户无感知的进行调用(像调用本地方法一样)

而一个较为完备的rpc框架 除了有服务端(server)和客户端(client)应该包括服务注册中心(registerCenter),

image.png

这里我使用了socket来进行网络通信,socket是tcp一种实现方式,序列化方式和动态代理我使用的但是jdk的原生技术,注册中心我使用了redis来实现。

虽然技术都很古老,但凡事都从基础来,以后也可以更换,适合新手看。

初始化rpc框架工程

实现一个rpc框架

image.png

新建三个maven工程,分别是client,server,common。client表示客户端,server表示服务端,common是存放一些通用的类和接口。

image.png

再新建两个工程,分别是consumer和provider,服务提供者和服务消费者,用来做实验用(与rpc核心功能无关)。

--- 未完待续 项目地址 gitee.com/dashuizhi/r…