记录 gRPC GOAWAY 报错排查过程
💡
原文中文,约3100字,阅读约需8分钟。
📝
内容提要
本文介绍了解决使用 gRPC 协议通信时出现 GOAWAY 错误的方法,问题出在客户端发送的 Content-Length 头信息上。作者认为,gRPC 为了支持 stream 接口而让 Unary 接口变得复杂,不值得认可。
🎯
关键要点
-
本文介绍了解决 gRPC 协议通信时 GOAWAY 错误的方法。
-
问题出在客户端发送的 Content-Length 头信息上。
-
作者基于 Go 语言的 net/http 标准库实现了一个简化的 gRPC 客户端。
-
在调用某部门的接口时,服务报 GOAWAY 错误,经过排查发现与 Content-Length 头有关。
-
使用 Postman 测试同样的接口和数据可以正常通过,而自定义客户端却报错。
-
排查方向包括 body 编码和请求 Header,最终发现是 Header 出问题。
-
客户端自动发送 Content-Length 头信息,可能导致 gRPC 通信失败。
-
Go 语言的 HTTP 标准库会自动添加 Content-Length 头,需通过更改请求体类型来解决问题。
-
gRPC 为了支持 stream 接口,使得 Unary 接口变得复杂,影响了标准 HTTP 工具的使用。
-
作者认为 gRPC 的设计存在问题,需结合实际需求进行技术选型。
🏷️
标签
➡️