我有一个系统,其中有1000个产品,这些产品是通过将其一端推送到队列中,而工作人员在另一端监听队列来异步创建的。通过调用第三部分提供商的微服务来创建产品。
下面是两种实现方法:
第一种方法
通过这种方法,我们会将每个产品推入自己的特定队列中,即产品A将进入队列A,产品B将进入队列B。
如果我要让10个工人在每个队列上侦听,那么我的系统上总共有10,000个工人在运行。
这种方法可确保我所有的产品都是独立运行的,即一种产品的第三方api性能不会影响其他产品(因为它们由不同的工作人员在不同的队列中运行),但是坐在这里的许多空闲工作人员会增加服务器(因为并非大规模创建所有产品)。
第二种方法
在这种方法中,我尝试通过使用单个队列并运行n个工作线程(n <= 1.5 * number_of_cores)来侦听同一队列,以减少工作线程的数量。
我们减少了工作人员的数量,这肯定会由于空闲的工作人员而导致每台服务器的负载下降,但是如果任何提供程序api开始缓慢响应,整个系统都会受到影响。
请建议我应该使用哪种方法,或者适合该用例的任何其他方法。 谢谢