Http调用相较于RPC调用多了哪些操作以及参数?

37 阅读3分钟
  1. 二进制协议 vs 文本协议:

    • Dubbo: Dubbo使用二进制协议,默认使用Hessian或者Protocol Buffers等二进制序列化框架。二进制协议相比文本协议,如HTTP的JSON或XML,通常更紧凑,传输数据的体积更小,减少了网络传输的开销。
    • HTTP: HTTP通常使用文本协议进行数据传输,如JSON或XML。这种文本格式相对较大,导致在传输过程中占用更多的带宽和资源。
  2. 序列化和反序列化效率:

    • Dubbo: Dubbo使用高效的序列化框架,能够更快地将数据对象序列化成字节流,以及将字节流反序列化成数据对象。这有助于提高数据的传输效率。
    • HTTP: JSON和XML等文本格式的序列化和反序列化相对较慢,因为需要进行字符串的解析和构建,而且通常需要更多的字符编码和解码工作。
  3. 长连接 vs 短连接:

    • Dubbo: Dubbo默认使用长连接,即客户端与服务端建立一次连接后可以进行多次通信。这减少了连接的建立和关闭的开销,提高了通信效率。
    • HTTP: HTTP协议通常是基于短连接的,每次请求都需要建立一个新的连接。虽然HTTP/1.1引入了持久连接(Keep-Alive),但相比于Dubbo的长连接机制,它的效率仍有一定差距。
  4. 多路复用:

    • Dubbo: Dubbo支持多路复用,即在一个连接上可以同时进行多个请求和响应。这样可以避免HTTP中的头阻塞问题,提高了并发性能。
    • HTTP: 在HTTP/1.1中引入了持久连接以及管道机制,但仍然存在头阻塞问题。在HTTP/2中引入了多路复用机制,但相对于Dubbo的默认多路复用,其性能还是有一些差距。
  5. 轻量级协议:

    • Dubbo: Dubbo是为服务治理设计的RPC框架,其协议相对轻量级,只关注服务调用和响应。它的设计目标是提高服务调用的效率。
    • HTTP: HTTP是通用的协议,包含很多功能,如缓存、安全性等。这些功能使得HTTP的协议较为复杂,而在某些场景下可能会降低性能。
  6. HTTP相较于Dubbo多了哪些头信息

Request Headers:

  • Accept: 指定客户端能够接收的内容类型。
  • Accept-Language: 指定客户端能够接收的语言类型。
  • Accept-Encoding: 指定客户端能够接收的内容编码。
  • Cache-Control: 控制缓存的行为,如 no-cache、max-age 等。
  • User-Agent: 标识客户端的应用类型、操作系统、软件厂商或版本号等。
  • Cookie: 包含客户端的 Cookie 信息,用于保持用户的状态。
  • Authorization: 包含身份验证信息,如用户名和密码。

Response Headers:

  • Content-Type: 指定响应内容的类型。
  • Content-Length: 指定响应内容的长度。
  • Cache-Control: 控制缓存的行为,如 no-cache、max-age 等。
  • Set-Cookie: 用于设置客户端的 Cookie。
  • Server: 指定响应的服务器软件信息。