azure - 服务器端的 gRPC 连接池
问题描述
我有一个要托管在 Azure Kubernetes 服务上的微服务集群。这些微服务基于 .NET Core,并将
- 通过 gRPC 与本地服务通信
- 使用 SignalR Core 将数据流式传输到客户端应用程序(Websockets)
我找不到一个好的解决方案的问题是在创建和销毁 pod 时“如何保持 gRPC”连接。
对于在混合网络上托管微服务来说,这似乎是一个非常微不足道的问题。我很想听听其他人是如何解决这个问题的。
解决方案
在这样的环境中 grpc 的持久性会很困难,因为 pod 根本不是持久性的。我会建议两种方法来处理这种情况
- 在 EKS 和 On Premises Service 之间使用/构建代理,该代理可以保持与本地服务的持久连接打开,但可以在创建/销毁 Pod 时添加/删除与代理的连接。该代理可以充当连接池并为本地服务调用提供更高的吞吐量。
- 不要担心与本地服务连接的持久性(将其视为 rdbms 连接,可以按需创建或销毁,但创建新服务需要一些成本)。如果创建或销毁 pod 的频率不高,这种方法就可以使用。
我建议第二种方法,以防豆荚的创建/销毁过于频繁(每小时很少),因为它的移动部件较少。但是,如果 Pod 的扩展过于频繁,则应使用方法一。
推荐阅读
- google-app-engine - 是否可以将 Google App Engine Flexi 与 Cloud Nat 连接起来
- python - Python:使用按钮和标签显示从函数返回的文本
- powershell - PowerShell:根据动态接口索引添加新路由
- reactjs - 如何测试包含时间参考的 REDUX 动作
- reactjs - 仅在 Provider 中的 useEffect 完成时运行测试
- amazon-web-services - IAM S3 仅将数据复制到属于组织一部分的账户
- java - Java - 如何从 zip 文件中的 CSV 文件中获取行数
- typescript - 根据不同的参数推断参数类型
- javascript - 过滤时如何显示隐藏汇总值并显示过滤汇总值
- vue.js - 什么时候应该在“事件”上使用“观察者”?