什么是RPC

RPC 是 Remote Procedure Call 的简写,也就是远程调用,它是一种进程间通讯方式,是一种技术思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显示编码这个远程调用的细节。

也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接本地调用,需要通过网络来表达调用的语义和传达调用的数据。(通过网络传达调用的数据)

为什么要用RPC呢?

就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需要,比如不同的系统间的通讯,甚至不同的组织间的通讯,由于计算机能力需要横向拓展,需要在多台计算机组成的集群上部署应用。
而RPC就是要向调用本地的函数一样去调用远程的函数

步骤解析:

  1. 客户端调用 client (function)-> client Stub

  2. 序列化 client stub -> client socket

  3. 发送消息 client socket --(network)--> server socket

  4. 反序列化 server socket -> sever stub

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

  6. 服务处理 server

  7. 返回处理结果 并将结果序列化 server -> server stub ,server stub -> server socket

  8. 返回消息 server socket --(network)--> client socket

  9. 反序列化 client soket -> client stub

  10. 返回调用结果 client stub -> client

这样的过程就是RPC

所以RPC两个核心就是 通讯 和 序列化

为什么序列化?

序列化的目的就是为了方便传输

什么是序列化?

序列化:把对象转换为字节序列的过程称为对象的序列化。
反序列化:把字节序列恢复为对象的过程称为对象的反序列化。

原文地址:https://www.cnblogs.com/nineberg/p/12470117.html