草庐IT

grpc-precompiled-binaries

全部标签

go - GRPC 中的请求是如何处理的?

假设我给定的GRPC端点具有以下实现typeHandlerFuncfunc(ctxcontext.Context,in*pb.Request)(*pb.Response,error)funcnewHandler()HandlerFunc{func(s*Server)Process(ctxcontext.Context,in*pb.Request)(*pb.Response,error){//doprocessing}}typeServerstruct{Handlerhandler}funcnew()(s*Server){return&Server{handler:handlers.ne

go - 如何在 grpc 中监听优雅的服务器终止

我想在我的处理程序中监听grpc中的正常服务器终止。当服务器正常停止时,我想在我的代码中添加一些逻辑来关闭打开的端口、文件、刷新结果等。我该怎么做?一元处理程序和流式处理程序有何不同? 最佳答案 你可以通过监听类似这样的信号来关闭钩子(Hook)在您的主要功能或您启动服务器的地方为您想要收听的信号创建channelc:=make(chanos.Signal,1)signal.Notify(c,syscall.SIGINT,syscall.SIGTERM)//callyourcleanupmethodwiththischannelas

api - 如何使用 gRPC 创建一个 rest API 来读取 go lang 中的文本或任何文件?

我正在尝试用go编程语言创建一个RESTAPI,以读取文本文件。我想使用gRPC构建它。 最佳答案 您可以关注Gointroduction那在gRPC文档中。基本流程如下:1)为您的数据结构编写ProtocolBuffers定义和集成它们的gRPC服务定义:packagefileservermessageFileRequest{stringname=1;}messageFileResponse{bytescontents=1;}serviceFileServer{rpcReadFile(FileRequest)returns(Fil

sqlite - 在 docker 容器中运行 go binary 时找不到 Spatialite 扩展

我正在设置一个Spatialite数据库(SQLite+Spatialite扩展)和一个在查询数据库并返回数据的docker容器中运行的关联Go程序。Go-spatialite,在我的理解中会在运行时动态加载spatialite库,以便查询数据库。在本地运行Go程序并使用Postman查询服务一切正常。但是,在使用容器时,Go程序无法找到spatialite扩展:"error":"shaxbee/go-spatialite:spatialiteextensionnotfound."我使用go-spatialite(shaxbee)package和database/sql包。我已经在本地

node.js - GRPC Golang 服务器和 NodeJS 客户端。 TLS 连接失败

当我不使用TLS时一切正常。但是当我这样做时,它没有连接。更多详情:我已经像这篇博客所说的那样配置了GolangGRPC服务器https://bbengfort.github.io/programmer/2017/03/03/secure-grpc.html在MutualTLSwithCertificateAuthority部分。服务器已启动并运行良好。现在我有一个用NodeJS编写的客户端,试图通过grpc发送一些数据。我已经像下面这样配置了NodeJS:varPROTO_PATH=__dirname+'/protos/log.proto';vargrpc=require('grpc

go - 使用 Envoy 进行 GRPC 负载均衡

可能是个愚蠢的问题(抱歉)......我目前有一个用GO编写的微服务应用程序,并使用GRPC进行所有服务到服务的通信。我目前正在使用用GRPC编写的客户端负载平衡,并且想切换到代理方法(istiowithenvoy)。我可以轻松启用istio和sidecar注入(inject)。我感到困惑的是我如何让所有服务的RoundRobin特使。我需要在客户端做任何事情吗?特使会在扩展时自动看到服务吗?看起来好得令人难以置信,我只需要启用sidecar注入(inject),一切都应该像魔术一样工作。非常感谢。 最佳答案 这是一个体面的arti

go - 如何使 Go gRPC 在服务器端与标准 IO 一起工作?

我是gRPC的新生,这是我的问题。我正在尝试编写一个服务,以根据以下服务方法将myOwnService公开到gRPC服务中:rpcHighFive(streamHighRequest)returns(streamHighReply){}服务端代码如下:func(s*server)HighFive(streampb.Greeter_HighFiveServer)error{//Oops,don'tknowhowtodohere...myOwnService(stdinio.ReadCloser,stdoutio.WriteCloser)returnnil}funcmyOwnService

go - 使用 pipe 执行 go binary 时使用 scanln

我有以下代码:packagemainimport"fmt"funcmain(){ifscanln_test(){fmt.Println("Success!")}}funcscanln_test()bool{fmt.Print("Pleasetypeyesornoandthenpressenter[y/n]:")varresponsestringfmt.Scanln(&response)ifresponse=="y"{returntrue}elseifresponse=="n"{returnfalse}else{returnscanln_test()}}当通过管道执行编译后的二进制文件时

go - gRPC - GoLang - Stackdriver 追踪器

我正在尝试获取stackdriver与gRPC配合使用的示踪剂我需要一些帮助。我一直在查看这两个链接以供引用,但仍然无法正常工作:https://medium.com/@harlow/tracing-grpc-calls-in-golang-with-google-stackdriver-b22495763a06#.81oa9q21vhttps://rakyll.org/grpc-trace/为简单起见,我只使用helloworldgRPCexample.这是我的客户:funcmain(){//Setupaconnectiontotheserver.conn,err:=grpc.Dia

docker - host to add/usr/bin/host to scratch 由 Go binary 组成的 Dockerfile?

我希望这个非常简单的Go包使用Scratch(或最小)图像在Docker容器中运行。packagemainimport("fmt""os/exec")funcmain(){cmd:="host"args:=[]string{"-t","ns","google.com"}output,err:=exec.Command(cmd,args...).Output()iferr!=nil{fmt.Println(err)}fmt.Println(string(output))}我原来的Dockerfile如下:FROMscratchADDgohost/CMD["/gohost"]这导致exit