上海网站外包建设,装饰设计公司排行榜,wap网站案例,展馆设计说明范文文章目录RPC是什么RPC和HTTP的关系和区别[附]关于REST论文中提到的HTTP不是RPC重点参考 凤凰架构-远程过程调用 既然有HTTP为什么还要有RPC#xff1f; RPC是什么
RPC(Remote Procedure Call)#xff1a;即远程过程调用#xff0c;目的是为了让计算机能够跟调用…
文章目录RPC是什么RPC和HTTP的关系和区别[附]关于REST论文中提到的HTTP不是RPC重点参考 凤凰架构-远程过程调用 既然有HTTP为什么还要有RPC RPC是什么
RPC(Remote Procedure Call)即远程过程调用目的是为了让计算机能够跟调用本地方法一样去调用远程方法。
RPC本身并不是一个具体的协议而是对不同应用程序间通信的一种描述一种通信思想。它可以使用很多技术来实现有大量不同底层实现的RPC库(如早期的DCOM、CORBA现在的dubbo、protobuf、grpc等等)。
RPC通常是基于TCP/UDP协议的传输效率高、可定制性强、数据包小。
以下是一个远程过程调用的核心流程。RPC包含的就是从User stub到Server stub的过程包括了打包/解包、序列化/反序列化、发送/接收等通讯细节 RPC和HTTP的关系和区别
很多人喜欢把RPC与HTTP作比较因为HTTP是web领域最常用的网络通信协议而RPC也是进行网络通信的方法并且有一些RPC库还是基于HTTP实现的。在大多数人看来HTTP已经是比较万能的通信协议了于是就对RPC的定位感到捉摸不透。
正如开头所说RPC本身并不是一个具体的协议而是一种设计一种通信思想通讯协议只是其中一部分。 RPC跟HTTP不是对立面RPC也可以使用HTTP作为通讯协议。
TCP是70年代出来的协议RPC是80年代出现的HTTP是90年代才开始流行的。 RPC比HTTP出现的更早。一直以来都有大量的不同底层实现的RPC库(如早期的DCOM、CORBA现在的Thrift、Dubbo、Protobuf、gRPC等等)。
但也正因为RPC仅仅是一种思想所以互联网厂商并没有一种统一的协议可以使用。随着Web的发展浏览器为了能够与所有的网站服务通信就需要一个统一的通信标准于是HTTP就成为了这个通信标准。而且不同于RPC面向过程的思想HTTP以面向资源的思想构建Web服务并大获成功。
区别 服务发现机制不同。要向某个服务器建立连接需要知道它的ip和端口。找到服务对应的ip和端口的过程就是服务发现。 HTTP 依靠DNS做服务发现。通过域名DNS解析服务器的ip默认80端口(如果要用其它端口可以在服务端做反向代理) (由于DNS也是服务发现的一种所以也有基于DNS做服务发现的组件如CoreDNS)RPC 一般会有中间件来保存服务的ip和端口比如consul等服务发现中间件甚至Redis等存储服务。 协议不同 HTTP服务基于HTTP协议HTTP是应用层协议是位于TCP协议之上的。相比于TCP使用起来更方便但效率更低。 另外HTTP1.1之前是短连接1.1之后默认是长连接HTTP2.0又在前者的基础上做了很多改进性能可能比某些RPC协议还要好。RPC通常基于TCP或UDP协议效率更高但使用起来更复杂。 TPC是长连接的UDP是无连接的。 传输的内容不同 HTTP 的设计目的是应用于Web服务有固定的包格式包括消息头、消息体。消息体的数据格式以字符串、图片音频文件为主定制性弱。虽然数据最终都是以二进制的形式传输但HTTP是应用层协议只能使用接口提供的的固定的这些数据类型RPC 大都是基于TCP/UDP的包格式由使用者定义定制型更强、有效数据占比更高且存储的直接就是二进制数据用户想要传输什么转为字节放入即可。 应用场景不同 HTTP多用于B/SRPC多用于C/S。但现在已经分的没这么清了因为B/S和C/S在融合很多软件同时支持多端(比如百度云盘即支持网页端还支持手机端和PC端)现在HTTP多用于Web服务端与客户端的通信RPC多用于服务器各个微服务之间的通讯以及对延迟和带宽有要求的游戏通信HTTP虽然方便但性能较低。对性能有要求时就需要直接使用RPC实现通信目的加快传输效率例如分布式服务间、游戏C/S端的高效、低延迟的通信需求。 [附]关于REST论文中提到的HTTP不是RPC 摘自REST论文 如果想了解这个问题不得不了解REST。关于REST我在《【REST系列】详解REST架构风格》中有详细的解释
简单说。HTTP和RPC都是实现网络通信的方式只是它们对待通信的理解方式有所不同根据REST的思想得知HTTP认为的通信是对资源的操作而RPC认为的通信则是调用远程函数。
更简单地说。HTTP的设计是面向资源的而RPC的本质是面向过程的。所以严格来说HTTP确实不属于RPC。 平时我们只会觉得 它们都能传输我们想要传输的数据而不会深究这些核心思想上的区别这也无可厚非。
在REST思想中Web通信实际上是对资源的操作。REST流行之前Web通信还是以SOAP为主而SOAP其实就是一个RPC的实现。从最终结果来看HTTP面向资源的思想 在Web领域是成功的。
面向资源和面向过程就像编程语言中的面向对象和面向过程。HTTP在Web领域的成功并不能说明RPC思想不好只能说HTTP比RPC更适合用于Web。它们各有优势我们应当结合实际情况按需使用