IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 面试之rpc和http做比较 -> 正文阅读

[网络协议]面试之rpc和http做比较

rpc和http做比较

rpc的理解

  • RPC, 英文全名remote procedure call 即远程过程掉调用
  • 就是说一个应用部署在A服务器上,想要调用B服务器上应用提供的方法
  • 由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据
  • RPC就是要像调用本地的函数一样去调用远程函数

eq:1.那为啥不能用HTTP请求,要用RPC调用呢?

  • 首先,rpc是一个完整的远程调用方案,他通常包括通讯协议和序列化协议

  • 其中,通信协议包含http协议,(如gRPC使用HTTP2)、自定义报文的tcp协议(如dubbo)

  • 序列化协议包含基于文本编码的xml、json,基于二进制编码的protobuf、hessian等

  • 而HTTP只是一个通信协议,不是一个完整的远程控制协议

  • 也就是说,HTTP和RPC不是对等的概念,用来比较不合适

eq:2.为什么有些后端子系统之间是使用自定义tcp协议的rpc来做进程通信?而不是使用http协议呢?

  • 首先,http协议是支持连接池复用的,也就是建立一定数量的连接不断开,并不会频繁的创建和销毁连接

  • 然后,http也可以使用protobuf这种二进制编码协议对内容进行编码

  • 也就是说连接建立与断开的开销和序列化协议并不是主要影响因素

  • 二者最大的区别还是在传输协议

  • http的传输协议中header部分有很多冗余的部分,像Content-Type、Last-Modified、Expires等

  • 即使http body是使用二进制编码协议,header头的键值对却用了文本编码,非常占用字节数

  • 而自定义的tcp协议,可以精简传输内容,传输效率更高。比如下面的自定义tcp协议的报文:

  • 1-4 byte,length
    5-8 byte,type
    9-16 byte,package_id
    17-length+16 byte,package_data
    
  • 报头占用的字节数也就只有16个byte,大大地减少了传输内容。高并发情况下,少几个字节,乘以巨大的请求数量,能带来庞大的收益

  • 因此,对于性能要求比较高的系统来说,通常使用自定义tcp协议的rpc来做后端进程通信

  • 其实使用http协议比较多的还是前后端的通信,原因在于主流网页游览器都支持http协议,而且http在缓存、幂等重试乃至cookie这种浏览器安全相关的方面做了很多功夫

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 13:06:47  更:2022-05-09 13:08:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:57:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码