Dubbo 笔记(一)—— 初始 RPC 框架
参考自:敖丙:Dubbo 系列 扬帆起航
什么是 RPC 框架
RPC,Remote Procedure Call 即远程过程调用,远程过程调用其实对标的是本地过程调用。
本地过程调用指的是调用本机上内部的方法,而远程过程调用指的是本地调用了远程机子上的某个方法。
RPC 框架的目的就是让我们使用远程调用像本地调用一样简单方便,并且解决一些远程调用会发生的一些问题,使用户使用起来是无感知的。
至于 RPC 要如何调用远程的方法,可以基于 HTTP 协议、也可以是基于 TCP 自定义协议、或者是基于其它的网络通信协议。
如何设计一个简单的 RPC 框架
我们已经知道,RPC 指的是 本地调用了远程机子上的某个方法。由此可以得知,至少要有 服务消费者(服务端)、服务提供者(客户端)。
服务消费者
- 接口 api:公用 jar 包:服务消费者面向接口编程(服务消费者只需要知道接口,用于传参和接收返回值即可,具体是实现由服务提供者提供),所以需要有接口可以调用,可以通过公用 jar 包的方式来维护接口。
- 代理类:为了让用户使用起来是无感知的,服务消费者只负责调用接口,则需要一个代理类来帮助实现底层细节的实现,比如如何获取服务,如何进行通信,以及返回值的处理等,从而屏蔽用户对调用细节的感知。
- 注册中心:代理类中包含了服务名称(方法名)、参数类型、参数值、返回值等信息,但是还要知道从哪里获取服务,即与哪台机器进行远程通信。所以需要有个注册中心,知道某个服务的提供者有哪些机器,并且维护服务提供者的加入与退出。
- 负载均衡