dubbo源码解析--rpc原理简析

3,416 阅读1分钟

        由于分布式系统的异构性及分布式计算模式与计算任务的多样性,RPC作为网络通讯与委托计算的实现机制而应运而生。

       我们先看一个场景,A、B两个服务部署在不同的机器,A跟B之间如何相互调用? 如果有一种方式能让我们像调用本地服务一样调用远程服务,而让调用者对网络通信这些细节透明,那么将大大提高生产力,比如服务消费方在执行methodA时,实质上调用的是远端的服务。这种方式其实就是RPC(Remote Procedure Call Protocol)。

     暂且不考虑通信细节,我们看一下RPC调用的大致流程:


1)服务消费方(client)调用以本地调用方式调用服务;

2)client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;

3)client stub找到服务地址,并将消息发送到服务端;

4)server stub收到消息后进行解码;

5)server stub根据解码结果调用本地的服务;

6)本地服务执行并将结果返回给server stub;

7)server stub将返回结果打包成消息并发送至消费方;

8)client stub接收到消息,并进行解码;

9)服务消费方得到最终结果。


这里介绍一个极简RPC实现:



参考内容列表:

www.iteye.com/blog/javata…

www.xuxueli.com/xxl-rpc/