RPC的基本过程
- 提供者Provider:提供服务的接口定义和接口的具体实现,然后通过URL的方式告诉消费者,某个URL对应某个service实现,一般是将服务的信息注册到一个注册中心,如zookeeper或者Redis等;
- 消费者Consumer:获取提供者的接口定义,一般通过引入jar包的方式,从而获得提供者的接口和方法定义,如方法参数个数,参数类型;在消费者本地封装数据,如方法参数值,对提供者提供的服务进行远程调用,而这个远程调用是通过消费者本地的一个代理对象进行的,即将需要调用的方法,进行方法调用的数据,交给该代理对象,由该代理对象发起对提供者的请求,获取提供者的响应,然后将请求结果返回给消费者。
- 整个过程如下:其中1. register提供者注册,4.invoker是由消费者调用均是通过代理完成的。

远程调用过程:
- 核心接口

核心接口设计
Protocol:RPC协议接口
-
export方法
-
refer方法
- 模板方法,消费者实现refer方法,具体为AbstractProxyProtocol,提供自己需要调用的远程服务的class类型,provider暴露服务的url地址,获得对远程服务进行实际服务调用的代理,即该代理对服务消费者而言,就是服务提供者,代理在服务提供者和服务消费者之间作为中间人,搭建了一个服务调用的桥梁。
- 具体的服务调用由AbstractProxyProtocol的实现类定义和实现doRefer方法实现,如HttpProtocol协议实现如下:
构造httpProxyFactoryBean实例,设置好调用的远程服务接口名,服务暴露的URL,调用相关数据,如参数值,通过httpProxyBean完成服务调用。
Provider相关:服务提供者提供服务
- Exporter:服务暴露接口,该接口表示提供者将服务暴露或者说注册到了一个注册中心,同时可以取消、回收服务的注册。
- ExporterListener:服务暴露监听器,在对服务进行暴露后,或者取消已经暴露的服务,进行回调处理。
Consumer相关:服务消费者消费服务
- Invoker:服务调用接口,服务消费者实现该接口,定义需要消费、调用的接口;invoke发起对远程服务提供者,所提供的服务的请求、调用。
- Invocation:封装consumer进行远程服务调用的相关数据,如要调用的方法,进行调用的相关参数、参数类型和参数值等。
- InvokerListener:服务调用监听器,消费者实现该接口,在进行了对远程服务的调用进行回调;在服务提供者取消或回收了服务后,对消费者本地的消费代理进行销毁。
ProxyFactory:代理工厂接口
本文标题:Dubbo源码分析:RPC协议实现-RPC过程与核心接口设计
本文链接:https://blog.quwenai.cn/post/3169.html
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。












还没有评论,来说两句吧...