首页 > 解决方案 > 多个 go 实例共享一个公共通道

问题描述

我有一个关于通道的实现,由于某些性能问题,该通道中的任务数量(20)将保持有限。(性能问题来自外部系统,该系统无法同时处理超过 20 个任务)

现在我想把这个逻辑移到 Kubernetes 上的一个微服务上,问题是 pod number 的副本会变成一个未知数。所以我无法将通道长度设置为指定的数字来控制总数。有没有办法解决这种情况,我可以将一个公共频道用于多路实例?或者关于这个案子的其他一些亮点?谢谢。

=========================补充说明=======================

我的微服务中有一个 api,它将调用外部系统 api 来处理一些操作。外部系统 api 只能处理 20 个并发,目前我无法修复它,因为它超出了我的控制范围。所以我在我的项目(单个实例)中实现了一个通道来处理这种情况。例如,如果同时有 30 个请求进来,我会将其中的 20 个放到通道中,10 个请求等待。如果channel中的请求一个接一个完成,剩下的10个请求会一个接一个的去channel。现在谈到多实例案例,我遇到了这个问题。

标签: gokubernetes

解决方案


推荐阅读