Azure API Management是否支持gRPC通信及链路部署?
关于Azure APIM承载gRPC流量作为中间代理的可行性说明
这个部署方案完全可行,是官方正式支持的生产可用场景,不属于实验性功能,可以直接落地。
核心支持能力范围
- 全类型gRPC调用模式兼容:不管是普通一元调用,还是服务端流、客户端流、双向流式调用,APIM都能正常代理,不会截断长连接的流式传输
- 网关管控能力与REST接口对齐:日常用APIM管理HTTP接口用到的鉴权(JWT、客户端证书、OAuth2等)、流控限流、日志监控、熔断降级、访问白名单、响应缓存能力,gRPC接口都可以正常使用
- 自带协议转换能力:如果架构里存在新旧服务混用的情况,APIM可以实现gRPC和REST/HTTP的双向转译,不需要额外开发独立转换层
- 证书能力完整:支持在网关层做TLS终止,也支持配置网关和后端gRPC服务之间的mTLS双向认证,满足通信加密合规要求
部署配置注意事项
- 实例版本要选对:只有Standard层和Premium层的APIM实例支持gRPC能力,Developer、Basic、Consumption消费层目前没有开放该功能,不要选错实例规格
- 监听器必须开启HTTP/2:gRPC强制基于HTTP/2协议传输,配置APIM入站监听器的时候一定要打开HTTP/2开关,否则客户端无法正常连接
- proto文件要完整上传:导入gRPC API定义时,除了主proto文件,所有通过import引用的依赖proto文件也要同步上传,否则APIM无法正常解析接口定义
- 提前适配默认限制:目前APIM的gRPC代理有几个明确限制:一是不支持直接改写gRPC消息体内容,二是默认长连接空闲超时为5分钟,如果跑超长流式连接(比如实时推送、持续日志上报流)需要手动调高超时阈值,三是原生不支持gRPC-Web直连,对接浏览器侧gRPC-Web请求需要额外配置协议转换规则
内容的提问来源于stack exchange,提问作者mayu
相关产品推荐
相关产品推荐

