go - 多个 go 实例共享一个公共通道
问题描述
我有一个关于通道的实现,由于某些性能问题,该通道中的任务数量(20)将保持有限。(性能问题来自外部系统,该系统无法同时处理超过 20 个任务)。
现在我想把这个逻辑移到 Kubernetes 上的一个微服务上,问题是 pod number 的副本会变成一个未知数。所以我无法将通道长度设置为指定的数字来控制总数。有没有办法解决这种情况,我可以将一个公共频道用于多路实例?或者关于这个案子的其他一些亮点?谢谢。
=========================补充说明=======================
我的微服务中有一个 api,它将调用外部系统 api 来处理一些操作。外部系统 api 只能处理 20 个并发,目前我无法修复它,因为它超出了我的控制范围。所以我在我的项目(单个实例)中实现了一个通道来处理这种情况。例如,如果同时有 30 个请求进来,我会将其中的 20 个放到通道中,10 个请求等待。如果channel中的请求一个接一个完成,剩下的10个请求会一个接一个的去channel。现在谈到多实例案例,我遇到了这个问题。
解决方案
推荐阅读
- windows - 水晶报表--加载数据库信息失败--在客户端PC上
- swift - 将泛型类型约束为同一方法中另一个泛型类型的子类
- reactjs - 在 CRA 应用程序中,如何先等待某些操作(redux)完成,然后才继续使用 App.js 的 render() 函数?
- mysql - 在 MySQL 中获取具有多个数据集的过滤数据作为过滤器
- c++ - 使用自定义 QSortFilterProxyModel 覆盖哪些函数
- git - 如何在 Visual Studio Code 工作区中配置多个 git 帐户
- python - 在pygame中发生碰撞后如何摆脱物体?
- wordpress - 如何解决 wpseo_pre_analysis_post_content 问题?
- apache-kafka - kafka 代理是否对 2 MB 消息大小有影响
- javascript - 窗口滚动 - 显示 div - 许多 div 的功能 - 纯 js