RPC和 HTTP协议
RPC 和HTTP 的区别
服务发现
- HTTP,知道服务域名,可以通过 DNS 解析 得到 服务的IP地址,从而进行访问
- RPC 需要一个专门的中间服务去保存服务名和IP信息(注册中心,nacos、consul),想要访问某个服务,就得同时注册到 中间服务,然后获取需要顶用服务的IP 和端口信息
底层链接形式
- HTTP/1.1 默认在底层建立TCP 链接后,会一直保持这个链接(keep alive),后边的请求和响应回服用这条链接
- RPC 协议,和http 相同的地方是,通过 建立TCP 长链接进行数据交互,不同的地方是,RPC 一般会再建立一个链接池,大量请求时,会建立多条链接放在链接池中。需要时,从链接池取,不需要时,放回链接池
传输内容
- RPC 和HTTP 协议都有请求头和请求体,但是请求头里面放的内容不一致,由于请求体的数据格式不一致,请求头里面会存储请求体的解析方式,为了解决 body 的解析方式,请求体会有差异
- 一般消息都是结构化的信息,但是 TCP 传输过程中,都是 二进制 的 01 串(计算机只认识 0,1),所以从应用层将数据传输前,将结构体转换成 二进制 ,这个过程叫做 序列化, 反过来,从传输层发送的消息是二进制的,需要将二进制的数据转换成 结构体的过程叫 反序列化
- 一般,HTTP协议为了做到足够的通用,会在请求头中添加更多的信息,所有内容会偏多,整个消息体 会比RPC 偏大。但是不绝对,如果RPC 底层协议采用 http ,那就相反了
总结
TCP 、UDP协议,是传输层协议,而 RPC 和 http 都定义了不同的消息格式,可以认为都是应用层协议
HTTP协议: hyper text transfer protocol(超文本传输协议), 由于浏览器的诞生衍生出来的协议
RPC 协议 : romote procedure call (远程过程调用协议),他本身不是一种协议,而是一种调用方式。 RPC 本身有很多实现方式,底层协议不一定基于TCP,可以是 UDP、http 协议
纯裸的TCP 能收发数据,但是他它是一个无边界的数据流,上层(应用层)需要定义消息格式,用于定义消息边界
历史的发展来说,RPC 其实比HTTP 出出现的时间更早, HTTP 主要用于 B/S 架构,RPC 主要用于C/S 架构,现在慢慢的有了融合的迹象。
HTTP/2.0 在 HTTP/1.0 上做了优化,性能比RPC 都好
RPC和 HTTP协议的更多相关文章
- RPC基于http协议通过netty支持文件上传下载
本人在中间件研发组(主要开发RPC),近期遇到一个需求:RPC基于http协议通过netty支持文件上传下载 经过一系列的资料查找学习,终于实现了该功能 通过netty实现文件上传下载,主要在编解码时 ...
- Solon rpc 之 SocketD 协议 - 消息鉴权模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - 消息上报模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - 消息应答模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - 消息订阅模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - RPC调用模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - 单链接双向RPC模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - 消息加密模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- Solon rpc 之 SocketD 协议 - RPC鉴权模式
Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...
- 游戏编程系列[2]--游戏编程中RPC与OpLog协议的结合--序
在系列[1]中,我们展示了RPC调用协议的定义以及演示,通过方法定义以及协议约定,进行了协议约定以及调用过程的约定.然而,实际上在游戏中,调用过程之后,需要传输相对多的数据给服务端. 常用场景,客户端 ...
随机推荐
- iOS MonkeyDev 尝试体验(非越狱开发)
一.前言 随着iOS系统的逐渐开放,iOS越狱需求的人越来越少,那么在非越狱系统上面开发越狱插件那将是一个不错的选择,在github上面发现一个开源的Xcode工程模板. 整合了越狱开发的工具.重签名 ...
- 【论文笔记】轻量级网络MobileNet
[深度学习]总目录 MobileNet V1:<MobileNets: Efficient Convolutional Neural Networks for MobileVision Appl ...
- Python缺失值处理实现
在数据处理相关工作中,读取的数据中常常会有缺失值的情况,为顺利进行后续的操作,需要首先对缺失值进行处理,处理的方式一般为删除或填充,Python中提供了专门的工具包,可以方便地进行实现.读取操作可 ...
- 设定cookie 获取cookie数据的转换
1,cookie必须是键值对形式的 键名=数值 而且必须是 字符串格式 document.cookie = 'nam ...
- kettle从入门到精通 第六十一课 ETL之kettle 任务调度器,轻松使用xxl-job调用kettle中的job和trans
1.大家都知道kettle设计的job流程文件有个缺点:只能设置简单的定时任务,无法设置复杂的如支持cron表达式的job. 今天给大家分享一个使用xxl-job调度carte的流程文件的示例.整个调 ...
- Linux扩展篇-shell编程(五)-流程控制(四)-while语句
基本语法: while [ condition ] do statement done 或 while [ condition ]; do statement done 注意事项: 实践:
- python写文件,过滤空行,根据某一行打上标记
import shutil import os ###第一步写文件 ''' with open('test.txt', 'w',encoding='utf-8') as f: f.write(&quo ...
- redis简单应用demo - 订单号自增长的思路:业务编码+地区+自增数值
redis简单应用demo1.字符串127.0.0.1:6379> set hello toneyOK127.0.0.1:6379> type hellostring127.0.0.1:6 ...
- Kubernetes(二)资源管理
1. 资源管理介绍 在kubernetes中,所有内容都抽象为资源,用户需要操作资源来管理kubernetes. Kubernetes本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服 ...
- arm linux 移植 iperf3
背景 新做的硬件需要有进行一些板级接口测试:关于网络的测试很多时候只是停留在 ping 通:能够使用就算了.不知道网络的丢包率,也不知道网络吞吐的性能. 因此,需要使用一些专业化的工具来进行测试:查阅 ...