返回顶部
首页 > 资讯 > 后端开发 > GO >Golang语言实现gRPC的具体使用
  • 651
分享到

Golang语言实现gRPC的具体使用

2024-04-02 19:04:59 651人浏览 八月长安
摘要

目录grpc 的特点使用 grpc 定义服务端使用 gRPC 的客户端gRPC 是通信协议基于 Http/2,支持多语言的 RPC 框架,使用 Protobuf 作为它的接口设计语言

gRPC 是通信协议基于 Http/2,支持多语言的 RPC 框架,使用 Protobuf 作为它的接口设计语言(IDL),可以通过 protoc 工具生成 golang 语言的结构体。

RPCRemote Procedure Call 的缩写,译为远程过程调用(也可译为远程方法调用或远程调用),它是计算机通信协议。该协议可以实现调用远程服务就像调用本地服务一样简单,无需关心跨网络,跨平台,跨语言等问题。

gRPC 消息序列化方式通常使用 Protobuf,它是二进制格式,体积小,网络传输快,占用带宽流量少,调用性能更高。

gRPC 的特点

  • IDL

    gRPC 使用 ProtoBuf 来定义服务,ProtoBuf 是由 Google 开发的一种数据序列化协议(类似于 XMLJSON)。ProtoBuf 能够将数据进行序列化,并广泛应用在数据存储、通信协议等方面。

  • 多语言支持

    gRPC 支持多种语言,并能够基于语言自动生成客户端和服务端功能库。目前已提供了 C 版本 grpcJava 版本 grpc-javaGo 版本 grpc-go,其中,grpc 支持 Cc++node.jspythonRubyObjective-CPHPC# 等语言,grpc-java 已经支持 Android 开发。

  • HTTP2

    gRPC基于HTTP2标准设计,带来了更多强大功能,如双向流、头部压缩、多复用请求等。这些功能带来重大益处,如节省带宽、降低tcp链接次数、节省CPU使用和延长电池寿命等。同时,gRPC还能够提高了云端服务和WEB应用的性能。gRPC既能够在客户端应用,也能够在服务器端应用,从而以透明的方式实现客户端和服务器端的通信和简化通信系统的构建。

使用 gRPC 定义服务端

gRPC 默认使用 Protobuf 作为接口设计语言,在 .proto 文件中使用 service 关键字定义服务,使用 rpc 和 returns 关键字定义指定请求参数和返回结果的方法。

gRPC 提供了 Protobuf 编译器插件 protoc-gen-grpc,用于编译 .proto 文件,生成服务端和客户端代码,我们只需在服务端编写实现 api 的代码,然后在客户端调用 Api。

syntax = "proto3";

import "google/protobuf/any.proto";

package hello;

option go_package = "proto/gen/go";

message HelloReq {
  string name = 1;
}

message HelloResp {
  int32 code = 1;
  string greet = 2;
  google.protobuf.Any details = 3;
}

service HelloService {
  rpc Greet(HelloReq) returns (HelloResp);
}

使用 gRPC 的客户端

通过 protoc 命令编译 .proto 文件,自动生成服务端和客户端代码。

在服务端,手动编写生成的服务端方法的业务逻辑代码,然后运行 gRPC 服务,接收并处理客户端请求,gRPC 服务自动解码请求参数,然后执行服务的方法,并将返回结果自动进行编码。

在客户端,实现和服务相同的方法,然后客户端可以本地调用这些方法,将请求参数封装在 Protobuf 的消息类型中,gRPC 将请求发送给服务器,并返回服务器的 Protobuf 序列化方式的响应消息。

参考文章:

Golang 语言 gRPC 到底是什么?

gRPC简介

到此这篇关于Golang语言实现gRPC的具体使用的文章就介绍到这了,更多相关Golang gRPC内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Golang语言实现gRPC的具体使用

本文链接: https://lsjlt.com/news/120997.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Golang语言实现gRPC的具体使用
    目录gRPC 的特点使用 gRPC 定义服务端使用 gRPC 的客户端gRPC 是通信协议基于 HTTP/2,支持多语言的 RPC 框架,使用 Protobuf 作为它的接口设计语言...
    99+
    2024-04-02
  • Go语言Grpc Stream的实现
    目录Stream GrpcStream Grpc演示BookListStreamCreateBookStreamFindBookByIdStreamStream Grpc 在我们单次...
    99+
    2024-04-02
  • Golang类型断言的具体使用
    目录一,如何检测和转换接口变量的类型二,类型判断:type-switch一,如何检测和转换接口变量的类型 在Go语言的interface中可以是任何类型,所以Go给出了类型断言来判断...
    99+
    2023-03-08
    Golang 类型断言
  • Go 语言的 :=的具体使用
    目录1. 单变量 :=2. 多变量 :=3. 小结:=   Go 语言中 = 和 := 有什么区别1. 单变量 := Go 语言中新增了一个特殊的运算符:=,这个运算符可以使...
    99+
    2022-06-07
    GO
  • golang 实用库gotable的具体使用
    目录一 背景二 库简介三 代码3.1 创建表格3.2 增加row3.3 增加column3.4 打印表格3.5 边框操作3.6 输出json四 测试4.1 创建表格4.2 输出jso...
    99+
    2024-04-02
  • C语言结构体的具体使用方法
    目录初识C语言结构体1.为什么要有结构体2.结构体的定义2.1结构体类型的定义2.2定义结构体普通变量及访问2.3定义结构体指针变量及访问初识C语言结构体 1.为什么要有结构体 (1...
    99+
    2024-04-02
  • C语言结构体指针的具体使用
    目录什么是结构体指针?如何访问结构体成员?如何传递结构体指针作为参数?结构体指针数组在 C语言中,结构体指针是一种非常有用的数据类型,它可以让我们更方便地操作结构体。结构体指针可以指...
    99+
    2023-05-20
    C语言结构体指针
  • C++语言pow函数的具体使用
    pow的头文件是: #include <cmath> pow就是求次幂的,写法是 pow(a, b),意思是a的b次方。 对了,还有一个点,初学者很容易掉进坑里 a和b...
    99+
    2023-03-09
    C++ pow函数 C++ pow
  • Go语言并发爬虫的具体实现
    目录写在前面1. 单线程爬虫2. 多线程爬虫2.1 channel main函数2.2 sync.WaitGroup3. 源码地址写在前面 这篇文章主要让大家明白多线程爬虫,...
    99+
    2022-06-07
    爬虫 GO 并发 go语言
  • Go语言递归函数的具体实现
    目录斐波那契数列数字阶乘多个函数组成递归很对编程语言都支持递归函数,Go语言也不例外,所谓递归函数指的是在函数内部调用函数自身的函数,从数学解题思路来说,递归就是把一个大问题拆分成多...
    99+
    2023-05-14
    Go语言递归函数
  • Golang中Model的具体使用
    目录导语使用之前的准备开始使用发布版本引用自己封装的包修改版本导语 我们都知道在Golang中我们一般都是设置GOPATH目录,这个目录主要存放我们的第三方包,这个方式一直不是很方便...
    99+
    2023-05-14
    Golang Model使用 Golang Model
  • 怎么用Python语言的grpc实现消息传送
    这篇“怎么用Python语言的grpc实现消息传送”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用Python语言的gr...
    99+
    2023-07-05
  • R语言histogram(直方图)的具体使用
    最近小仙同学很是烦恼,本以为自己已经掌握了ggplot2作图的语法,用read.csv(), ggplot()+geom_point()/boxplot()/violinplot()...
    99+
    2024-04-02
  • C语言位运算符的具体使用
    目录布尔位运算符 移位运算符 对于更多紧凑的数据,C 程序可以用独立的位或多个组合在一起的位来存储信息。文件访问许可就是一个常见的应用案例。位运算符允许对一个字节或更大的数据单位中独...
    99+
    2024-04-02
  • go语言中[]*int和*[]int的具体使用
    目录[]*int*[]int[]*int是一个指向指针的切片,本质上是切片,只不过切片里面存放的元素是指针;*[]int是一个指向切片的指针,本质上是指针,可以用*来获取切片; 简易...
    99+
    2023-05-16
    go语言 []*int go语言 *[]int go语言 []*int *[]int
  • Go语言中map集合的具体使用
    目录1-1 定义1-2 map遍历1-3 map集合删除1-4 map是引用类型Go 语言提供了内置类型 map集合,它将一个值与一个键关联起来,可以使用相应的键检索值。 map是一...
    99+
    2023-02-17
    Go语言map集合 Go语言map
  • 怎么使用Golang语言实现Session
    这篇文章主要介绍了怎么使用Golang语言实现Session的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Golang语言实现Session文章都会有所收获,下面我们一起来看看吧。一、Session基本...
    99+
    2023-07-05
  • R语言gsub替换字符工具的具体使用
    gsub()可以用于字段的删减、增补、替换和切割,可以处理一个字段也可以处理由字段组成的向量。 具体的使用方法为:gsub("目标字符", "替换字符", 对象) 在gsub函数中,...
    99+
    2024-04-02
  • Go语言接口的嵌套的具体使用
    目录系统包中的接口嵌套组合在代码中使用接口嵌套组合在Go语言中,不仅结构体与结构体之间可以嵌套,接口与接口间也可以通过嵌套创造出新的接口。 一个接口可以包含一个或多个其他的接口,这相...
    99+
    2023-05-16
    Go语言接口嵌套 Go 接口嵌套组合
  • golang语言实现
    Golang语言实现:在技术革新中的应用随着互联网和数字化技术的飞速发展,软件工程领域的实现方式也在不断地发生改变。今天,许多软件工程师们开始使用Golang语言来开发高性能和可靠性的软件。本文将介绍Golang语言的特点和应用案例,探讨它...
    99+
    2023-05-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作