grpc golang安装

grpc (google remote procedure call) 是一种高性能、跨语言的远程过程调用框架,它通过 protocol buffers(protobuf)定义服务接口,并支持众多编程语言。grpc 在分布式系统的开发中广泛应用,其高效的序列化和反序列化机制、基于 http/2 的流控制和分块传输等一系列特性使其在网络传输方面有着明显的优势。

本文主要介绍在 Golang 中如何安装 gRPC,并编写一个简单的客户端和服务端示例代码。

1. 安装 gRPC

在安装 gRPC 之前,需要先安装 Protocol Buffers 3。Protocol Buffers 是 gRPC 自动生成代码所需的工具,同时也是一个序列化数据的工具。

首先,下载 Protocol Buffers 3 的安装包,以 Mac OS 为例:

$ curl -OL https://github.com/google/protobuf/releases/download/v3.9.1/protobuf-all-3.9.1.zip$ unzip protobuf-all-3.9.1.zip$ cd protobuf-3.9.1

登录后复制

执行 configure、make、make install 即可安装 Protocol Buffers:

立即学习“go语言免费学习笔记(深入)”;

$ ./configure$ make$ sudo make install

登录后复制

安装完 Protocol Buffers 后,使用以下命令安装 Go 的 gRPC 和相关工具:

$ go get -u google.golang.org/grpc$ go get -u github.com/golang/protobuf/protoc-gen-go

登录后复制

2. 编写 ProtoBuf 文件

ProtoBuf 文件用于定义服务接口和数据结构,并通过 gRPC 工具自动生成相应的代码(包括客户端和服务端代码)。

我们在此编写一个简单的示例,定义一个计算器服务接口,支持加法运算:

syntax = "proto3";package calculator;service Calculator {  rpc Add(AddRequest) returns (AddResponse) {}}message AddRequest {  int32 left = 1;  int32 right = 2;}message AddResponse {  int32 sum = 1;}

登录后复制

在此示例中,定义一个名为 Calculator 的服务接口,包含一个 Add 方法,该方法接收一个 AddRequest 参数并返回一个 AddResponse 参数。

AddRequest 和 AddResponse 都是消息结构,分别包含两个 int32 类型的字段,表示加法的两个操作数和结果。

3. 生成代码

在编写 ProtoBuf 文件后,使用以下命令生成客户端和服务端代码:

$ protoc --go_out=plugins=grpc:. calculator.proto

登录后复制

此命令生成一个名为 calculator.pb.go 的 Go 文件,其中定义了计算器服务的客户端和服务端代码。

4. 编写客户端和服务端代码

在生成客户端和服务端代码后,就可以开始编写实际的客户端和服务端了。

首先是服务端代码,我们创建一个名为 server.go 的文件,实现 Calculator 接口:

package mainimport (    "context"    "log"    "net"    pb "calculator/calculator"    "google.golang.org/grpc")type server struct{}func (s *server) Add(ctx context.Context, in *pb.AddRequest) (*pb.AddResponse, error) {    sum := in.Left + in.Right    return &pb.AddResponse{Sum: sum}, nil}const (    port = ":50051")func main() {    lis, err := net.Listen("tcp", port)    if err != nil {        log.Fatalf("failed to listen: %v", err)    }    s := grpc.NewServer()    pb.RegisterCalculatorServer(s, &server{})    if err := s.Serve(lis); err != nil {        log.Fatalf("failed to serve: %v", err)    }}

登录后复制

在此示例中,我们定义了一个名为 server 的结构体,实现了 Calculator 接口中的 Add 方法。Add 方法接收一个 AddRequest 参数,并计算两个操作数之和,返回一个 AddResponse 参数。

最后,通过 gRPC 框架提供的 RegisterCalculatorServer 方法将服务注册到 gRPC 服务器中,并启动 gRPC 服务器。

接下来编写客户端代码,我们创建一个名为 client.go 的文件,实现一个简单的通过计算器服务进行加法运算的例子:

package mainimport (    "context"    "log"    "os"    "strconv"    pb "calculator/calculator"    "google.golang.org/grpc")const (    address     = "localhost:50051"    defaultName = "world")func main() {    // Set up a connection to the server.    conn, err := grpc.Dial(address, grpc.WithInsecure())    if err != nil {        log.Fatalf("did not connect: %v", err)    }    defer conn.Close()    c := pb.NewCalculatorClient(conn)    // Contact the server and print out its response.    left, err := strconv.Atoi(os.Args[1])    if err != nil {        log.Fatalf("could not parse left operand: %v", err)    }    right, err := strconv.Atoi(os.Args[2])    if err != nil {        log.Fatalf("could not parse right operand: %v", err)    }    r, err := c.Add(context.Background(), &pb.AddRequest{Left: int32(left), Right: int32(right)})    if err != nil {        log.Fatalf("could not add: %v", err)    }    log.Printf("Sum: %d", r.Sum)}

登录后复制

在此示例中,我们创建了一个名为 client 的客户端对象,并通过 grpc.Dial 方法连接到服务器。然后,我们从命令行参数中解析出加法的两个操作数,并调用 Add 方法发送请求,得到服务器返回的结果并输出。

5. 运行示例

在两个文件都编写完毕后,使用以下命令编译并运行两个程序:

$ go build server.go$ go build client.go$ ./server

登录后复制

然后在另一个终端中执行以下命令运行客户端程序:

$ ./client 1 2

登录后复制

运行结果会输出计算结果 3。

以上就是 gRPC 在 Golang 中的安装和使用,通过 gRPC 编写高效的分布式系统将变得十分简单。

以上就是grpc golang安装的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2391811.html

(0)
上一篇 2025年3月2日 11:00:02
下一篇 2025年3月1日 23:47:00

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • golang修改gopath

    golang是一门快速发展的编程语言,被广泛应用于云计算、网络编程、容器化等领域。在使用golang开发项目时,可能会遇到需要修改gopath的情况。本文将介绍golang如何修改gopath,以及常见的gopath配置方法。 一、GOPA…

    编程技术 2025年3月2日
    000
  • Golang函数的无锁编程和锁编程的比较和效率分析

    近年来,golang正变得越来越流行,成为了很多程序员使用的编程语言之一。在golang中,涉及到并发编程的时候,我们不可避免地会面临锁和无锁两种编程模式。那么,它们各自的优劣和适用场景是什么呢? 一、无锁编程的定义和优劣 无锁编程是指在多…

    编程技术 2025年3月2日
    200
  • golang 错误捕获

    在golang中,错误是不可避免的。无论应用程序多小或多大,都会遇到错误。因此,了解如何正确地捕获和处理错误是非常重要的。本文将探讨golang中的错误处理机制和一些最佳实践。 错误类型 在golang中,错误是一个实现了error接口的类…

    编程技术 2025年3月2日
    200
  • golang改rust

    随着计算机科学的发展,编程语言也在不断的发展和演进。在这其中,golang和rust是两种十分具有代表性的编程语言。一方面,golang作为一种高效、易学易用的语言,近年来在开发web服务和云计算领域得到了广泛的应用。另一方面,rust是一…

    编程技术 2025年3月2日
    200
  • 为什么golang

    作为一门新兴的编程语言,golang正在迅速地被广泛应用于各种领域。在本文中,我们将深入分析为什么golang被广泛采用,并且探索它的优点和缺点。 一、Golang概述 Golang是一门由Google公司开发的编程语言,首次公开亮相是在2…

    编程技术 2025年3月2日
    200
  • golang linux安装

    golang是一种由谷歌开发的编程语言,具有快速编译、高效、并发性强等特点,在开发web应用、服务器端应用、网络编程、系统开发等领域都有广泛的应用。本文将介绍如何在linux系统上进行golang的安装和配置。 第一步:下载Golang 在…

    编程技术 2025年3月2日
    200
  • golang 登录请求

    随着互联网的不断发展,越来越多的服务需要用户登录才能使用,因此登录功能成为了每个web应用必须具备的功能之一。使用golang开发登录功能,可以有效提高运行效率和可维护性。 Golang(也被称为Go)是由谷歌开发的一种开源编程语言,自推出…

    编程技术 2025年3月2日
    200
  • 域名转发golang

    一、前言 在互联网时代,域名是网络中的重要资源。通过域名,可以快速地找到需要的网络资源,访问起来也更加便捷。但是,当我们需要把一个域名指向到另外一个地址时,就需要用到域名转发技术。今天我们将介绍如何使用golang实现域名转发。 二、什么是…

    编程技术 2025年3月2日
    200
  • golang 安装google

    go语言(golang)是一种编程语言,由google开发和推广。它具有简单易学、高效、安全等特点,在近年来已经得到了广泛应用和越来越多的关注,尤其是在web应用程序开发领域。 为了使用Go语言进行编程,您需要先安装Golang的运行环境,…

    编程技术 2025年3月2日
    200
  • golang 进制转化

    golang 是一门非常优秀的编程语言,其强大的功能和简洁的语法使得它成为了越来越多开发者的选择。在 golang 中,进制转化是一个非常基础、常用的操作,下面我们来一起了解一下 golang 中的进制转换。 在 golang 中,常用的进…

    编程技术 2025年3月2日
    200

发表回复

登录后才能评论