https://www.maxiaoke.com/index/mianjing/detail/id/232.html
- 定义与目的
- RPC:远程过程调用协议,允许程序调用另一台计算机上的过程或方法,就像调用本地方法一样简单。RPC 旨在隐藏网络通信的复杂性,使得开发者能够专注于业务逻辑的实现。
- HTTP:超文本传输协议,主要用于 Web 服务器与刻度爱你(如浏览器)之间的数据传输。HTTP 基于请求-响应模式,支持多种内容类型,如 HTML、JSON 等。
- 通信效率
- RPC:通常使用二进制(如Protocol Buffers)传输数据,减少了数据冗余,提高了传输效率。此外,RPC 框架(gRPC)支持 HTTP/2 等现代协议,利用多路复用和头部压缩等技术进一步降低延迟。
- HTTP:使用文本格式(如JSON、XML)传输数据,虽然易于阅读和调试,但数据冗余较大,传输效率相对较低。特别是在处理大量小请求时,HTTP/1.1的队头阻塞问题可能导致性能瓶颈。
- 接口定义与类型安全
- RPC:使用跨语言的 IDL(接口定义语言)来描述接口,如Protocol Buffers,具有强类型安全和跨语言支持。这使得不同编程语言编写的服务能够无缝对接。
- HTTP:通常通过RESTful规范或OpenAPI等描述API接口,虽然具有灵活性,但类型安全性较弱,需要额外的工具或文档来保证接口的正确性。
- 异常处理
- RPC:支持自定义的异常处理机制,能够更细粒度地处理各种异常情况,便于开发者快速定位问题。
- HTTP:使用 HTTP 状态码来表示请求的状态,虽然简单直观,但在处理复杂业务逻辑时可能不够灵活。