-
RPC不是一种协议,更像是一种调用方式。而基于RPC这种调用方式的具体实现,例如gRPC才是一种应用层协议。其底层既可以用TCP也可以用UDP来实现
-
为什么要有应用层协议(HTTP、gRPC协议)?
- 裸TCP协议,TCP的三大特性(面向连接、可靠、基于字节流)。其实裸TCP协议已经可以传递字节流,但是会产生粘包的问题。因此引入了应用层的协议来实现分包(定义每个包的起始点和终止点)。总结:上层需要定义消息格式用于定义消息边界
-
RPC解决了什么问题?
- 实现了本地可以直接调用远程的方法函数
-
HTTP和RPC的发展历史:
- 在TCP推出后,先是有了RPC,然后再由HTTP协议
-
HTTP和RPC的区别:
-
RPC采用了连接池技术,使用后的RPC连接会放到连接池中下次使用(同样是基于长连接)。HTTP/1.1基于长连接,由于连接池有利于提升网络请求性能,所以不少编程语言的网络库里都会给 HTTP 加个连接池
-
技术实现方面:早期RPC多用于C/S架构,主要用于公司内部。HTTP多用于B/S架构,是一个统一的标准
-
序列化方面(传输内容):RPC定制化程度更高,采用了更加方便简单的序列化方式protobuf,而HTTP采用了json序列化方式,json更加繁琐
-
服务发现方式:应用层协议在建立连接的过程中要知道IP和端口号。HTTP采用了DNS的方式获取端口号,PRC采用了中间服务的方式
-
RPC调用方式(远程过程调用)
最新推荐文章于 2024-12-10 15:33:07 发布