问题标签 [grpc-go]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 部署 Rest + gRPC 服务器部署到带有入口的 k8s
我使用了一个示例 gRPC HelloWorld 应用程序https://github.com/grpc/grpc-go/tree/master/examples/helloworld。这个例子在本地系统中运行顺利。
我想使用 Ingress 将其部署到 Kubernetes。
以下是我的配置文件。
service.yaml - 作为 NodePort
入口.yaml
我无法使用 url 向服务器发出 gRPC 请求xyz.com/grpc
。得到错误
xyz.com
如果我对错误提出请求是
任何帮助,将不胜感激。
javascript - 本地主机上带有 TLS 的 web gRPC
我有一个使用本地受信任证书的 Go 服务器和客户端,它们相互通信完美无缺。现在我也希望 Go 服务器与 web-grpc 实例进行通信。Insecure 不起作用,因为浏览器会强制 HTTP2 通过 TLS 或完全拒绝它。毕竟;无论如何,它也应该适用于生产中的 TLS。另一个问题也是 CORS,我还想不出将其提供给https://github.com/improbable-eng/grpc-web的服务器实现版本以添加原始标头。但首先要做的事情。
我提供了一个简单的 HTML 和 Webpack 构建 JS,我通过 TLS 提供了一个简单的 Golang FileServer。
我首先生成了一个新的 TLS 证书/密钥(已经工作的 Go Server/Client 对成功使用):
然后我将它添加到 macOS 钥匙串中以获得信任:
这是我使用的 Protobuf 文件:
然后构建:
这是我提供的简单 HTML 页面:
然后是JS模块:
像这样使用 Webpack 构建的(输出到./dist/main.js
并由 读取index.html
):
www.wp-ts.loc
测试域在我的域中,/etc/host
因此它可以模拟为具有证书的域并将所有流量重新路由到 localhost。
现在这是我在所有大型库开销中似乎都找不到的问题,因为这似乎主要是针对 NodeJS 的。没有凭据的 Webpack 构建器new GCDServiceClient()
可以很好地构建,但是浏览器当然不会允许非 TLS 样式(暂时不考虑 CORS)。然后使用凭证作为测试(这当然是危险的,但我一直在尝试,在 grpc-web 样式上找不到好的文档)给出了明显的 NodeJS 问题,它不能使用文件系统:
也许我只是在接近这个完全错误的问题,而且我也知道grpc-web
实现仍处于一个非常脆弱的阶段,但是你如何使它能够通过 HTTP2/TLS(带证书)正确连接,也许如果知道得到要添加到https://github.com/improbable-eng/grpc-web的服务器的 CORS 标头,我在端口 3000 添加到我的侦听器中。
对不起,大要点,但我希望有人可以帮助我。我很高兴能开始使用 Go + Browser gRPC/Protobuf :D
非常感谢您!
microservices - 在 gRPC 服务间通信中传播 traceID
我正在开发一些 gRPC 微服务,并使用上下文传递任何标头和元数据。我正在使用 opentracing 进行跟踪,并且我的一个 gRPC 服务调用了其他 gRPC 服务,此时我在传播上下文时遇到了问题,因为它没有保留元数据和 traceID。我的代码如下
在上面的代码中,我正在调用服务D
,我必须使用我可以接受的元数据重新创建一个新的上下文,但我不确定如何将 tracIds 传播到服务D
go - 在 Go 中查找 gRPC 调用的客户端名称
我使用 protobufs 来定义我的模型和 gRPC 服务,并为 Go (.pb.go) 生成了 protos。当我对服务进行 gRPC 调用时,我想在服务器中找出调用服务器 API 的客户端/应用程序的名称。API中的上下文参数在这里有什么帮助吗?
go - golang中的grpc服务器并发模型
我在 golang 中创建了一个示例 gRPC 客户端和服务器(使用了 protobufs)。我了解 golang 中的并发模型。但是,我试图了解服务器中的并发模型,该服务器接受来自同一客户端(客户端上的多个 goroutine)/多个客户端的并行请求。
进一步来说:
- 当一个新的 gRPC 调用到来时,服务器是否会创建一个新的 goroutine?
- 这些 goroutine 共享哪些数据?是否
grpcServer.Serve
为跨 goroutine 共享的数据设置边界,即之前设置的所有内容都是共享的?(我正在考虑Java中的线程共享全局数据的线程)
hyperledger-fabric - 实例化链码时如何解决“在检索块之前完成上下文:上下文已取消”?
实例化命令成功完成,但在分析对等日志时,您可能会注意到:
2019-04-17 17:25:52.581 UTC [gossip.state] commitBlock -> DEBU 48c [canal-contrato] 已提交区块 [1] 有 1 个交易
2019-04-17 17:25:52.581 UTC [common.deliver] DeliverBlocks -> DEBU 48d [channel: canal-contrato] 为 192.168.16.1:48230 交付块 (0xc00023f9c0)
2019-04-17 17:25:52.581 UTC [fsblkstorage] waitForBlock -> DEBU 48e 将等待更新的块。maxAvailaBlockNumber=[1],waitForBlockNum=[2]
2019-04-17 17:25:52.586 UTC [common.deliver] DeliverBlocks -> DEBU 48f 上下文取消,中止等待下一个块
2019-04-17 17:25:52.586 UTC [common.deliverevents] func1 -> DEBU 490 关闭交付流
2019-04-17 17:25:52.586 UTC [comm.grpc.server] 1 -> INFO 491 流式调用已完成{"grpc.start_time": "2019-04-17T17:25:50.441Z", "grpc.service ":"protos.Deliver","grpc.method":"DeliverFiltered","grpc.peer_address":"192.168.16.1:48230","error":"上下文在块检索前完成:上下文取消","grpc.代码”:“未知”,“grpc.call_duration”:“2.144399922s”}
谁能告诉我我可能做错了什么以及这个错误的后果是什么?
笔记:
- 订购者日志不显示任何类型的错误
- 所有容器都正常运行
- 我正在使用节点版本 8.9.0(使用 npm 5.5.1)
- 我有 1 个组织,有 1 个同行、1 个 CA 和 1 个已订购(只是为了测试)
- 我正在使用 hyperlegder 面料 1.4 版
go - golang 中 server.GracefulStop() 的行为
我有一个 gRPC 服务器,并且我已经实现了 gRPC 服务器的正常关闭,就像这样
这工作正常。相反,如果我在主 goroutine 中编写grpcServer.Serve()
逻辑,而是将关闭处理程序逻辑放入另一个 goroutine,server.GracefulStop()
则通常不会执行之后的语句。某些 DbConnections 已关闭,如果closeDbConnections()
完全执行。
server.GracefulStop()
是阻塞调用。绝对grpcServer.Serve()
在完成之前server.GracefulStop()
完成。那么,这个调用返回后,main goroutine 需要多长时间才能停止呢?
有问题的代码
这种情况没有按预期工作。完成后server.GracefulStop()
,closeDbConnections()
可能会运行也可能不会运行(通常不会运行到完成)。我通过从终端按 Ctrl-C 发送 SIGINT 来测试后一种情况。
有人可以解释这种行为吗?
go - 如何在 Go 中创建通用 GRPC 服务器启动函数
我正在尝试抽象 GRPC 服务器的启动
原来的main函数如下:
我的目标是拥有这样的东西:
但这给了我以下错误:
这似乎collection_api.CollectionServer
不是一个有效的interface{}
类型。
知道如何进行这项工作吗?
grpc - gRPC 拦截器 golang- 嵌套调用
我想在另一个 gRPC 函数中调用一个 gRPC 函数(即像一个包装器)。您是否建议使用 gRPC 拦截器来实现它?嵌套 gRPC 调用的最佳实践是什么?
go - 如何通过 IP 地址和主机连接到部署的 grpc-server
我想通过给定的 ipaddress 和主机(如 192.168.0.1:50032)连接到已部署的 grpc 服务器,我尝试了很多东西,但是当我检查 grpc 推荐使用 grpc 客户端但我想尝试如何通过邮递员或任何通过 grpc 接口服务器发布。有什么建议吗?