什么是RPC
Remote Procedure Call(RPC):远程过程调用。可以让开发者调用远程方法跟调用本地方法一样简单。
客户端通过某种协议(tcp/udp)来与服务端建立连接,客户端传递定义好的客户句柄(这个句柄可以是一个二进制流,也可以是一个对象,必须得双方都先规定好),服务端接收到句柄并且解析,就知道了客户端想要调用什么方法,服务端调用方法再通过网络通信返回结果。
rpc框架
封装好参数编组、消息解组、底层网络通信的RPC程序开发框架,带来的便捷是可以直接在其基础上只需要专注于过程代码编写。如dubbo 就是一款优秀的rpc框架
简单的rpc框架应该包含客户端(client)和服务端(server)。要解决的问题有
1 使用什么技术进行网络通信
2 句柄在进行网络传输时需要进行序列化与反序列化,使用什么序列化技术。
3 我们需要使用代理来代理客户端,让用户无感知的进行调用(像调用本地方法一样)
而一个较为完备的rpc框架 除了有服务端(server)和客户端(client)应该包括服务注册中心(registerCenter),
这里我使用了socket来进行网络通信,socket是tcp一种实现方式,序列化方式和动态代理我使用的但是jdk的原生技术,注册中心我使用了redis来实现。
虽然技术都很古老,但凡事都从基础来,以后也可以更换,适合新手看。
初始化rpc框架工程
实现一个rpc框架
新建三个maven工程,分别是client,server,common。client表示客户端,server表示服务端,common是存放一些通用的类和接口。
再新建两个工程,分别是consumer和provider,服务提供者和服务消费者,用来做实验用(与rpc核心功能无关)。
--- 未完待续 项目地址 gitee.com/dashuizhi/r…