为什么有了HTTP,还需要RPC协议?

为什么有了http,还需要rpc协议呢?在进行说明之前,首先我们需要了解什么是http协议,什么是rpc协议。
什么是http协议?
http是一种广泛使用的网络传输协议,它定义了客户端(如浏览器, 手机用户app等)和服务器(网站等提供服务的,服务端)之间的通信格式和通信方法,它是基于请求—响应这样一种通信模型,即服务端根据请求返回一个响应,在请求和响应中,都包含了两端(客户端和服务端)之间进行交互的一些信息,如方法、头部、正文等。
图1 http交互基本流程图
http具有很多优点,它支持多种数据格式和编码方式,可以实现跨平台和跨语言的通信,通信简单、灵活、易于扩展。但是同时它也有一些缺点:
(1)http是无状态的,每次请求都需要重新建立连接,这会增加网络开销和延迟。
(2)数据传输是基于文本的,这会导致数据量较大,解析效率较低。
(3)安全性较差,因此容易受到中间人攻击、重放攻击等。
(4)语义较弱,http只能表达基本的增删改查操作,不能满足复杂的业务逻辑。
什么是rpc协议?
rpc即remote procedure call(远程程序调用),它是一种远程过程调用协议,它允许客户端像调用本地函数一样调用远程服务器上的函数。
图2 rpc协议交互流程
rpc的优点是高效、强大、易于使用,但是它也有一些缺点,比如:
(1)与http相反,rpc是有状态的,需要维护客户端和服务器之间的连接状态,这会增加系统的复杂度和资源消耗。
(2)rpc的数据传输是基于二进制的,这会导致数据不易阅读和调试。
(3)rpc的兼容性较差,不同的rpc框架之间可能存在协议和接口的不一致性。
(4)rpc的可扩展性较差,难以支持动态服务发现和负载均衡等功能。
二者的选择使用
基于tcp建立的http和各类rpc协议,只是定义了不同消息格式的应用层协议。http协议是超文本传输协议,而rpc本身并不是一个具体的协议,而是一种调用方式。
虽然http现在叫超文本协议,支持音频视频,但http设计初主要是用做展示网页文本,所以它传输的内容以字符串为主,内容存在非常多的冗余。而rpc协议定制化程度更高,可以采用体积更小的protobuf或其他序列化协议去保存结构体数据,同时也不需要像http那样考虑各种浏览器行为,性能更好。因此在公司内部微服务中抛弃http,转而使用rpc协议。虽然后来http得到了很大的改进,但由于很多公司内部已经用了多年的rpc协议,基于历史原因,一般没有选择更换成http。
在实际运用中,不论是http还是rpc,它们都有各自的优缺点,没有绝对的好坏之分。针对不同的使用场景选择合适的协议。比如:
(1)在微服务架构中,服务之间需要频繁地进行内部调用,rpc可以提供更高的性能和可靠性。
(2)在分布式计算中,需要将大量的计算任务分发到不同的节点上执行,rpc可以实现更灵活的负载均衡和容错机制。
(3)而在实时通信中,需要实现低延迟和高并发的数据交换,rpc可以支持多种传输协议和通信模式。
而假如你需要实现跨平台和跨语言的通信,或者需要支持多种数据格式和编码方式,或者需要利用现有的http基础设施和工具,可以选择http协议。
当然这样不是绝对固定的组合,也可以结合两个协议来实现更好的网络,例如:
(1)我们可以在http协议上封装rpc协议,使得rpc请求可以通过http代理或者网关来转发和处理。
(2)可以在rpc协议上使用http协议作为传输层,使得rpc请求可以利用http的特性来实现缓存、压缩、加密等功能。
所以总的来说,rpc的出现是为了应对http协议满足不了的对性能有所要求的网络场景。它们并不是互斥的,而是可以根据不同的场景和需求进行选择和组合的。

疲劳分析-Fatigue Tool很实用
OPPO O-Free蓝牙无线耳机:渐变机身设计,隔音效果良好
苹果以为其Apple watch产品质量问题而被告上法庭
汽车后市场不温不火怎么办,这个板块了解一下
2万亿进口额背后的中国芯发展历程
为什么有了HTTP,还需要RPC协议?
电机转子找平衡的方法有哪些
U/F转换器的原理与应用
微软下一代主机更多细节公布 GPU性能达Xbox One的8倍
ZigBee是具有怎样的无线数据传输网络?
中国飞船一飞冲天,关键铝材“哈尔滨造”
空气质量监测的标准以及空气检测设备的作用
工控主板使用需要注意的事项
贾跃亭将“东山再起”,FF究竟多久能量产?
fireflyAIO-3288C主板红外遥控器简介
路透社 | 美国正考虑向华为颁发临时通用许可缩减贸易限制
智能照明搭配物联网 将照明与生活环境融合起来
触摸工业显示器的原理和应用范围
兆驰半导体公布最新Micro LED巨量转移专利
GIS接触网络阻抗分析仪操作方法