RPC和HTTP的区别

概念

HTTP是应用层协议,是唯一标准的,业界通用的协议。

RPC是远程过程调用,它是调用方式,对应的是本地调用。

那什么是RPC协议呢,它其实是基于TCP、UDP、甚至HTTP2改造后的自定义协议。

请求流程
编解码层:网络传输前,需要结构体转为二进制数据 =>序列化
  • HTTP
    • 序列化协议:JSON
    • 优点:直观,一看就懂,请求头、请求体等
    • 缺点:JSON占用空间比较大开销大,且没有类型
  • RPC
    • 序列化协议:以gPRC为代表的Protobuf(pb),其他也类似
    • 优点:直观,体积小传输效率高,编解码速度快
通信协议约定:基于TCP传输,都会有消息头和消息体,区别在于消息头
  • HTTP
    • 优点:非常灵活,可以自定义很多字段
    • 缺点:包含了许多为了适应浏览器的冗余字段,这些内部服务是用不到的
  • RPC
    • 可定制化,自定义必要字段即可。
    • 可摒弃很多HTTP Header中的字段
网络传输层:本质都是基于Socket通信
  • HTTP1.1
    • 建立一个TCP长连接,设置Keep-alive长时间复用这个连接
    • 框架中会引入成熟的网络库,给HTTP加连接池,保证不只有一个TCP连接可用
  • RPC
    • 建立TCP连接池,框架也会引入成熟网络库来提高传输性能
    • gRPC基于HTTP/2,拥有多路复用、优先级控制、头部压缩等优势
    RPC和HTTP的使用场景
    • 微服务架构下,多个内部服务调用频繁和服务跨语言的情况下,适合用RPC
    • 对外服务、单体服务、为前端提供的服务,适合用HTTP,特别是HTTP/2
    订阅评论
    提醒
    0 评论
    最旧
    最新 最多投票
    内联反馈
    查看所有评论
    滚动至顶部