想了解这两种服务调用的区别,首先你需要了解TCP/IP协议和HTTP协议。
HTTP协议定义:HyperText Transfer Protocol 超文本传输协议。发生在应用层。
TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,当应用程序采用 TCP 发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。TCP 为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流控制(流量控制)”、“拥塞控制”、提高网络利用率等众多功能,发生在传输层。
(附OSI网络七层模型介绍放在最下方。)
...言归正传,rpc和restful具体是什么呢?
RPC:
全称:Remote Procedure Call
RPC的方式就是远程函数调用,也叫远程过程调用。像RESTFul,gRPC(Google,基于HTTP2.0协议), DUBBO(阿里集团),Thrift(Facebook) 都是这种方式。
它基于TCP/IP协议(传输层)传输控制协议/网际协议。
它一般是同步的,可以马上得到结果。在实际中,大多数应用都要求立刻得到结果,这时同步方式更有优势,代码也更简单。
RPC架构构成:
客户端(Client),服务的调用方。
服务端(Server),真正的服务提供者。
客户端存根,存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。
服务端存根,接收客户端发送过来的消息,将消息解包,并调用本地的方法。
RESTFul:
是一种软件架构分割、设计风格,而不是标准。只是提供了一组设计原则和约束条件。
基于HTTP协议(应用层)超文本传输协议。
通过HTTP协议中的POST/GET/PUT/DELETE等方法和一个可读性强的URL来提供一个http请求。
而rpc则不一定通过http,更常用的是使用TCP来实现
RESTFUL 与RPC的区别
1.restfull和rpc都是client/server模式的,都是在 Server端 把一个个函数封装成接口暴露出去
2.restful使用http协议实现,而rpc则不一定使用http,一般比较常用的是tcp, RPC 可以获得更好的性能(省去了 HTTP 报头等一系列东西),TCP更加高效,而HTTP在实际应用中更加的灵活。
3.从使用上来说:Http接口只关注服务提供方(服务端),对于客户端怎么调用,调用方式怎样并不关心;而RPC服务则需要客户端接口与服务端保持一致,服务端提供一个方法,客户端通过接口直接发起调用
知识补充:
OSI网络七层模型:
第一层:应用层。定义了用于在网络中进行通信和传输数据的接口;
第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范等;
第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断;
第四层:传输层。管理着网络中的端到端的数据传输;
第五层:网络层。定义网络设备间如何传输数据;
第六层:链路层。将上面的网络层的数据包封装成数据帧,便于物理层传输;
第七层:物理层。这一层主要就是传输这些二进制数据。
318

被折叠的 条评论
为什么被折叠?



