zoukankan      html  css  js  c++  java
  • http 与 rpc 对比

    总结:RPC主要用于公司内部服务调用,传输效率高(TCP,报文小),性能消耗低(高效的二进制传输、字节小、序列化耗时少),服务治理方便:

    1、传输协议:

      RPC:可以基于HTTP协议,也可以基于TCP协议

      HTTP:基于HTTP协议

    从网络协议来说,Http协议与Rpc同属于应用层, 他们的底层都是tcp协议。RPC(即Remote Procedure Call,远程过程调用)和HTTP(HyperText Transfer Protocol,超文本传输协议)他们最本质的区别,就是RPC主要工作在TCP协议之上,而HTTP服务主要是工作在HTTP协议之上,我们都知道HTTP协议是在传输层协议TCP之上的,所以效率来看的话,RPC当然是要更胜一筹。

    2、传输效率:

      RPC:使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2协议,也可以很好的减小报文体积,提高传输效率

      HTTP:如果是基于http1.1的协议,请求中会包含很多无用的内容,如果是基于HTTP2.0,那么简单的封装下可以作为一个RPC来使用,这时标准的RPC框架更多的是服务治理。

    http协议其实是属于面向桌面浏览器的一个通信协议,对于缓存,幂等或者Cookies相关的方面做了很多的事情。但是对于服务器之间直接的交互,Rpc就能够体现出来他的优势了。自定义协议,减少数据传输:我们大概看一下http协议。请求行,请求头部,请求数据,空行。很明显对于远程调用场景,我们对于请求行的依赖不是特别的强,那么这一部分在我们应用场景下,将会成为负担,但是http协议又是固定的,我们也不可能随便修改协议的格式。所以,通过rpc协议我们可以精简请求的数据,来尽可能少的传输我们的数据。当前,rpc也可以通过http协议来进行传输。

    3、性能消耗:

      RPC:可以基于thrift实现高效的二进制传输

      HTTP:大部分是基于json实现的,字节大小和序列化耗时都比thrift要更消耗性能

    4、负载均衡:

      RPC:基本自带了负载均衡策略

      HTTP:需要配置Nginx、HAProxy配置

    5、服务治理:(下游服务新增,重启,下线时如何不影响上游调用者)

      RPC:能做到自动通知,不影响上游

      HTTP:需要事先通知,如修改NGINX配置。

    6、连接:

      RPC:长连接

      HTTP:短连接

    rpc使用长连接:直接基于socket进行连接,不用每个请求都重新走三次握手的流程

    from 蜡笔没了芯
  • 相关阅读:
    react hooks子给父传值
    npm安装依赖 and 删除依赖
    react 阻止事件冒泡
    http 500状态码
    vue中插槽slot的使用
    怎样在vue项目中使用axios处理接口请求
    GET 与 POST 其实没有什么区别
    LazyMan
    什么是微服务,什么是分布式
    思索 p5.js 的最佳实践
  • 原文地址:https://www.cnblogs.com/labimeilexin/p/15409914.html
Copyright © 2011-2022 走看看