RPC调用过程
一、 RPC暴露
RPC暴露,就是为某个服务创建好一个中转对象(参接触网络/能调用本地service)
中转对象:代服务消费方发起请求,其实是一个正向的代理
二、 RPC引入
消费方,把请求的目标/方法/参数发送给中转对象,中转对象就能执行方法并返回
引入:建一个动态代理对象,专职来发送本接口请求信息
Proxy:动态代理对象,专职做发送请求,封装了Protocol.refer.Invoker的请求
Protocol.refer.Invoker:外转对象通过网络发送请求,把请求信息包括:目标/方法/参数发送给中转对象,中转对象就能执行并返回结果了,中转对象的实现该功能就类似反射的方式实现的。
以上就是rpc调用的过程了
三、源码跟踪
dubbo中转对象跟踪源码
springrmi模拟,理解调用过程
服务提供方暴露服务,服务端在中转对象上,设定— 接口/实现/url
接口:interface接口
实现:new RmiEnjoyService()
url:rmi://127.0.0.1:1919/com.ws.service.IRmiEnjoyService
消费端创建代理对象,设定 接口/url
接口:interface接口
url:rmi://127.0.0.1:1919/com.ws.service.IRmiEnjoyService
调用过程是这样的
中转对象,跟着代理对象动作,猴子学样
4、dubbo代理对象与中转对象(目标) 建立的关系,通过URL来传递的。
URL是整个dubbo里的总信息描述符。
代理对象去请求东西的地方,它有一个比较关键的地方就是他要去绑定这个url,最终url存在这个zk上面,然后我们的代理对象要去发目标 时,他就会根据这个url就会正确找到中转对象,正确找到目标