RPC协议与HTTP协议的区别
甚么叫RPC?为啥要RPC?
RPC是指远程进程调用,也就是说两台服务器A,B,一个利用部署在A服务器上,想要调用B服务器上利用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和转达调用的数据。
RPC如何工作?
首先,要解决通讯的问题,主要是通过在客户端和服务器之间建立TCP连接,远程进程调用的所有交换的数据都在这个连接里传输。连接可以是按需连接,调用结束后就断掉,也能够是长连接,多个远程进程调用同享同一个连接。
第二,要解决寻址的问题,也就是说,A服务器上的利用怎样告知底层的RPC框架,如何连接到B服务器(如主机或IP地址)和特定的端口,方法的名称名称是甚么,这样才能完成调用。比如基于Web服务协议栈的RPC,就要提供一个endpointURI,还是是从UDDI服务上查找。如果是RMI调用的话,还需要一个RMIRegistry来注册服务的地址。
第三,当A服务器上的利用发起远程进程调用时,方法的参数需要通过底层的网络协议如TCP传递到B服务器,由于网络协议是基于二进制的,内存中的参数的值要序列化成二进制的情势,也就是序列化(Serialize)或编组(marshal),通过寻址和传输将序列化的二进制发送给B服务器。
第四,B服务器收到要求后,需要对参数进行反序列化(序列化的逆操作),恢复为内存中的表达方式,然后找到对应的方法(寻址的一部份)进行本地调用,然后得到返回值。
第五,返回值还要发送回服务器A上的利用,也要经过序列化的方式发送,服务器A接到后,再反序列化,恢复为内存中的表达方式,交给A服务器上的利用
RPC协议与HTTP协议的区分
1、RPC是一种API,HTTP是一种无状态的网络协议。RPC可以基于HTTP协议实现,也能够直接在TCP协议上实现。
2、RPC主要是用在大型网站里面,由于大型网站里面系统繁多,业务线复杂,而且效力优势非常重要的一块,这个时候RPC的优势就比较明显了。
HTTP主要是用在中小型企业里面,业务线没那末繁多的情况下。
3、HTTP开发方便简单、直接。开发一个完善的RPC框架难度比较大。
4、HTTP发明的初衷是为了传送超文本的资源,协议设计的比较复杂,参数传递的方式效力也不高。开源的RPC框架针对远程调用协议上的效力会比HTTP快很多。
5、HTTP需要事前通知,修改Nginx/HAProxy配置。RPC能做到自动通知,不影响上游。
6、HTTP大部份是通过Json来实现的,字节大小和序列化耗时都比Thrift要更消耗性能。RPC,可以基于Thrift实现高效的二进制传输。
TikTok千粉号购买平台:https://tiktokusername.com/
TOP