RPC概述

RPC概述

什么是RPC?

Remote Procedure Call 远程过程调用协议

​ RPC是一种进程间都通信协议,允许程序调用网络上的过程或函数,而不用开发者显示的编写调用细节,使用起来就像是调用本地服务,其中的网络通信对开发者来说是透明的。RPC框架能为我们解决这些通信细节。

​ “RPC的主要功能是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。”

调用流程

调用流程图

1.服务消费方clinet调用本地服务client stub(存根);

2.client stub封装functions信息(方法名、参数等)用于网络传输(编码、序列化);

3.client stub通过socket找到服务地址,并将消息发给服务端;

4.server stub接收到消息(解码、反序列化);

5.server stub调用本地function(服务);

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

7-8.server stub将结果封装成消息(编码、序列化),通过socket 传输消息给client stub;

9-10.client stub解析消息(解码、反序列化)把调用结果返回给client。

RPC调用过程中要面临的问题

  • 序列化、反序列化 Hession| JSON|XML|Google Protocol Buffers|Thrift
  • Socket 通信 BIO NIO
  • 服务寻址 Zookeeper

Java 与 RPC

调用远程服务时使用代理方式封装通信细节,使用起来就像调用本地服务一样。

实现方式:

参考:https://www.cs.rutgers.edu/~pxk/417/notes/03-rpc.html