前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >grpc调用protobuf生成的文件

grpc调用protobuf生成的文件

作者头像
码缘
发布于 2021-05-07 08:07:20
发布于 2021-05-07 08:07:20
62700
代码可运行
举报
文章被收录于专栏:PHP修行之路PHP修行之路
运行总次数:0
代码可运行

记录下protoc生成go文件后,使用grpc调用的过程

  • grpc安装

go get -u -v google.golang.org/grpc

  • server.go
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import (
	"context"
	"fmt"
	"google.golang.org/grpc"
	"net"
	"rpc/student"
	"strconv"
)

type Stu struct {

}

func (s Stu) GetInfo (ctx context.Context, req *student.StuReq) (*student.Student, error){

	student := student.Student{
		Score: 10,
		P:     &student.Person{
			Name: "hello"+ strconv.Itoa(int(req.Id)),
			Sex:  0,
		},
		Like:  []string{
			"football",
			"sport",
		},
	}

	return &student,nil
}

func main(){

	grpcServer := grpc.NewServer()

	student.RegisterStuServiceServer(grpcServer,new(Stu))

	listen,err := net.Listen("tcp","127.0.0.1:8082")
	if err != nil{
		fmt.Println(err)
	}
	defer listen.Close()

	grpcServer.Serve(listen)

}
  • client.go
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import (
	"context"
	"fmt"
	"google.golang.org/grpc"
	"rpc/student"
)

func main(){

	client,err := grpc.Dial("127.0.0.1:8082",grpc.WithInsecure())
	if err != nil{
		fmt.Println(err)
	}
	defer client.Close()

	stuClient := student.NewStuServiceClient(client)

	stuReq := student.StuReq{Id:1}

	stu,err := stuClient.GetInfo(context.TODO(),&stuReq)
	if err != nil{
		fmt.Println(err)
	}

	fmt.Println(stu)
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-05-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Go语言,gRPC 的使用了解--上
$ go get -u google.golang.org/grpc@v1.29.1
微客鸟窝
2021/11/19
9260
Go语言,gRPC 的使用了解--上
golang源码分析:grpc 链接池(1)
上面几个问题,看着都觉得这么简单还用问?但是仔细一想,内心还是有些不太确定。因为没有分析过源码!下面我们带着问题来进行研究。我们生成一段代码,启动一个server
golangLeetcode
2023/03/01
1.1K0
golang源码分析:grpc 链接池(1)
Go语言,gRPC 的使用了解--下
客户端流式 RPC,单向流,客户端通过流式发起多次 RPC 请求到服务端,服务端发起一次响应给客户端
微客鸟窝
2021/11/19
5690
Go微服务(三)——gRPC详细入门
这里会联合protobuf语法以及protobuf如何去定义rpc服务,前面我们只生成了结构体,现在我们要让他为我们同时把接口生成,有了响应的接口,我们就再也不用去手写接口了。
传说之下的花儿
2023/04/16
4.5K0
Go微服务(三)——gRPC详细入门
gRPC认证的多种方式实践
gRPC安全认证介绍 gRPC被设计成可以利用插件的形式支持多种授权认证机制,你可以采用自己喜欢的,简单的,认为方便的一种方式,选择权在用户手里 支持的授权认证机制如下 SSL/TLS认证 自定义Token认证 SSL/TLS的概念可以参考下面的文章 https://www.techug.com/post/https-ssl-tls.html SSL/TLS认证方式 首先通过openssl生成证书和私钥,命令如下 //生成私钥 openssl genrsa -out server.key 2048 //生
阿伟
2019/09/10
1.5K1
go实现grpc通信
本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn
仙士可
2022/04/25
6360
go实现grpc通信
测试小姐姐问我 gRPC 怎么用,我直接把这篇文章甩给了她
上篇文章 gRPC,爆赞 直接爆了,内容主要包括:简单的 gRPC 服务,流处理模式,验证器,Token 认证和证书认证。
AlwaysBeta
2021/10/25
1.2K0
探秘Proto文件:解析定义与参数揭秘
Proto文件是Google开发的一种用于定义数据结构和服务接口的语言,通常用于在不同平台之间进行数据交换和通信。
天天Lotay
2023/10/15
2.2K0
golang源码分析:grpc 链接池(4)自定义resolver 、balancer和picker
在分析完源码后golang源码分析:grpc 链接池(3)resolver 、balancer和picker,我们尝试自定义实现相应的插件。grpc 通过服务发现或者直连形式获取到 gRPC server 的实例的 endpoints,然后通知负载均衡器进行 SubConn 更新,对于新加入的 endpoint 进行实例创建,移出废弃的 endpoint, 最后通过状态更新将状态为 Idle 的 SubConn 进行管理,gRPC 在调用 Invoke时,则会通过负载均衡器中的 Picker 去按照某一个负载均衡算法选择一个 SubConn 创建链接,如果创建成功则不再进行其他 SubConn 的尝试,否则会按照一定的退避算法进行重试,直到退避失败或者创建链接成功为止。上述三个组件的功能分别如下:
golangLeetcode
2023/03/01
1K0
golang源码分析:grpc 链接池(4)自定义resolver 、balancer和picker
Golang RPC 之 gRPC
gRPC 简介: gRPC 是一款高性能、开源的 RPC 框架,产自 Google,基于 ProtoBuf 序列化协议进行开发,支持多种语言(Golang、Python、Java等),本篇只介绍 Golang 的 gRPC 使用。因为 gRPC 对 HTTP/2 协议的支持使其在 Android、IOS 等客户端后端服务的开发领域具有良好的前景。gRPC 提供了一种简单的方法来定义服务,同时客户端可以充分利用 HTTP/2 stream 的特性,从而有助于节省带宽、降低 TCP 的连接次数、节省CPU的使用
李海彬
2018/03/28
1.7K0
Golang RPC 之 gRPC
grpc-go之基本使用(一)
gRPC 是一个高性能、通用的开源 RPC 框架,其由 Google 主要面向移动应用开发并基于 HTTP/2 协议标准而设计,基于 ProtoBuf(Protocol Buffers) 序列化协议开发,且支持众多开发语言。
Johns
2022/09/26
1.5K0
GPC通信最简单的demo
https://chai2010.cn/advanced-go-programming-book/ch4-rpc/ch4-01-rpc-intro.html
爽朗地狮子
2022/10/20
6800
gRPC 使用 protobuf 构建微服务
以前使用 Laravel 做 web 项目时,是根据 MVC 去划分目录结构的,即 Controller 层处理业务逻辑,Model 层处理数据库的 CURD,View 层处理数据渲染与页面交互。以及 MVP、MVVM 都是将整个项目的代码是集中在一个代码库中,进行业务处理。这种单一聚合代码的方式在前期实现业务的速度很快,但在后期会暴露很多问题:
aoho求索
2019/05/17
2.2K0
gRPC 使用 protobuf 构建微服务
gRPC,爆赞
gRPC 这项技术真是太棒了,接口约束严格,性能还高,在 k8s 和很多微服务框架中都有应用。
AlwaysBeta
2021/10/12
1.2K0
实践gRPC之GoLang入门HelloWord
这篇文章里我们要实现一个基于GoLang编程语言的gRPC的客户端与服务端通信的HelloWorld案例 编写hello_world.proto文件,如下代码: syntax proto3 package proto //接口请求入参 message HelloRequest{ string request = 1; } //接口返回出参 message HelloResponse{ string response = 1; } //定义接口 service HelloService{
阿伟
2019/08/26
6580
实践gRPC之GoLang入门HelloWord
go server和client通过grpc建立连接
server端和client端分布在两个不同的集群里,可以通过下发mq消息,或者grpc连接传递消息,这里介绍通过grpc建立连接,第一步是创建proto文件,要传递的方法和变量都在这里定义
IT工作者
2022/08/06
1.2K0
Grpc介绍 — ProToBuf基本使用
RPC(Remote Procedure Call)远程过程调用,关注笔者的同学应该知道之前笔者出过关于Thrift对应的问题,这次主要来说的是Google开源的Grpc,和Thrift有很大的区别Grpc是基于HTTP2.0并且依赖protobuf,为什么又推出关于grpc的文章呢?请大家继续往下看。
喵了个咪233
2019/05/26
1.6K0
go简单使用grpc
grpc github:https://github.com/grpc/grpc-go (opens new window)
编程黑洞
2023/03/06
4550
​来瞧一瞧 gRPC的拦截器
可是朋友们,有没有想过,要是每一个客户端与服务端通信的接口都进行一次认证,那么这是否会非常多余呢,且每一个接口的实现都要做一次认证,这真的太难受了
阿兵云原生
2023/02/16
6970
gRPC学习笔记2 - 示例
两个微服务之间通过基于 HTTP 2.0 二进制数据帧通信,使用 gRPC 内置的 protobuf 协议,其 DSL 语法 可清晰定义服务间通信的数据结构
张云飞Vir
2020/04/09
6650
相关推荐
Go语言,gRPC 的使用了解--上
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验