我的编程空间,编程开发者的网络收藏夹
学习永远不晚

golang下grpc框架怎么使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

golang下grpc框架怎么使用

今天小编给大家分享一下golang下grpc框架怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1. 什么是grpc和protobuf

1.1 grpc

gRPC是一个高性能、开源和通用的RPC框架,面向移动和HTTP/2设计。

目前提供C、Java和Go语言版本,分别是:

grpc,grpc-java,grpc-go.其中C版本支持C,

C++,Node.js,Python,Ruby,Objective-C,PHP和C#支持.

grpc遵循HTTP/2协议,是一个二进制协议

grpc与http一样,底层都是tcp连接,遵循socket套接字

RPC是指远程过程调用,两台服务器A,B。A(客户端)调用B(服务端)上的方法,由于不在同一个内存空间,不能直接调用,需要通过网络调用。

golang下grpc框架怎么使用

1.2 protobuf

Protocol Buffer是一种协议。
Protocol Buffer 其实 是 Google出品的一种轻量 & 高效的结构化数据存储格式,性能比Json、XML真的强2-100倍!

protobuf经历了protobuf2和protobuf3,pb3比pb2简化了很多,目前主流的版本是pb3

protobuf优点:

性能好:
压缩性能;
序列化和发序列化快,比Json、XML强2-100倍;
传输速度快。

便捷性好:
使用简单,自动生成序列化和反序列化代码;
维护成本低,只维护proto文件
向后兼容,不必破坏旧格式
加密性好

跨语言,跨平台,支持各种语言

protobuf缺点:

通用性差,json可以任何语言都支持,但是protobuf需要专门的解析库

自解释性差,只有通过proto文件才能了解数据结构

2.go下grpc

2.1官网下载protobuf工具

官网:https://github.com/protocolbuffers/protobuf/releases

golang下grpc框架怎么使用

2.2 下载go的依赖包

go get github.com/golang/protobuf/protoc-gen-go

2.3 编写proto文件

option go_package = "./;proto";

解释:

./;:生成文件的路径

proto:生成文件的包名

hello.proto

syntax = "proto3";package services;option go_package = "./;proto";service Greeter {    rpc SayHello (HelloRequest) returns (HelloReply);}message HelloRequest {    string name = 1;}message HelloReply {    string message = 1;}

2.4 生成hello.pb.proto文件

cd到proto目录下命令:protoc -I . hello.proto   --go_out=plugins=grpc:.命令解释:protoc -I .:在当前路径下寻找hello.proto文件--go_out=plugins=grpc:.  :生成go语言的proto文件放在当前路径下

golang下grpc框架怎么使用

2.5 编写server端代码

golang下grpc框架怎么使用

package mainimport ("context""file_test/grpc_go/proto""net""google.golang.org/grpc")type Server struct {}// 业务逻辑func (s *Server) SayHello(ctx context.Context, request *proto.HelloRequest) (*proto.HelloReply, error) {res := &proto.HelloReply{Message: "hello " + request.Name,}return res, nil}// 启动rpc的server服务func start() {// 1.实例化serverg := grpc.NewServer()// 2.注册逻辑到server中proto.RegisterGreeterServer(g,&Server{})// 3.启动serverlis,err:=net.Listen("tcp","127.0.0.1:8081")if err !=nil{panic("监听错误:"+err.Error())}err = g.Serve(lis)if err !=nil{panic("启动错误:"+err.Error())}}func main() {start()}

2.6 编写client端代码

package mainimport ("context""file_test/grpc_go/proto""fmt""google.golang.org/grpc")// rpc调用func clientRpc(body map[string]string) (res *proto.HelloReply, err error) {name := body["name"]conn, err := grpc.Dial("127.0.0.1:8081", grpc.WithInsecure())if err != nil {return nil,err}defer conn.Close()rpc := proto.NewGreeterClient(conn)response, err := rpc.SayHello(context.Background(), &proto.HelloRequest{Name: name})if err != nil {return nil,err}return response,nil}// 业务代码func start() {body := make(map[string]string)body["name"] = "jeff"response,err := clientRpc(body)if err!=nil{fmt.Println("rpc调用失败:",err)return}fmt.Println(response.Message)}func main() {start()}//结果:hello jeff

2.7 python和go相互调用实践(跨语言调用)

proto文件共用。

开启python的server端,go的client端测试。

开启go的server端,python的clinet端测试。

以上就是“golang下grpc框架怎么使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

golang下grpc框架怎么使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

golang下grpc框架怎么使用

今天小编给大家分享一下golang下grpc框架怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 什么是grpc和
2023-06-30

golang框架哪个最适合使用gRPC进行RPC通信?

grpc-go 是 go 语言中使用 grpc 进行 rpc 通信的最佳框架,因为它提供了对 grpc api 的直接访问以及对 protobuf 协议的自动代码生成。Go 框架比较:gRPC RPC 通信gRPC(gRPC Remote
golang框架哪个最适合使用gRPC进行RPC通信?
2024-05-24

Golang中tinyrpc框架怎么使用

本篇内容介绍了“Golang中tinyrpc框架怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!tinyrpc功能tinyrpc基于T
2023-07-05

golang websocket框架怎么用

使用Golang编写WebSocket应用程序可以使用一些流行的框架,例如Gorilla WebSocket或Melody。下面是使用Gorilla WebSocket框架的简单示例:首先,确保你已经安装了Golang,并且已经设置好了工作
2023-10-27

golang任务调度框架怎么使用

在Go语言中,可以使用多种任务调度框架来进行任务的管理和调度,例如:1. Gin: Gin是一个高性能的Go语言Web框架,它支持路由和中间件,可以用于创建RESTful API。可以使用Gin框架来创建定时任务的API接口,并使用cron
2023-09-13

golang人工智能框架怎么使用

在Golang中使用人工智能框架需要以下步骤:1. 安装相应的人工智能框架:比如TensorFlow、PyTorch等。可以使用go get命令从GitHub上下载并安装框架的Go绑定库。2. 导入所需的包:根据框架的要求,导入相应的包,比
2023-10-18

如何使用golang框架?

go 框架(例如 gin)提供了构建高性能 web 应用程序的基础。在本指南中,您将学习如何:1. 选择 gin 等 go 框架;2. 安装 gin 并创建项目;3. 设置路由处理请求;4. 使用 gin 处理 get 请求并返回 json
如何使用golang框架?
2024-05-23

django 使用框架下auth.mod

需要改动三个地方:1.models.py   创建模型User,并继承原模型类AbstraUser(在此处我增加了一个新的字段手机号)from django.db import models# Create your models here
2023-01-31

golang tcp框架怎么实现

要实现一个基于TCP的框架,可以参考以下步骤:导入所需的包: net、io、bufio、sync等。创建一个TCP服务器的结构体,包括监听地址、端口、处理函数等字段。实现TCP服务器的初始化方法,用于设置监听地址和端口。实现TCP服务器的启
golang tcp框架怎么实现
2024-02-29

aforge.net框架怎么使用

要使用AForge.NET框架,你需要进行以下步骤:1. 下载AForge.NET框架:你可以从官方下载AForge.NET框架的最新版本。2. 引用AForge.NET库:在你的项目中,右键点击项目,选择“添加引用”,然后浏览到AForg
aforge.net框架怎么使用
2024-02-29

怎么安装golang revel框架

这篇文章主要介绍“怎么安装golang revel框架”,在日常操作中,相信很多人在怎么安装golang revel框架问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么安装golang revel框架”的疑
2023-07-05

Vue框架怎么使用

本文小编为大家详细介绍“Vue框架怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue框架怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Vue 的使用步骤1.创建一个标签,用于数据的填充2.引入
2023-06-27

怎么使用pytorch框架

这篇文章主要讲解了“怎么使用pytorch框架”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用pytorch框架”吧!  中文新闻情感分类 Bert-Pytorch-transform
2023-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录