草庐IT

gRPC入门

全部标签

go - 如何将 row.Scan() int32 转换为 Golang gRPC protobuf Enum 字段?

//agent.protomessageAgent{Permissionpermission=1;google.protobuf.Timestampborn_time=2;messagePermission{Typetype=1;enumType{KILLNONE=0;KILLALL=1;DANCE=2;}}}然后将SQL行扫描到代理protobuf结构中://main.govaraproto.Agent........row.Scan(&a.Permission.Type,...)对于默认类型,该权限类型存储为简单的MariaDBINT()value=0。所以,我不能直接扫描它。因此

go - 使用入口部署 Rest + gRPC 服务器部署到 k8s

我使用了示例gRPCHelloWorld应用程序https://github.com/grpc/grpc-go/tree/master/examples/helloworld.本示例在本地系统运行流畅。我想使用Ingress将它部署到kubernetes。下面是我的配置文件。service.yaml-作为NodePortapiVersion:v1kind:Servicemetadata:name:grpc-scratchlabels:run:grpc-scratchannotations:service.alpha.kubernetes.io/app-protocols:'{"grpc

go - 如何在 Go 中创建一个通用的 GRPC 服务器启动函数

我正在尝试抽象GRPC服务器的启动原主函数如下:funcmain(){lis,err:=net.Listen("tcp",port)iferr!=nil{log.Fatalf("failedtolisten:%v",err)}s:=grpc.NewServer()pb.RegisterCollectionServer(s,&server.Server{})//RegisterreflectionserviceongRPCserver.reflection.Register(s)iferr:=s.Serve(lis);err!=nil{log.Fatalf("failedtoserve:

go - gRPC 到远程服务器的带宽较慢

我有一个gRPC服务,可以将文件从本地机器传输到远程服务器,我注意到一些严重的带宽问题。平均而言,它的下载速度约为1mb/s,一个连接共享多个流(通常约为8个)。服务器使用TLS加密,但这似乎不是瓶颈,因为关闭TLS对性能的影响可以忽略不计。我还尝试使用iperf3直接测试客户端和服务器之间的带宽,结果是10mb/s。Connectingtohost,port[7]local10.0.0.112port59651connectedtoport[ID]IntervalTransferBitrate[7]0.00-1.00sec1.28MBytes10.7Mbits/sec[7]1.00-

go - grpc protobuf 使用字符串创建新结构

我正在使用微框架开发我的新项目,并且我已经完成了GRPC工作。但是现在,我需要编写与前端交互的网关。实在不想写重复的代码,在pb.go文件中找了一些代码。代码定义了一些结构和初始化函数。如下所示:typeAuthLoginReqstruct{Usernamestring`protobuf:"bytes,1,opt,name=username,proto3"json:"username,omitempty"`Passwordstring`protobuf:"bytes,2,opt,name=password,proto3"json:"password,omitempty"`XXX_NoU

go - 在 Go 中关闭 grpc 服务器时如何检测错误?

我正在尝试在GogRPC客户端代码中检测gRPC服务器关闭import(pb"mysample.com/api/rpc""google.golang.org/grpc")varstreampb.SearchProductService_MarketStreamClientfor{r,err:=stream.Recv()iferr==io.EOF{log.Println("Info:serverclose")break}elseiferr!=nil{log.Println("Err:grpccode:",grpc.Code(err))iferr!=nil{log.Fatal(err)}}

google-app-engine - 有没有人能够获得Go Hello World快速入门演示,使其适用于Google App Engine托管的VM?

我正在尝试遵循here文档gcloudconfigsetprojectgcloudcomponentsupdateappgcloudcomponentsupdategae-gogoappgetgoogle.golang.org/appengine#removeexistingcontainers&imagesjusttobesuredockerrm$(dockerps-a-q)dockerrmi$(dockerimages-q)gcloudpreviewappsetup-managed-vmscd$GOPATH/src/google.golang.org/appengine/demos

c++ - C++ GRPC客户端与golang服务器连接错误

我正在尝试编写一个与C++和golang客户端通信的GRPC服务器。由于这都是我们系统内部的,因此会有一个自签名证书签署服务器证书,服务器将签署客户端证书。我能够从golang客户端连接到服务器。但是,C++客户端没有连接,我从ssl层看到了一堆错误。我在配置C++grpc客户端时做错了什么?(我的证书目前都使用2048位的RSAkey)以下是我认为等效的客户端代码(省略了错误处理):戈兰:import("crypto/tls""io/ioutil""google.golang.org/grpc""google.golang.org/grpc/credentials")funcgetC

go - 带有 gRPC 的 golang protocol buffers 可以在不同的 OS 平台上交叉编译和使用吗?

这个问题专门关于在不同的操作系统平台上编译和使用golangProtocolBuffer(使用gRPC),我还没有看到类似的问题。是否可以在Windows上编译一个.proto文件,然后在Linux上使用生成的文件?还是相反?我在Windows和Linux上编译了相同的.proto文件,diff显示了不同的结果。一个区别是Windows编译版本有时会在请求结构的字段中重复json,如下所示:Field1Name*type`protobuf,bytes,1,opt,name=my_name,json=myName"json:"my_name,omitempty"`而Linux版本是:Fi

Golang GRPC 返回 EOF 错误

我正在使用http通过以下代码调用RPCfunc(c*CallClient)Wallet(methodstring,req,repinterface{})error{client:=&http.Client{}data,_:=EncodeClientRequest(method,req)reqest,_:=http.NewRequest("POST",c.endpoint,bytes.NewBuffer(data))resp,err:=client.Do(reqest)iferr!=nil{returnerr}deferresp.Body.Close()io.Copy(ioutil.D