Open tomoya06 opened 3 years ago
Remote Procedure Call Protocol aka. RPC aka. 远程过程调用协议
定义:一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员就像调用本地程序一样,无需关注细节。
根据RPC概念提出者的说法,RPC有以下特点:
通俗一点说,就是一般程序员对于本地的过程调用很熟悉,那么我们把 RPC 作成和本地调用完全类似,那么就更容易被接受,使用起来毫无障碍。
本节参考博客
RPC的程序包括以下5个部分:
关系如图:
流程如下:
本节参考掘金博客
严格意义上两者并不在同一层级上,更有甚者,gRPC已经是建立在HTTP协议上实现的RPC框架。但两者都作为远程数据交互的实现协议,故经常一起对比。
接口调用通常包含两个部分:序列化协议和通信协议
RESTful,全称 Representational State Transfer aka. 表述性状态传递,是一种软件架构风格,典型应用是HTTP,所以一般都认为RESTful就是HTTP协议。
RPC也是基于TCP/IP协议簇实现的通信协议。gRPC是基于HTTP2.0协议实现。
序列化和反序列化更多介绍,参考美团技术博客
常用的序列化协议包括:json / xml / protobuf / thrift / bytes等
RESTful面向资源;RPC面向方法。
RPC
Remote Procedure Call Protocol aka. RPC aka. 远程过程调用协议
定义:一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员就像调用本地程序一样,无需关注细节。
WHY RPC?
根据RPC概念提出者的说法,RPC有以下特点:
通俗一点说,就是一般程序员对于本地的过程调用很熟悉,那么我们把 RPC 作成和本地调用完全类似,那么就更容易被接受,使用起来毫无障碍。
RPC结构
RPC的程序包括以下5个部分:
关系如图:
流程如下:
RESTful / HTTP vs RPC
严格意义上两者并不在同一层级上,更有甚者,gRPC已经是建立在HTTP协议上实现的RPC框架。但两者都作为远程数据交互的实现协议,故经常一起对比。
接口调用通常包含两个部分:序列化协议和通信协议
通信协议
RESTful,全称 Representational State Transfer aka. 表述性状态传递,是一种软件架构风格,典型应用是HTTP,所以一般都认为RESTful就是HTTP协议。
RPC也是基于TCP/IP协议簇实现的通信协议。gRPC是基于HTTP2.0协议实现。
序列化协议
常用的序列化协议包括:json / xml / protobuf / thrift / bytes等
使用方法
面向对象
RESTful面向资源;RPC面向方法。