大家好,我是小白。今天给大家讲解一下grpc通信
一、先了解rpc
远程过程调用(英语:Remote Procedure Call,缩写为 RPC)这个应该都有所耳闻,这是一种计算机通信协议。该协议允许运行于一台计算机的程序调用另一个地址空间(通常为一个开放网络的一台计算机)的子程序,而程序员就像调用本地程序一样,无需额外地为这个交互作用编程(无需关注细节)。RPC是一种服务器-客户端(Client/Server)模式,经典实现是一个通过发送请求-接受回应进行信息交互的系统。
二、了解gRPC
这些年云计算最火热的莫过于Kubernetes,随之带动了微服务的发展。而分布式/微服务之间的通信, 自然会联想到rpc通信。
gRPC是一个由Google开源的,跨语言的,高性能的远程过程调用(RPC)框架,能够运行于任意环境之中。最初由谷歌进行开发。它使用HTTP/2作为传输协议,使用 Protocol Buffers 作为序列化协议。
三、gRPC好处
*现代高性能轻量级 RPC 框架。
*协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现。
*可用于多种语言的工具,以生成强类型服务器和客户端。
*支持客户端、服务器和双向流式处理调用。
*使用 Protobuf 二进制序列化这会大幅减少需要传输的数据量,从而大幅提高性能。
*gRPC可以方便地支持流式通信。
四、了解Protocol Buffers
protocol buffers (ProtoBuf)是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。具有灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。
json\xml都是基于文本格式,protobuf是二进制格式。
使用上通过定义数据结构,然后通过 ProtoBuf 工具生成各种语言版本的数据结构类库,用于操作 ProtoBuf 协议数据。