RPC(Remote Procedure Call):
-
目标: RPC 的主要目标是使远程调用像本地调用一样,隐藏底层通信的细节,使开发者能够更方便地进行远程服务调用。
-
通信方式: RPC 可以使用不同的传输协议,如 HTTP、TCP、UDP 等。通常情况下,RPC 会使用二进制协议进行数据传输,而不是像 HTTP 那样使用文本协议。
-
序列化: RPC 通常使用二进制序列化来提高效率,而不像 HTTP 一样使用文本形式的 JSON 或 XML。
-
性能: 由于 RPC 更加专注于效率和性能,通常情况下比 HTTP 更快。一些常见的 RPC 框架包括 gRPC、Apache Thrift、Dubbo 等。
-
传输协议: 可以使用不同的传输协议,如 gRPC 使用的是 Protocol Buffers,Thrift 使用的是 Thrift Protocol。
HTTP(Hypertext Transfer Protocol):
-
目标: HTTP 的主要目标是在客户端和服务器之间传输超文本。它是一种通用的、无状态的协议,最初设计用于在浏览器和服务器之间传输 HTML 页面。
-
通信方式: HTTP 使用文本协议,基于请求-响应模型。它是一种无状态协议,每个请求和响应都是独立的,服务器不会保留任何有关客户端状态的信息。
-
序列化: HTTP 通常使用 JSON 或 XML 这样的文本形式来传输数据,这使得数据对人类更加可读,但相对于二进制格式来说,可能更加占用带宽。
-
灵活性: 由于 HTTP 是一种通用协议,可以用于各种用途,不仅仅是超文本传输。RESTful API 常常使用 HTTP 作为通信协议。
-
标准化: HTTP 是一个开放标准,被广泛使用在互联网上。HTTP/1.1 和 HTTP/2 是两个常见的版本。