iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >golang下grpc框架的使用编写示例
  • 210
分享到

golang下grpc框架的使用编写示例

2024-04-02 19:04:59 210人浏览 薄情痞子
摘要

目录1. 什么是grpc和protobuf1.1 grpc1.2 protobuf2.Go下grpc2.1官网下载protobuf工具2.2 下载go的依赖包2.3 编写proto文

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,PHPC#支持.

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

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

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

1.2 protobuf

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

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

protobuf优点:

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

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

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

protobuf缺点:

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

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

2.go下grpc

2.1官网下载protobuf工具

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

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文件放在当前路径下

2.5 编写server端代码

package main
import (
	"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.实例化server
	g := grpc.NewServer()
	// 2.注册逻辑到server中
	proto.ReGISterGreeterServer(g,&Server{})
	// 3.启动server
	lis,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 main
import (
	"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文件共用。

1.开启python的server端,go的client端测试

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

以上就是golang下grpc框架的使用编写示例的详细内容,更多关于golang下grpc框架使用的资料请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: golang下grpc框架的使用编写示例

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

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

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • golang下grpc框架的使用编写示例
    目录1. 什么是grpc和protobuf1.1 grpc1.2 protobuf2.go下grpc2.1官网下载protobuf工具2.2 下载go的依赖包2.3 编写proto文...
    99+
    2024-04-02
  • golang下grpc框架怎么使用
    今天小编给大家分享一下golang下grpc框架怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 什么是grpc和...
    99+
    2023-06-30
  • python下grpc与protobuf的编写使用示例
    目录1. python下protobuf使用1.1 安装protobuf1.2 protobuf3定义格式1.3 生成proto的python文件1.4 对比一下protobuf生成...
    99+
    2024-04-02
  • swoole框架的使用示例
    这篇文章将为大家详细讲解有关swoole框架的使用示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。正文swoole有两个部分。 一个是PHP扩展,用C开发的,这是核心。 另一个是框架,像yii、TP、L...
    99+
    2023-06-14
  • Golang Gin框架实现文件下载功能的示例代码怎么写
    这期内容当中小编将会给大家带来有关Golang Gin框架实现文件下载功能的示例代码怎么写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Layui框架实现文件上传基本的思路就是随便创建一个元素,...
    99+
    2023-06-22
  • 用 Golang 编写计算方差的示例
    在Go语言中,计算一组数据的方差是一种常见的数学计算操作。方差用于衡量数据集中值的分散程度,是统计学中的重要概念之一。下面我们将通过一个示例来演示如何使用Go语言实现方差的计算。 首先...
    99+
    2024-02-25
    golang 示例 方差计算 go语言
  • 使用flexible.js框架的示例分析
    这篇文章主要介绍使用flexible.js框架的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!基本概念1、视窗viewport可能写过移动端的朋友就知道viewport是什么...
    99+
    2024-04-02
  • Android路由框架ARouter的使用示例
    目录一、添加依赖和初始化框架 1、添加依赖 1.1、java版本的依赖1.2、kotlin版本的依赖2、初始化SDK二、ARouter的简单使用 1、界面跳转 1.1、Activit...
    99+
    2024-04-02
  • SSM框架下各层的示例分析
    这篇文章给大家分享的是有关SSM框架下各层的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SSM框架SSM框架是spring MVC ,Spring和Mybatis框架的整合,是标准的MVC模式,将整个系...
    99+
    2023-06-29
  • Python爬虫框架scrapy的使用示例
    这篇文章主要介绍了Python爬虫框架scrapy的使用示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效的工...
    99+
    2023-06-14
  • 使用c# 怎么编写一个ORM框架
    今天就跟大家聊聊有关使用c# 怎么编写一个ORM框架,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. ORMORM全称 Object Relational Mapping,翻译过来...
    99+
    2023-06-14
  • Python pluggy框架使用示例代码
    目录实践环境例1 注册类函数为插件函数例2 注册模块函数为插件函数myhookspec.pymyhookimpl.pyother.pyexample.py例3:自定义插件类实现hoo...
    99+
    2024-04-02
  • Java NIO框架Netty简单使用的示例
    之前写了一篇文章:Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码),介绍了如何使用Java原生IO支持进行网络编程,本文介绍一种更为简单的方式,即Java NIO框架。Netty是业界最流行的NIO框架之一,具有良好的健...
    99+
    2023-05-30
  • Golang爬虫框架colly的使用
    目录项目特性安装colly实例colly 的配置colly页面爬取和解析colly框架重构爬虫Golang爬虫框架 colly 简介 colly是一个采用Go语言编写的Web爬虫框架...
    99+
    2024-04-02
  • PythonScrapy爬虫框架使用示例浅析
    目录示例具体说明Scrapy框架爬虫使用代理ip示例 下面是一个简单的Python爬虫Scrapy框架代码示例,该代码可以抓取百度搜索结果页面中指定关键字的链接和标题等信息: imp...
    99+
    2023-05-20
    Python Scrapy Python Scrapy爬虫框架
  • 下拉框select样式改写的示例分析
    小编给大家分享一下下拉框select样式改写的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码如下:<style...
    99+
    2024-04-02
  • 用 Python 框架编写高效的 HTTP API
    Python 是一门功能强大的编程语言,被广泛应用于 Web 开发、数据分析、人工智能等领域。在 Web 开发领域中,Python 有许多优秀的框架可供选择,其中 Flask 和 Django 是最受欢迎的两个框架。在本文中,我们将介绍如何...
    99+
    2023-10-06
    框架 api http
  • 使用Golang进行并发编程的示例
    这篇文章给大家分享的是有关使用Golang进行并发编程的示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Golang最擅长的就是并发编程,使用Golang可以很方便的进行并发编程。先看一段普通的代码packag...
    99+
    2023-06-14
  • golang gorm框架数据库的连接操作示例
    目录1. 连接数据库1.1 MySQL1.2 PostgreSQL1.3 Sqlite31.4 不支持的数据库2. 迁移2.1. 自动迁移2.2. 检查表是否存在2.3. 创建表2....
    99+
    2024-04-02
  • 手写java性能测试框架的实现示例
    目录引言代码分享基础类实现数据库的实现concurrent类引言 之前写过一个性能测试框架,只是针对单一的HTTP接口的测试,对于业务接口和非HTTP接口还无非适配,刚好前端时间工作...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作