首页 > 其他分享 >gRPC 简介

gRPC 简介

时间:2023-06-07 10:56:39浏览次数:44  
标签:gRPC 简介 缓冲区 服务器 message 序列化 客户端

gRPC 简介

标签(空格分隔): go,grpc

概述

在 gRPC 中,客户端应用程序可以直接调用不同计算机上的服务器应用程序上的方法,就像它是本地对象一样,从而使您更轻松地创建分布式应用程序和服务。与许多 RPC 系统一样,gRPC 基于定义服务的思想,指定可以使用其参数和返回类型远程调用的方法。在服务器端,服务器实现此接口并运行 gRPC 服务器来处理客户端调用。在客户端,客户端有一个存根(在某些语言中称为客户端),它提供与服务器相同的方法

gRPC 客户端和服务器可以在各种环境中运行和通信 - 从 Google 内部的服务器到您自己的桌面 - 并且可以使用 gRPC 支持的任何语言编写。因此,例如,您可以使用 Go、Python 或 Ruby 中的客户端轻松地在 Java 中创建 gRPC 服务器。此外,最新的 Google API 将具有其接口的 gRPC 版本,让您可以轻松地将 Google 功能构建到您的应用程序中。

使用协议缓冲区 【Protocol Buffers】

默认情况下,gRPC 使用 Protocol Buffers,这是 Google 成熟的开源机制,用于序列化结构化数据(尽管它可以与其他数据格式(如 JSON)一起使用)。以下是其工作原理的快速介绍。如果您已经熟悉协议缓冲区,请随时跳到下一部分。

使用协议缓冲区的第一步是为要在 proto 文件中序列化的数据定义结构:这是一个扩展名为 .proto 的普通文本文件。协议缓冲区数据结构化为消息,其中每条消息都是包含一系列称为字段的名称-值对的信息的小型逻辑记录。这是一个简单的例子

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

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

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

// The greeter service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

gRPC 使用带有特殊 gRPC 插件的 protoc 从原型文件生成代码:您将获得生成的 gRPC 客户端和服务器代码,以及用于填充、序列化和检索消息类型的常规协议缓冲区代码。若要了解有关协议缓冲区的详细信息,包括如何使用所选语言的 gRPC 插件安装 protoc,请参阅协议缓冲区文档

标签:gRPC,简介,缓冲区,服务器,message,序列化,客户端
From: https://www.cnblogs.com/yanweifeng/p/17462694.html

相关文章

  • GRPC核心概念、架构和生命周期
    GRPC核心概念、架构和生命周期标签(空格分隔):go,grpc官网地址:https://grpc.io/docs/what-is-grpc/core-concepts/概述与许多RPC系统一样,gRPC基于定义服务的思想,指定可以使用其参数和返回类型远程调用的方法。默认情况下,gRPC使用协议缓冲区作为接口定义语言(IDL)来描述服务......
  • Spring 学习笔记(8)—— SpringMVC 简介、DispatcherServlet 配置
    一、SpirngMVC简介SpringMVC通过一套MVC注解,让POJO成为处理请求的控制器,无需实现任何接口。在数据绑定、视图解析、本地化处理及静态资源处理上都有不俗的表现。SpringMVC处理请求的整体过程:二、配置DispatcherServlet1配置DispatcherServlet,截获特定的URL请求显式......
  • 1.Vue简介
    Vue的两个核心功能:声明式渲染:Vue基于标准HTML拓展了一套模板语法,使得我们可以声明式地描述最终输出的HTML和JavaScript状态之间的关系。响应性:Vue会自动跟踪JavaScript状态并在其发生变化时响应式地更新DOM。 渐进式框架:无需构建步骤,渐进式增强静态的HTML......
  • AD 域服务简介(一)
    AD域服务简介(一)目录一、前言1.1AD域服务1.2AD域对象与属性1.3AD域控制器DC1.4LDAP1.5全局编录 一、前言1.1AD域服务什么是目录(directory)呢?日常生活中使用的电话薄内记录着亲朋好友的姓名、电话与地址等数据,它就是telephonedirectory(电话目录);计......
  • AD 域服务简介(一)- 基于 LDAP 的 AD 域服务器搭建及其使用(转)
    一、前言1.1AD域服务什么是目录(directory)呢?日常生活中使用的电话薄内记录着亲朋好友的姓名、电话与地址等数据,它就是telephonedirectory(电话目录);计算机中的文件系统(filesystem)内记录着文件的文件名、大小与日期等数据,它就是filedirectory(文件目录)。如果这些目录内的数......
  • 原型设计工具简介
    1、Axure    Axure是知名度最高的原型工具,它作为最早、最权威的原型工具让多少产品经理又爱又恨。全面且强大的功能让它在行业里具有无与伦比的竞争力,但高昂的价格、复杂的操作也劝退了不少产品经理或者设计师。Axure特性有:(1)快速灵活的图表:要创建流程图、线框图、原型、用......
  • grpc 与http比较,具有哪些优势
    更高的性能:gRPC使用ProtocolBuffers作为默认的数据序列化工具,相比于JSON等文本格式,它的编码和解码速度更快,传输的数据量更小,因此可以更快地处理大量的请求和响应。更小的带宽占用:由于使用二进制数据格式,gRPC的数据传输量比HTTP更小,因此可以降低网络传输的带宽占用。支持......
  • playframework简介
           playframework框架出来已经两年了吧,从开始的备受瞩目到现在的踏踏实实。具有跨时代的2.0版本也在紧张的开发中。现在在java界fullstack的框架也是越来越多,国内的诸如此类框架也很多。Douyu、nutz、guzz、j-hi、rapid-framework和bbossgroups等。大多国内的框架都是......
  • A572Gr50钢板简介、A572Gr50期货订轧、A572Gr50力学性能
    一、A572Gr50钢板简介: A572Gr50钢板是美国标准下的钢板牌号,属于是低合金高强度钢板的一种。目前钢板的强度要求比较高,但是对厚度还有要求,所以这些高强度钢板就应运而生。像是A572Gr50钢板就是在钢板内部添加少部分合金元素,使其通过特殊的热处理工艺之后,钢板的强度及韧性能得到部......
  • 写给go开发者的gRPC教程-通信安全
    使用TLS安全传输数据什么是SSL/TLSSSL包含记录层(RecordLayer)和传输层[1],记录层协议确定传输层数据的封装格式。传输层安全协议使用X.509[2]认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密匙作为会话密匙(Sessionkey[3])。这个会谈密匙是用来将通信两方交换......