如何调试 gRPC-Go 服务?
Posted
技术标签:
【中文标题】如何调试 gRPC-Go 服务?【英文标题】:How do I debug gRPC-Go services? 【发布时间】:2017-04-10 01:26:30 【问题描述】:使用gRPC-Go 无疑是构建弹性、高性能和可扩展的分布式系统的好方法。我不太明白如何实际调试用它编写的服务。另外,HTTP/2 是唯一支持的wire protocol 吗?
【问题讨论】:
您可以通过将GRPC_TRACE
环境变量设置为all
进行调试。至于 HTTP/2,我认为这是出于安全性和可靠性的考虑。不过我可能是错的
谢谢@khuderm ......那么,有没有可用的替代写入协议?
对不起,我的意思是没有,但我不是 100% 确定
github.com/grpc/grpc-go/blob/master/transport/transport.go#L393 该库似乎被硬编码为仅使用 HTTP/2
【参考方案1】:
不确定您是否找到了解决方案...但是根据您的应用程序中有多少服务,您可以使用分布式跟踪系统来记录服务之间的调用。其中一些系统包括:
Zipkin (http://zipkin.io/) 小巧玲珑 (https://research.google.com/pubs/pub36356.html) 积家 (https://uber.github.io/jaeger/)如果您使用 opentracing 项目 (http://opentracing.io/),您可以从将信息传输到跟踪系统的代码中抽象出客户端和服务器中的跟踪代码。例如,您可以使用 OpenTracing 中的 Trace 语句来检测您的客户端和服务器,然后您可以将跟踪实现切换为以正确格式推送跟踪的 Zipkin 或 Jaeger Tracer。
有可供 gRPC 使用的 opentracing 绑定。 https://github.com/grpc-ecosystem/grpc-opentracing
【讨论】:
以上是关于如何调试 gRPC-Go 服务?的主要内容,如果未能解决你的问题,请参考以下文章