网站导航怎么做的,企业营销网站服务器1g够,wordpress获取地址,汝州市文明建设网站首选理清楚关系
RPC与HTTP是两个不同维度的东西
HTTP 协议#xff08;Hyper Text Transfer Protocol#xff09;#xff0c;又叫做超文本传输协议#xff0c;是一种传输协议#xff0c;平时通过浏览器浏览网页网页#xff0c;用到的就是 HTTP 协议。
而 RPC#xff0…首选理清楚关系
RPC与HTTP是两个不同维度的东西
HTTP 协议Hyper Text Transfer Protocol又叫做超文本传输协议是一种传输协议平时通过浏览器浏览网页网页用到的就是 HTTP 协议。
而 RPCRemote Procedure Call又叫做远程过程调用。它本身并不是一个具体的协议而是一种调用方式。
RPC这种调用方式主要有两部分组成
传输协议序列化方式
传输协议有多种比如HTTP协议、自研协议等。
序列化方式有很多种比如二进制流JSONXML等
所以HTTP协议只是RPC中传输协议中的一种
如果传输协议与序列化方式选择HTTP与JSON只要封装的好也能实现这个远程调用也能称之为RPC。
只不过早期的RPC因为传输效率的原因大多没有选择HTTP与JSON而是自研协议与二进制传输。
网上区分RPC与HTTP的文章太多了我也没必要重复所以我提供一种新的角度就是根据历史的发展进行解释。
历史发展
早期互联网大多是C/S架构并且不需要对外开发API仅自己内部调用中国互联网对外开放事件3Q大战并且大家的带宽还很低此时的HTTP协议还是1.01.0传输效率低具体为什么后面会讲。
基于以上背景当时需要一种高效率的传输方式并且不需要考虑兼容性。
所以在传输协议的选择上基于TCP的自研协议的RPC就应运而生了。
也是因为上述相同的历史背景所以当时传输信息的序列化方式不是现在流行的JSON或者XML而是二进制流因为体积更小传输效率更高。 内部系统
但是对于大型企业来说内部子系统较多、接口非常多的情况下RPC框架的好处就显示出来了首先就是长链接不必每次通信都要像http一样去3次握手什么的减少了网络开销
其次就是RPC框架一般都有注册中心有丰富的监控管理发布、下线接口、动态扩展等对调用方来说是无感知、统一化的操作。
RPC额外优势
一般RPC框架不仅仅有传输功能还添加了很多其他功能比如服务发现、负载均衡、链路追踪、限流降级等等。比如这里的Dubbo 为什么不直接使用TCP协议
这里就不赘述简单说TCP协议有自身的问题比如粘包问题等直接使用会有问题所以都是基于TCP的自研协议。
RPC 协议 https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/
HTTP协议为什么效率低
一个HTTP请求报文由请求行request line、请求头部header、空行和请求数据4个部分组成下图给出了请求报文的一般格式。 HTTP请求报文 这里可以看出HTTP协议为了传输内容前后增加了很多“冗余”的字段当然这里的“冗余”是为了通用性与兼容性毕竟HTTP协议要兼容大多数不同的浏览器与不同的设备。
但是如果不需要考虑兼容性只针对具体的设备那就是真冗余了
为什么现在用了HTTP协议
现在很多是直接使用HTTP协议并且现在很多RPC框架也是使用的HTTP协议原因如下
因为HTTP也一直在升级也优化了性能网友的带宽也在提升对性能要求没这么高了兼容性之前接口仅需支持单个设备现在需要支持多设备了而HTTP的兼容性是最好的几乎所有设备都会支持成本问题自研也需要开发成本还要考虑兼容性。
基于以上原因如果对性能没有极致要求没必要自研协议直接使用HTTP协议
总结
而 RPCRemote Procedure Call又叫做远程过程调用。它本身并不是一个具体的协议而是一种调用方式只要能够实现这种调用方式都可以称为RPC
实现RPC有两个核心点传输协议与序列化方式而HTTP只是传输协议中的一种。
参考
RPC 协议 https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/
既然有 HTTP 协议为什么还要有 RPC