【gRPC】go语言实现gRPC(示例实践演示)

这篇具有很好参考价值的文章主要介绍了【gRPC】go语言实现gRPC(示例实践演示)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、获取gRPC和Protobuf依赖

2、安装protobuf编译器

3、安装两个插件

 4、编译proto文件

5、服务端

6、客户端

7、结果展示


1、获取gRPC和Protobuf依赖

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

goLand配置

【gRPC】go语言实现gRPC(示例实践演示)

【gRPC】go语言实现gRPC(示例实践演示)

2、安装protobuf编译器

Release Protocol Buffers v21.6 · protocolbuffers/protobuf · GitHubProtocol Buffers - Google's data interchange format - Release Protocol Buffers v21.6 · protocolbuffers/protobufhttps://github.com/protocolbuffers/protobuf/releases/tag/v21.6下载

【gRPC】go语言实现gRPC(示例实践演示)

 创建文件夹

sudo mkdir /usr/local/proto
unzip protoc-21.6-linux-x86_64.zip

【gRPC】go语言实现gRPC(示例实践演示)

配置环境变量

sudo vi /etc/profile
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:/usr/local/proto/bin
export PATH=$PATH:/usr/local/proto/include
export PATH=$PATH:/home/cjs/go/bin

再执行下面命令,然后重启

source /etc/profile

重启之后,检查时候成功

protoc --version

【gRPC】go语言实现gRPC(示例实践演示)

3、安装两个插件

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

【gRPC】go语言实现gRPC(示例实践演示)

 4、编译proto文件

目录结构:

【gRPC】go语言实现gRPC(示例实践演示)

 proto文件

syntax = "proto3"; // 指定proto版本
package hello;     // 指定默认包名

// 指定golang包名
option go_package = "./hello";

// 定义Hello服务
service Hello {
  // 定义SayHello方法
  rpc SayHello(HelloRequest) returns (HelloResponse) {}
}

// HelloRequest 请求结构
message HelloRequest {
  string name = 1;
}

// HelloResponse 响应结构
message HelloResponse {
  string message = 1;
}

进入下面文件夹下:

【gRPC】go语言实现gRPC(示例实践演示)

 然后执行

protoc --go_out=./ --go_opt=paths=source_relative --go-grpc_out=./ --go-grpc_opt=paths=source_relative hello.proto

生成

【gRPC】go语言实现gRPC(示例实践演示)

5、服务端

package main

import (
	"fmt"
	"net"

	pb "awesomeProject/proto/hello" // 引入编译生成的包
	"golang.org/x/net/context"
	"google.golang.org/grpc"
	"google.golang.org/grpc/grpclog"
)

const (
	// Address gRPC服务地址
	Address = "127.0.0.1:50052"
)

// 定义helloService并实现约定的接口
type HelloService struct {
	pb.UnimplementedHelloServer
}

// SayHello 实现Hello服务接口
func (h HelloService) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloResponse, error) {
	resp := new(pb.HelloResponse)
	resp.Message = fmt.Sprintf("Hello %s.", in.Name)

	fmt.Println(in.Name)

	return resp, nil
}

func main() {
	listen, err := net.Listen("tcp", Address)
	if err != nil {
		grpclog.Fatalf("Failed to listen: %v", err)
	}

	// 实例化grpc Server
	s := grpc.NewServer()

	// 注册HelloService
	pb.RegisterHelloServer(s, &HelloService{})

	grpclog.Info("Listen on " + Address)

	str := s.Serve(listen)
	fmt.Println(str)

}

注意:根据自己工程包结构实现

【gRPC】go语言实现gRPC(示例实践演示)

6、客户端

package main

import (
	pb "awesomeProject/proto/hello" // 引入proto包
	"fmt"
	"golang.org/x/net/context"
	"google.golang.org/grpc"
	"google.golang.org/grpc/credentials/insecure"
	"google.golang.org/grpc/grpclog"
)

const (
	// Address gRPC服务地址
	Address = "127.0.0.1:50052"
)

func main() {
	// 连接
	conn, err := grpc.Dial(Address, grpc.WithTransportCredentials(insecure.NewCredentials()))
	if err != nil {
		grpclog.Fatalln(err)
	}
	fmt.Println("连接成功")
	defer conn.Close()

	// 初始化客户端
	c := pb.NewHelloClient(conn)

	// 调用方法
	req := &pb.HelloRequest{Name: "gRPC"}
	res, err := c.SayHello(context.Background(), req)

	if err != nil {
		grpclog.Fatalln(err)
	}

	fmt.Println(res.Message)
	grpclog.Info(res.Message)
}

7、结果展示

【gRPC】go语言实现gRPC(示例实践演示)文章来源地址https://www.toymoban.com/news/detail-407796.html

到了这里,关于【gRPC】go语言实现gRPC(示例实践演示)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go 语言实现冒泡排序算法的简单示例

    以下是使用 Go 语言实现冒泡排序算法的简单示例: 在这个例子中, bubbleSort 函数接收一个整数切片,对切片中的元素进行冒泡排序。在 main 函数中,我们定义了一个示例数组,调用 bubbleSort 函数对其进行排序,并输出结果。 注意,冒泡排序算法的时间复杂度为 O(n^2),因此对

    2024年01月23日
    浏览(46)
  • go语言 grpc 拦截器

    gRPC拦截器(interceptor)是一种函数,它可以在gRPC调用之前和之后执行一些逻辑,例如认证、授权、日志记录、监控和统计等。拦截器函数是gRPC中非常重要的概念,它允许我们在服务端和客户端添加自定义逻辑,以满足业务需求和运维需求。 在gRPC中,拦截器函数通常通过实现

    2024年02月04日
    浏览(37)
  • Go 语言实现归并排序算法的简单示例(附上源码)

    以下是使用 Go 语言实现归并排序算法的简单示例: 在这个例子中, mergeSort 函数接收一个整数切片,使用递归的方式进行归并排序。 merge 函数用于合并两个已排序的切片。在 main 函数中,我们定义了一个示例数组,调用 mergeSort 函数对其进行排序,并输出结果。 归并排序算

    2024年01月21日
    浏览(45)
  • go语言面试题:grpc和http的区别

    作者简介 :一名后端开发人员,每天分享后端开发以及人工智能相关技术,行业前沿信息,面试宝典。 座右铭 :未来是不可确定的,慢慢来是最快的。 个人主页 :极客李华-CSDN博客 合作方式 :私聊+ 这个专栏内容 :BAT等大厂常见后端java开发面试题详细讲解,更新数目10

    2024年02月12日
    浏览(31)
  • 【gRPC实现java端调用go的服务】

    在lib下面的存在一个simple.proto文件,我们使用插件protobuf-maven-plugin对其进行编译。配置如下: 利用插件进行编译 后可以获得对应的文件。 在client下创建一个grpc的包,并将以上两个文件放入。最后创建一个SimpleClient。 最后在Application中调用即可

    2024年02月04日
    浏览(56)
  • Go之流程控制大全: 细节、示例与最佳实践

    本文深入探讨Go语言中的流程控制语法,包括基本的 if-else 条件分支、 for 循环、 switch-case 多条件分支,以及与特定数据类型相关的流程控制,如 for-range 循环和 type-switch 。文章还详细描述了 goto 、 fallthrough 等跳转语句的使用方法,通过清晰的代码示例为读者提供了直观的指

    2024年02月08日
    浏览(33)
  • 2023-05-04:用go语言重写ffmpeg的scaling_video.c示例,用于实现视频缩放(Scaling)功能。

    2023-05-04:用go语言重写ffmpeg的scaling_video.c示例,用于实现视频缩放(Scaling)功能。 答案2023-05-04: 这段代码实现了使用 libswscale 库进行视频缩放的功能。下面是程序的主要流程: 1.获取命令行参数,包括输出文件名和目标图像大小。 2.解析目标图像大小,生成指定大小的输出

    2024年02月02日
    浏览(40)
  • Go gRPC etcd实现服务注册发现与负载均衡

    如果不了解go + grpc 调用方式和实现细节,可以参考上一篇文章 golang grpc配置使用实战教程 技术点 版本 描述 golang 1.19 基础版本 grpc v1.41.0 gRPC golang包 etcd server 3.5.0 注册中心 etcd client v3.5.8 客户端服务发现和负载均衡 服务注册依赖etcd的 key-value操作,key作为gRPC服务唯一标识,

    2024年02月05日
    浏览(58)
  • 2023-04-30:用go语言重写ffmpeg的resampling_audio.c示例,它实现了音频重采样的功能。

    2023-04-30:用go语言重写ffmpeg的resampling_audio.c示例,它实现了音频重采样的功能。 答案2023-04-30: resampling_audio.c 是 FFmpeg 中的一个源文件,其主要功能是实现音频重采样。 音频重采样是指将一段音频数据从一个采样率、声道数或样本格式转换为另一种采样率、声道数或样本格式

    2024年02月02日
    浏览(36)
  • Go语言精进之路目录

    目录 第一章、 Go语言基础全攻略:从入门到精通 一、介绍 01.Go 语言的前生今世 二、开发环境搭建 01.Go 语言开发环境搭建 三、初识GO语言 01.Go 多版本管理工具 02.第一个 Go 程序“hello,world“ 与 main 函数 03.Go 常用命令介绍 04.Go 项目代码布局 05.探索 GO 项目依赖包管理与Go M

    2024年02月08日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包