我和gRPC不得不说的故事,有兴趣看看吗?

gRPC简介

gRPC (Google Remote Procedure Call) 是 Google 发起的一个高性能、开源、通用的远程过程调用(Remote Procedure Call)框架。该框架基于HTTP/2协议传输,使用 Protocol Buffers 作为接口描述语言。

我和gRPC不得不说的故事,有兴趣看看吗?_第1张图片

在gRPC中,客户端应用程序可以直接调用不同服务器上服务端应用程序上的方法,就像它是一个本地对象一样,更容易创建分布式应用程序和服务。

与许多 RPC 系统一样,gRPC 基于定义服务的思想,指定可以通过参数和返回类型远程调用的方法。

在服务器端实现这个接口并运行在 gRPC 服务器上来处理客户端的调用。在客户端有一个存根提供相同的方法。

我和gRPC不得不说的故事,有兴趣看看吗?_第2张图片

gRPC 客户端和服务端可以在各种环境中相互运行和通信,比如:从内部的服务器到你自己的桌面应用程序。

还可以用 gRPC 支持的任何语言编写,比如:你可以轻松地用Java创建gRPC服务端,用Go、Python或Ruby创建客户端。

Protocol Buffers

默认情况下,gRPC使用 Protocol Buffers 作为接口描述语言。Protocol Buffers是 Google 用于序列化结构化数据的成熟开源机制,尽管它也可以用于JSON等其他数据格式。

使用 Protocol Buffers 时的第一步是为要在proto文件中序列化的数据定义结构:这是一个扩展名为.proto的普通文本文件。Protocol Buffers 数据的结构为消息,其中每个消息是包含一系列称为字段的键值对的信息的小逻辑记录。

可以在普通的proto文件中定义gRPC服务,使用作为 Protocol Buffers 消息指定的RPC方法参数和返回类型。

gRPC使用带有特殊 gRPC 插件的协议从您的proto文件生成代码:可以获得生成的 gRPC 客户端和服务端代码,以及用于填充、序列化和检索消息类型的常规 Protocol Buffers 代码。

Protocol Buffers的 proto3 版本具有稍微简化的语法、一些有用的新特性,并且支持更多的语言(Java, C++, Dart, Python, Objective-C, C#、Ruby等等)。

一般来说,虽然可以使用 proto2 (当前默认的 Protocol Buffers 版本),但还是建议将 proto3 与 gRPC 一起使用,因为它允许使用所有gRPC支持的语言,避免 proto2 客户端与 proto3 服务端通信的兼容性问题,或者避免 proto2 服务端与 proto3 客户端通信的兼容性问题。

你可能感兴趣的:(服务器,运维)