你可以使用 gRPC/gRPC-Web 在 Azure 上托管的微服务之间进行通信吗?
Posted
技术标签:
【中文标题】你可以使用 gRPC/gRPC-Web 在 Azure 上托管的微服务之间进行通信吗?【英文标题】:Can you use gRPC/gRPC-Web to communicate between Microservices hosted on Azure? 【发布时间】:2021-04-16 16:17:13 【问题描述】:我目前正在设计一个微服务架构,我对这个话题很陌生,这个问题似乎没有在任何地方得到明确的回答。
是否可以使用 gRPC 在微服务(Azure 应用服务)之间进行通信?能否以某种方式使用 Containers 或 Kestrel 来支持 HTTP/2?
我有以下示例在本地托管时工作:
但是,在 Azure 中托管它们时,它似乎不起作用:
基本上是否可以在 Azure 中使用 gRPC,或者我是否必须使用 gRPC-Web 进行所有通信? 或者是否有任何建议/替代方案,例如 REST/SignalR?
【问题讨论】:
如果我的解决方案对您有启发或帮助,请将我的回答标记为accepted,谢谢~ 【参考方案1】:根据开发者的使用情况,不推荐使用gRPC。具体细节可以参考用户反馈和我下面截的一些截图。
您可以先阅读这篇文章。
SIGNALR VS GRPC ON ASP.NET CORE – WHICH ONE TO CHOOSE
当前状态:
-
gRPC-Web for .NET now available
2。 Azure SignalR Service(Official recommendation)
开发者反馈:
gRpc support in Azure App Service
图 1。
图 2.
图 3。
图 4。
【讨论】:
【参考方案2】:截至目前(2021 年 12 月),此问题仍未解决(自 2019 年 4 月起) https://github.com/dotnet/aspnetcore/issues/9020
Azure 应用服务使用 IIS/Windows/Http.sys。 Http.sys 已嵌入操作系统,不完全支持 gRPC 所依赖的 HTTP/2 尾随标头。
【讨论】:
以上是关于你可以使用 gRPC/gRPC-Web 在 Azure 上托管的微服务之间进行通信吗?的主要内容,如果未能解决你的问题,请参考以下文章