当前位置:
首页 > 大学专业课程 > rpc是什么 Restful和RPC是什么关系(徐克达)

知识点

rpc是什么 Restful和RPC是什么关系(徐克达)

很多同学想知道什么是rpc。以下是边肖整理的一些相关内容,希望对大家有所帮助!

什么是Rpc

RPC(Remote Procedure Call)是远程过程调用,是在不知道底层网络技术的情况下,通过网络向远程计算机程序请求服务的协议。

RPC协议假设存在一些传输协议,如TCP或UDP,在通信程序之间承载信息数据。在OSI网络通信模型中,RPC跨越传输层和应用层。RPC使开发包括网络分布式多道程序在内的应用程序变得更加容易。

RPC采用客户端/服务器模式。请求者是客户端,服务提供者是服务器。首先,客户端调用流程向服务流程发送带有流程参数的调用消息,然后等待响应消息。

Restful和RPC的关系是什么

这两者并不互相排斥,HTTP是否是RPC完全取决于客户端的具体形式。传统的RPC一般基于二进制协议。客户端发送一个二进制包(然后阻塞),服务器处理后回复一个包,客户端收到后唤醒。在二进制协议中,可以在数据包中添加一个id来指示回复和请求之间的对应关系,这样我们就可以在一个tcp连接上同时发起多个请求和回复。HTTP,一个文本协议,也可以加id。但是,由于某些原因(可能缺少Content-Length),即使添加了id,也不可能在一个连接上同时传输多个HTTP消息。因此,HTTP通常与服务器保持多个连接,同时每个连接上最多只有一条HTTP消息。这个“连接池”在HTTP中是“保活”的意思。所以即使在HTTP(或者任何协议)上,我们仍然可以高效地发送一个请求,阻塞它,等待服务器完成处理,然后醒来。这不是RPC吗?所以这里的选择更多的是平衡功能和性能。一般来说,Restful HTTP是尽量为终端用户使用的。原因是编程语言支持HTTP(包括shell,方便调试),性能没那么重要,方便用户共享链接。对于内部系统,机器不多的可以考虑Restful HTTP,机器多的要用二进制RPC。毕竟性能差距还是很大的。