从零开始写一个RPC框架——一切从这里开始

RPC,这个名词在我上学及找工作的的几年前是比较少能谈及到的,我也是工作之后才第一次接触到RPC框架Dubbo(其实也不能这么说,Http也可以算作RPC)。

匆匆几年,不知什么时候RPC这个名词已经是招聘JD里面的常客了?

RPC是什么?

RPC是什么,第一次用Dubbo的时候我也是很懵逼的。

受当时的知识面所局限,我在最开始的接触的Dubbo时一直很不理解为什么我只是用定义的接口调用了一个方法,远端的服务就能接收到我的请求并处理然后响应结果。

后来使用了Debug大法才恍然大悟,原来还能这么玩。

下面引用一段网上经典的描述及图片来对RPC做一个简单的理解。

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

RPC调用过程/侵删

RPC事件顺序

  1. 客户端(client function)调用客户端存根(client stub,可以理解为一个代理)。该调用是本地过程调用。
  2. 客户端存根(client stub)将参数打包到消息中,并进行系统调用以发送消息。
  3. 客户端的操作系统将消息从客户端计算机发送到服务器计算机。
  4. 服务器的操作系统将传入的数据包传递到服务器存根(server stub,可以理解为一个代理)。
  5. 服务器存根(server stub)解包消息得到调用参数。
  6. 服务器存根(server stub)调用真实的服务(server function)获得结果并以相同的方式反向返回结果。
阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×