草庐IT

RPC和GRPC

全部标签

google-app-engine - GAE Golang - HTTP JSON RPC 调用在 dev_appserver 中有效,但在 App Engine 中无效?

我正在创建一个GoGoogleAppEngine应用程序,它将对Bitcoinserver进行HTTPJSONRPC调用。.我让我的代码在dev_appserver上正常工作,但是当部署在GAE上时,代码似乎不起作用。我正在使用GitHub上可用的库,并这样调用它:funcGetInfo(idinterface{})(map[string]interface{},os.Error){resp,err:=httpjsonrpc.Call("user:pass@111.1.1.1:18332","getinfo",id,nil)iferr!=nil{log.Println(err)retu

java - grpc 示例是否旨在跨语言交流?

gRPC示例是否旨在互操作?我可以完全使用Java运行Java客户端-服务器示例。我可以完全使用Go编写Go示例。但是Go的helloworld客户端不会与Java的helloworld服务器对话。在一个终端中,来自grpc-java:$./gradlew:grpc-examples:helloWorldServer:grpc-core:compileJavaUP-TO-DATE...:grpc-examples:helloWorldServerMar10,20157:01:50PMio.grpc.examples.helloworld.HelloWorldServerstartINF

go - gRPC下游的优雅关闭

使用以下原型(prototype)缓冲区代码:syntax="proto3";packagepb;messageSimpleRequest{int64number=1;}messageSimpleResponse{int64doubled=1;}//Allthecallsinthisserivcepreformtheactionofdoublinganumber.//Thestreamswillcontinuouslysendthenextdouble,eg.1,2,4,8,16.serviceTest{//ThisRPCstreamsfromtheserveronly.rpcDown

go - 使用 Go gRPC 为点对点连接指定截止日期。

根据gRPC文档,deadlines可以由客户端指定以确定客户端在退出并出现DEADLINE_EXCEEDED错误之前在服务器上等待的时间。文档提到不同的语言有不同的实现,有些语言没有默认值。的确,在GogRPCdocumentation上按“截止日期”快速CTRL+F显示没有结果。我确实发现了一个WithTimeout在TCP连接的拨号器上。实现如下(来自helloworldexample):packagemainimport("log""os""time""golang.org/x/net/context""google.golang.org/grpc"pb"google.gola

debugging - 如何调试 gRPC-Go 服务?

使用gRPC-Go无疑是构建弹性、高性能和可扩展分布式系统的好方法。我不太明白的是如何实际调试用它编写的服务。另外,HTTP/2是唯一的吗wireprotocol支持吗? 最佳答案 不确定您是否找到了解决方案...但是根据您的应用程序中有多少服务,您可以使用分布式跟踪系统来记录服务之间的调用。其中一些系统包括:齐普金(http://zipkin.io/)小巧玲珑(https://research.google.com/pubs/pub36356.html)耶格(https://uber.github.io/jaeger/)如果您使用

go - grpc-go 模型中的空值问题

我有两台服务器UserServer:处理所有用户CRUD操作产品服务器:处理产品CRUD操作并通过gRPC调用从用户服务器获取用户信息typeUserstruct{IDstring`json:"id"`FirstNamestring`json:"firstName"`MiddleName*string`json:"middleName,omitempty"`LastNamestring`json:"lastName"`Emailstring`json:"email"`Disabledbool`json:"disabled"`LastSignedInAt*time.Time`json:"

go - golang RPC调用中的参数

在RPC处理程序函数中,我省略了第一个参数,例如:func(selfHandler)GetName(int,reply*StructObj){}调用方varreplyStructObjclient.Call("Handler.GetName",0,&reply)因为我不需要GetName方法中的第一个参数,所以我省略了它的名字,但是,我得到了:gob:typemismatchindecoder:wantstructtype我将GetName方法更改为GetName(idint,reply*StructObj)并且它有效。我想知道为什么会这样? 最佳答案

go - gRPC 设置有问题。获取间歇性 RPC 不可用错误

我有一个grpc服务器和客户端,大部分时间都按预期工作,但偶尔会出现“传输正在关闭”错误:rpcerror:code=Unavailabledesc=transportisclosing我想知道是不是我的设置有问题。客户端非常基础connection,err:=grpc.Dial(address,grpc.WithInsecure(),grpc.WithBlock())pb.NewAppClient(connection)deferconnection.Close()调用超时时间如下ctx,cancel:=context.WithTimeout(ctx,300*time.Millise

go - net/rpc .Call 与 .Go 之间有什么区别?

我刚刚开始使用Golang和net/rpc包。我试图了解您何时可以使用异步client.Go()调用大多数在线示例使用的client.Call()方法。会通过类似的方式异步调用client.Callgoclient.Call(...)本质上和使用client.Gocall是一样的吗?我也在网上看到过这个例子(例如当同时调用多个RPC时)。 最佳答案 作为documented:Goinvokesthefunctionasynchronously.ItreturnstheCallstructurerepresentingtheinvoc

json - "google/protobuf/struct.proto"是通过 GRPC 发送动态 JSON 的最佳方式吗?

我写了一个简单的GRPC服务器和一个调用服务器的客户端(都在Go中)。请告诉我使用golang/protobuf/struct是否是使用GRPC发送动态JSON的最佳方式。在下面的示例中,我之前将Details创建为map[string]interface{}并将其序列化。然后我将它作为bytes在protoMessage中发送,并在服务器端反序列化消息。这是最好/最有效的方法还是我应该在我的原型(prototype)文件中将Details定义为一个结构?下面是User.proto文件syntax="proto3";packagemessages;import"google/proto