首页 > 其他分享 >grpc介绍

grpc介绍

时间:2022-09-29 16:47:04浏览次数:45  
标签:协议 语言 grpc 介绍 gRPC 缓冲区 服务器 客户端

  本页向您介绍gRPC和协议缓冲区。gRPC可以使用协议缓冲区作为其接口定义语言(IDL)和底层消息交换格式。如果你是gRPC和/或协议缓冲区的新手,请阅读这个! 如果你只是想先深入了解gRPC的操作,请选择一种语言并尝试其快速启动。   在gRPC中,客户端应用程序可以直接调用不同机器上的服务器应用程序的方法,就像它是一个本地对象一样,使你更容易创建分布式应用程序和服务。就像许多RPC系统一样,gRPC是围绕着定义一个服务的想法,指定可以远程调用的方法及其参数和返回类型。在服务器端,服务器实现这个接口并运行gRPC服务器来处理客户端的调用。在客户端,客户端有一个存根(在某些语言中被称为只是一个客户端),提供与服务器相同的方法。     gRPC客户端和服务器可以在各种环境中运行并相互交谈--从Google内部的服务器到你自己的桌面--并且可以用任何gRPC支持的语言编写。因此,举例来说,你可以很容易地用Java创建一个gRPC服务器,客户端用Go、Python或Ruby。此外,最新的谷歌API将有gRPC版本的接口,让你轻松地在你的应用程序中建立谷歌功能。   使用协议缓冲区 默认情况下,gRPC使用谷歌成熟的开源机制Protocol Buffers来序列化结构化数据(尽管它也可以用于其他数据格式,如JSON)。这里有一个关于它如何工作的快速介绍。如果你已经熟悉了协议缓冲区,请随意跳到下一节。   使用协议缓冲区的第一步是为你想在proto文件中序列化的数据定义结构:这是一个普通的文本文件,扩展名为.proto。协议缓冲区数据的结构是消息,每个消息是一个小的逻辑信息记录,包含一系列称为字段的名-值对。下面是一个简单的例子。  

message Person {
  string name = 1;
  int32 id = 2;
  bool has_ponycopter = 3;
}

然后,一旦你指定了你的数据结构,你就可以使用协议缓冲区编译器protoc从你的proto定义中用你喜欢的语言生成数据访问类。这些类为每个字段提供简单的访问器,如name()和set_name(),以及将整个结构序列化/解析为原始字节的方法。因此,例如,如果你选择的语言是C++,在上面的例子中运行编译器将生成一个叫做Person的类。然后你可以在你的应用程序中使用这个类来填充、序列化和检索Person协议缓冲区的信息。

你在普通的proto文件中定义gRPC服务,将RPC方法参数和返回类型指定为协议缓冲区消息。

 

gRPC使用protoc和一个特殊的gRPC插件,从你的proto文件中生成代码:你会得到生成的gRPC客户端和服务器代码,以及用于填充、序列化和检索你的消息类型的常规协议缓冲器代码。你会看到下面的一个例子。

要了解更多关于协议缓冲区的信息,包括如何在你选择的语言中安装带有gRPC插件的protoc,请参阅协议缓冲区文档。

 

 

协议缓冲区版本
虽然协议缓冲器已经向开源用户提供了一段时间,但本网站的大多数例子都使用了协议缓冲器第3版(proto3),它的语法稍微简化,有一些有用的新功能,并支持更多的语言。Proto3目前有Java、C++、Dart、Python、Objective-C、C#、一个ite-runtime(Android Java)、Ruby和JavaScript版本,来自protocol buffers GitHub repo,以及来自golang/protobuf官方软件包的Go语言生成器,还有更多语言正在开发中。你可以在proto3语言指南和每种语言的参考文档中找到更多信息。参考文档还包括一个.proto文件格式的正式规范。

一般来说,虽然你可以使用proto2(目前默认的协议缓冲区版本),但我们建议你使用proto3与gRPC,因为它可以让你使用全部的gRPC支持的语言,以及避免proto2客户端与proto3服务器对话的兼容性问题,反之亦然。

 

 

 

 

       

标签:协议,语言,grpc,介绍,gRPC,缓冲区,服务器,客户端
From: https://www.cnblogs.com/ben-zhou/p/16742054.html

相关文章

  • 约束-外键约束-级联操作和多表关系介绍
    约束-外键约束-级联操作1.添加级联操作语法: 2.分类1.级联更新:ONUPDATECASCADE2.级联删除:ONDELETECASCADE多表关系介绍1.多表之间的关系1.一......
  • Postgres-XL集群软件介绍及搭建
    介绍Postgres-XLPostgres-XL全称为PostgreseXtensibleLattice,是TransLattice公司及其收购数据库技术公司–StormDB的产品。Postgres-XL是一个横向扩展的开源数据库集群,......
  • FreeSwitch 视频支持 安装libyuv libvpx opus mod_av 等模块介绍
    ①openh264OpenH264是思科公司以BSD协议开放的一个开源的H.264编码器和解码器。Cisco将以BSD协议开放其H264解码器实现,并提供针对主流操作系统的预编译库文件......
  • Doris rollup介绍
    Rollup   Rollup的根本作用就是提升某些查询的查询效率,也称为物化索引。   Rollup属于Base表,Base表可以增删Rollup,Rollup完全和Base表同步更新,Base表数据发生变......
  • FreeSWITCH vad 模块介绍
    介绍mod_vad是一个freeswitch的模块,实现VAD录音和放音支持打断。下载mod_vad安装libmyauth.socopy到fs/ib目录一般是/usr/local/freeswitch/libmod_vad.soco......
  • CI\CD工具 TeamCity和Jenkins简单介绍
    JenkinsJenkins是CI市场中最知名且最常见的名号之一。其最初是由Sun公司的一位工程师打造的一个辅助项目,并迅速扩展为最大的开源CI工具之一,可帮助工程团队实现自动化部署......
  • Leangoo领歌看板工具,scrum工具介绍。
    ​Leangoo(领歌)是一款轻量化、敏捷化、数字化的新一代项目管理和协同平台,助力企业降本增效、加速创新,在数字时代赢得竞争。使用Leangoo的学习成本非常低,团队花几分钟时间就......
  • jvm虚拟机内存管理的简单介绍
    jvm内存分为虚拟机栈,堆,方法区,程序计数器,本地方法栈 jvm分为五大模块,类装载器子系统,运行时数据区,执行引擎,本地方法接口,垃圾收集模块JVM运行时内存 JDK7的内存结构......
  • .NET 反向代理 YARP 代理 GRPC
    前面的YARP文档中,介绍了怎么去代理http,和如何根据域名转发,而在现在微服务的应用是越来越来多了,服务间的调用依靠http越来越不现实了,因为http多次握手的耗时越发......
  • Linux 网络编程——套接字的介绍
    套接字是一种通信机制(通信的两方的一种约定),凭借这种机制,不同主机之间的进程可以进行通信。我们可以用套接字中的相关函数来完成通信过程。套接字的特性有三个属性确定,它们是......