首页 > 解决方案 > Docker-compose - 在单个主机上 -scale 的目的是什么?

问题描述

我有一个简单的 python 应用程序web服务,它有一个nginx服务作为它的反向代理。

我注意到 docker-compose 有一个-scale选项,我认为重点是在它前面设置一个负载均衡器,对吗?

但我不明白,如果容器的所有副本都在同一台机器上运行,那么负载均衡器的意义何在?单个容器不会有更少的开销并因此更快吗?

据我了解,docker-compose 不管理增量更新,什么时候做up或类似的事情,它只会更新所有副本。

假设 python 应用程序是理想的异步和/或在其容器内已经有多个工作人员。

标签: dockerdocker-compose

解决方案


该选项不会设置负载均衡器 - 它只是使用该图像启动多个容器,仅此而已。要进行负载平衡,设置集群,或者您使用的任何策略都取决于您。例如,您可以在 docker-compose 上包含负载均衡器作为您的服务之一。

这对于测试同时运行多个实例以及将非多线程应用程序并行化为单个实例都是有益的——例如,nodejs 应用程序将主要在单核上具有 CPU 负载;在同一台机器上使用负载均衡器运行多个实例是更好地使用内核的好方法。

即使您的 Python 应用程序是“理想的异步”,那么由于 GIL(假设您使用的是 cpython),您仍然会因为大部分 CPU 负载仅在一个内核上而受苦,因此扩展您的应用程序仍然有好处容器。


推荐阅读