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 都好
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章