关于rpc:RPC基础概念问答

6次阅读

共计 846 个字符,预计需要花费 3 分钟才能阅读完成。

RPC 原理图

上面的两张原理图是一样的。从第一张原理图中能够看到 rpc 传输过程中应用的传输协定,从第二张原理图中 sockets 是在 Kernel 中,也就是在操作系统的内核中。

什么是 RPC??

近程过程调用。一个服务器应用另一台服务器上的提供的服务或办法。

RPC 解决的什么问题??

让分布式或微服务零碎中不同服务之间的调用像本地调用一样简略。

为什么要应用 RPC??

因为两个服务器不是同一个操作系统,也不在一个内存空间,所以不能间接调用,须要通过网络来传递数据。

RPC 怎么解决通信??

在客户端和服务器之间建设 TCP 连贯,rpc 所有传输的数据都在 TCP 连贯中传输。连贯能够是按需连贯,调用完结后就断开,也能够是和长连贯,多个 rpc 共享同一个连贯。

因为客户端和服务器是通过网络进行传输的,所以须要一个传输层,把函数 id 和序列化后的参数传递给服务器,并把序列化后的调用后果传回客户端。所以 TCP(大部分框架应用)和 UDP 都能够,也能够应用 http2(grpc 应用)

RPC 怎么解决寻址的问题??

客户端上的利用通知 rpc 框架,服务器的主机 /IP 地址、端口号、办法名称,这样就能够实现调用。

网络协议是基于二进制的,内存中的参数的值须要 序列化 成二进制的模式。

服务器收到申请后,要对参数进行 反序列化,把二进制变成内存中的参数,把参数复原成内存中的表达方式,而后找到对应的办法(寻址的一部分),进行本地调用,失去返回值。

服务器将返回值(序列化后)发给客户端,客户端收到返回值后,进行反序列化,而后传递给它下面的利用。

java 的序列化形式:json。

RPC 和 socket 的区别??

socket 是两个主机不同过程之间进行通信的形式。

rpc 是建设在 socket 之上的。rpc 通过 socket 实现通信,也能够不必 socket,而应用其余的通信形式,比方命名管道(windows 零碎中)。

RPC 和 HTTP 的分割和区别??

http 协定是应用层的协定。http 是实现 rpc 的一种形式。能够应用 http 协定,也能够应用 TCP / UDP 协定。

正文完
 0