失效链接处理 |
REST与RPC的区别 PDF 下载
本站整理下载:
提取码:2pmf
相关截图:
主要内容:
REST与RPC的区别
网络模型
实际应用过程中,五层协议结构里面是没有表示层和会话层的。应该说它们和应用层合并了。我们
应该将重点放在应用层和传输层这两个层面,因为RPC主要是基于TCP/IP协议(传输层协议),
HTTP主要是基于HTTP协议(应用层协议)。
REST
REST即表述性状态传递(Representational State Transfer,简称REST),是一种软件架构风格。REST
通过HTTP协议定义的通用动词方法(GET、PUT、DELETE、POST) ,以URI对网络资源进行唯一标识,响
应端根据请求端的不同需求,通过无状态通信,对其请求的资源进行表述。
Rest架构的主要原则:
1. 网络上的所有事物都被抽象为资源
2. 每个资源都有一个唯一的资源标识符
3. 同一个资源具有多种表现形式(xml,json等) 4. 对资源的各种操作不会改变资源标识符
5. 所有的操作都是无状态的
其中表述性状态,是指(在某个瞬间状态的)资源数据的快照,包括资源数据的内容、表述格式(XML、
JSON)等信息。
其中无状态通信,是指服务端(响应端)不保存任何与特定HTTP请求相关的资源,应用状态必须由请求方
在请求过程中提供。要求在网络通信过程中,任意一个Web请求必须与其他请求隔离,当请求端提出请
求时,请求本身包含了响应端为响应这一请求所需的全部信息。
REST使用HTTP+URI+XML /JSON 的技术来实现其API要求的架构风格:HTTP协议和URI用于统一接口和
定位资源,文本、二进制流、XML、JSON等格式用来作为资源的表述。
RPC
Remote Procedure Call,远程过程调用,就是像调用本地方法一样调用远程方法。RPC架构图:
RPC框架架构
RPC架构分为三部分:
服务提供者,运行在服务器端,提供服务接口定义与服务实现类。
服务中心,运行在服务器端,负责将本地服务发布成远程服务,管理远程服务,提供给服务消费者
使用。
服务消费者,运行在客户端,通过远程代理对象调用远程服务。
RPC框架的核心组件
RPC框架包含4个核心的组件,分别是Client ,Server,Client Stub以及Server Stub,这个Stub可以理解为
存根
客户端(Client),服务的调用方。
服务端(Server),真正的服务提供者。
客户端存根,存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程
发送给服务方。
服务端存根,接收客户端发送过来的消息,将消息解包,并调用本地的方法
RPC框架要做到最基本的3件事情:
1. 服务端如何确定客户端要调用的函数
在远程调用中,客户端和服务端分别维护一个【ID->函数】的对应表,ID在所有进程中都是唯一确定
的。客户端在做远程过程调用时,附上这个ID,服务端通过查表,来确定客户端需要调用的函数,然后
执行相应函数的代码。
2. 如何进行序列化和反序列化
客户端和服务端交互时将参数或结果转化为字节流在网络中传输,那么数据转化为字节流的或者将字节
流转换成能读取的固定格式时就需要进行序列化和反序列化,序列化和反序列化的速度也会影响远程调
用的效率。
3. 如何进行网络传输
多数RPC框架选择TCP作为传输协议,也有部分选择HTTP。如gRPC使用HTTP2。不同的协议各有利弊。
TCP更加高效,而HTTP在实际应用中更加的灵活
|