给我说下Http和RPC的区别是什么?
面试者:http的话性能要慢,RPC的话快很多,用于服务跟服务的调用
面试官:也没问题,但是这个我希望你答得更加全面点。
其实,他们2个不应该用来比较,因为他们根本不在同一个讨论维度的
首先,最核心的一点是,HTTP(HyperTextTransfer Protocol)本质上是一个协议。它是互联网数据通信的基础,定义了一套如何在网络上交换超文本的规则。它的核心是资源和状态,比如我们用GET去获取一个用户资源,用PUT去更新它。而RPC (Remote ProcedureCall)本质上是一种编程范式或者说架构思想。它的目标就一句话:让我调用一个远程服务的方法,就像调用本地方法一样简单自然。为了实现这个目标,我们需要一个完整的框架,这个框架需要解决序列化、网络传输、服务发现等一系列问题。但是协议这块,RPC框架可以选用HTTP作为其传输协议,也可以选用其他协议所以,一个非常关键的认知是:RPC是一种思想,而HTTP是实现这种思想的其中一种可能的传输协议。
所以,我们不是去比较他们的区别,而是要清楚什么时候用Http 什么时候用RPC调用。适合直接使用Http请求的:
接口是对外暴露的,比如给其他第三方合作端,给移动端调用的。因为HTTP是互联网的通用语言,任何客户端、任何语言都支持。如果是内部微服务调用,就可以采用RPC框架。比如dubbo,内部网络环境可控,使用二进制协议和高效序列化,吞吐量远高于HTTP,能显著降低延迟。#后端程。