zoukankan      html  css  js  c++  java
  • RPC调用和HTTP调用的区别

    RPC调用和HTTP调用的区别

    标签(空格分隔): 分布式


    1. OSI七层网络模型

    在说RPC和HTTP的区别之前,需要了解一下计网基础的OSI七层网络结构模型。

    1. 应用层:定义了用户在网络中进行通信和传输数据的接口,一般情况下应用都是直接和应用层进行交互的。
    2. 表示层:定义不同系统中数据的传输格式,编码和解码规范等,用于多系统下的传输。
    3. 会话层:管理者用户的会话,控制用户间的逻辑连接的建立和中断;
    4. 传输层:管理者网络中设备间如何传数据。
    5. 网络层:定义网络设备间如何传输数据
    6. 链路层:将上面的网络层的数据封装成帧,便于物理层进行传输。
    7. 物理层:这一层主要就是传输这些二进制数据。

    在实际的应用过程中是没有表示层和会话层的,应该说他们已经和应用层合并了,我们应该将重点放在应用层和传输层这两个层面。因为HTTP是应用协议,而TCP是传输协议。HTTP是基于应用层的,RPC是基于传输层的。

    2. 优缺点

    主要阐述HTTP和RPC的异同,在何种情况下应该选择何种方案。

    2.1 传输协议

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

    2.2 传输效率

    • RPC:使用自定的TCP协议,可以让请求报文的体积更小,提高传输效率。
    • HTTP: 基于HTTP1.1的协议,请求中会包含很多无用信息。如果基于HTTP2.0,那么可以简单的封装一下,作为RPC使用。

    2.3 性能消耗

    • RPC:基于thrift实现高效的二进制传输。
    • HTTP:大部分通过Json字符串实现,字节大小和序列化的耗时都比thrift更加消耗性能。

    2.4 负载均衡

    • RPC:基本都自带了负载均衡策略。
    • HTTP:需要Nginx,HAProxy来实现。(要使用代理去访问)

    2.5 服务治理

    • RPC: 能做到自动通知,不影响上游。(参考资料:Zookeeper的服务治理

    • HTTP: 需要事先通知,修改Nginx/HAProxy。(负载均衡不考虑已下线服务器,或者增加上线服务器)

  • 相关阅读:
    什么是云安全
    VMWare vForum 2013看点
    循环和数据的操作命令
    程序交互
    数据类型
    基础变量
    模块和包
    ['hello', 'sb']正则表达式
    os模块
    内置函数
  • 原文地址:https://www.cnblogs.com/A-FM/p/11764902.html
Copyright © 2011-2022 走看看