应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用
标签:
什么是 RPC?RPC道理是什么? 什么是 RPC?RPC(Remote Procedure Call)—长途过程挪用,它是一种通过网络从长途计算机措施上请求处事,而不需要了解底层网络技术的协议。好比两个差此外处事 A、B 部署在两台差此外机器上,那么处事 A 如果想要挪用处事 B 中的某个要领该怎么办呢?使用 HTTP请求 固然可以,但是可能会对照慢而且一些优化做的并欠好。 RPC 的呈现就是为了解决这个问题。
RPC道理是什么?处事消费方(client)挪用以本地挪用方法挪用处事;
client stub接收到挪用后卖力将要领、参数等组装成能够进行网络传输的动静体;
client stub找随处事地点,并将动静发送随处事端;
server stub收到动静后进行解码;
server stub按照解码功效挪用本地的处事;
本地处事执行并将功效返回给server stub;
server stub将返回功效打包成动静并发送至消费方;
client stub接收到动静,并进行解码;
处事消费方得到最终功效。
下面再贴一个网上的时序图:
从上面对 RPC 介绍的内容中,归纳综合来讲RPC 主要解决了:让漫衍式或者微处事系统中差别处事之间的挪用像本地挪用一样简单。
常见的 RPC 框架总结?
RMI(JDK自带):?JDK自带的RPC,有很多局限性,不保举使用。
Dubbo:?Dubbo是 阿里巴巴公司开源的一个高性能优秀的处事框架,使得应用可通过高性能的 RPC 实现处事的输出和输入成果,可以和 Spring框架无缝集成。目前 Dubbo 已经成为 Spring Cloud Alibaba 中的官方组件。
gRPC?:gRPC是可以在任何环境中运行的现代开源高性能RPC框架。它可以通过可插拔的撑持来有效地连接数据中心内和跨数据中心的处事,以实现负载平衡,跟踪,运行状况查抄和身份验证。它也适用于漫衍式计算的最后一英里,以将设备,移动应用措施和浏览器连接到后端处事。
Hessian:?Hessian是一个轻量级的remotingonhttp工具,使用简单的要领供给了RMI的成果。 对比WebService,Hessian更简单、快捷。给与的是二进制RPC协议,因为给与的是二进制协议,所以它很适合于发送二进制数据。
Thrift:?Apache Thrift是Facebook开源的跨语言的RPC通信框架,目前已经捐献给Apache基金会打点,由于其跨语言特性和超卓的性能,在很多互联网公司得到应用,有能力的公司甚至会基于thrift研发一套漫衍式处事框架,增加诸如处事注册、处事发明等成果。
既有 HTTP ,为啥用 RPC 进行处事挪用?###RPC 只是一种设计而已
RPC 只是一种观点、一种设计,就是为了解决?差别处事之间的挪用问题, 它一般会包罗有?传输协议?和?序列化协议?这两个。
实现 RPC 的可以传输协议可以直接成立在 TCP 之上,也可以成立在 HTTP 协议之上。大部分 RPC 框架都是使用的 TCP 连接(gRPC使用了HTTP2)。
HTTP 和 TCP可能此刻很多对计算机网络不太熟悉的伴侣已经被搞蒙了,要想真正搞懂,还需要来简单温习一下计算机网络根本常识:
我们凡是谈计算机网络的五层协议的体系布局是指:应用层、传输层、网络层、数据链路层、物理层。
应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。HTTP 属于应用层协议,它会基于TCP/IP通信协议来通报数据(HTML 文件, 图片文件, 盘问功效等)。HTTP协议事情于客户端-处事端架构为上。浏览器作为HTTP客户端通过 URL 向HTTP处事端即WEB处事器发送所有请求。Web处事器按照接收到的请求后,向客户端发送响应信息。HTTP协议成立在 TCP 协议之上。
运输层(transport layer)的主要任务就是卖力向两台主机进程之间的通信供给通用的数据传输处事。TCP是传输层协议,主要解决数据如安在网络中传输。对比于UDP,TCP?供给的是面向连接的,可靠的数据传输处事。
主要关键就在 HTTP 使用的 TCP 协议,和我们自界说的 TCP 协议在报文上的区别。
http1.1协议的 TCP 报文包罗太多在传输过程中可能无用的信息:
HTTP/1.0 200 OK Content-Type: text/plain Content-Length: 137582 Expires: Thu, 05 Dec 1997 16:00:00 GMT Last-Modified: Wed, 5 August 1996 15:55:28 GMT Server: Apache 0.84 <html> <body>Hello World</body> </html>温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32380.html