rpc和grpc通信

一、rpc框架原理

当客户端的应用想发起一个远程调用时,它实际是调用客户端的 Stub。它负责将调用的接口、方法和参数,通过约定的协议规范进行编码,并通过本地的 RPCRuntime 进行传输,将调用网络包发送到服务器。服务器端的 RPCRuntime 收到请求后,交给服务器端的 Stub 进行解码,然后调用服务端的方法,服务端执行方法,返回结果,服务器端的 Stub 将返回结果编码后,发送给客户端,客户端的 RPCRuntime 收到结果,发给客户端的 Stub 解码得到结果,返回给客户端。

1.对于客户端而言,这些过程是透明的,就像本地调用一样;对于服务端而言,专注于业务逻辑的处理就可以了。
2、对于 Stub 层,处理双方约定好的语法、语义、封装、解封装。
3、对于 RPCRuntime,主要处理高性能的传输,以及网络的错误和异常。

二、rpc通信优势

RPC的本质是提供了一种轻量无感知的跨进程通信的方式,在分布式机器上调用其他方法与本地调用无异(远程调用的过程是透明的,你并不知道这个调用的方法是部署在哪里,通过PRC能够解耦服务)。RPC是根据语言的API来定义的,而不是基于网络的应用来定义的,调用更方便,协议私密更安全、内容更小效率更高。

http接口是在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便。利用现成的http协议 进行传输。但是如果是一个大型的网站,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,首先(基于TCP协议的情况下)就是长链接,不必每次通信都要像http 一样去3次握手什么的,减少了网络开销;其次就是RPC框架一般都有注册中心,有丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知、统 一化的操作。第三个来说就是安全性。最后就是最近流行的服务化架构、服务化治理,RPC框架是一个强力的支撑。

三、grpc通信特点及流程

gRPC 采用 HTTP / 2 以支持高性能的、可扩展的 API 。报文使用二进制而不是文本通信可以保持载荷紧凑、高效。HTTP / 2 请求在一个 TCP 连接上可支持多路复用,允许多个消息并发传送而不影响网络资源利用率。gRPC 使用报头压缩(header compression )来减少请求和响应的大小。

gRPC 基于 Protocol Buffer,一个开源的用于结构化数据序列化机制,它是语言和平台无关的。Protocol Buffer 的描述非常详细,与 XML 类似。但是它们比其他的协议格式更小,更快,效率更高。任何需要序列化的自定义数据类型在 gRPC 被定义为一个 Protocol Buffer 。

相比于 REST + JSON 组合 ,gRPC 提供更好的性能和安全性。它极大的促进了在客户端和服务器之间使用 SSL / TLS 进行身份验证和数据交换加密。

创建 gRPC 服务的流程

1)在 Protocol Buffer (.proto) 文件中描述服务和载荷结构

2)从 .proto 文件生成 gRPC 代码

3)用一种开发语言实现服务端

4)创建一个客户端调用服务

5)运行服务端和客户端

 

你可能感兴趣的:(面试,网络协议)