docker - Docker-compose - 在单个主机上 -scale 的目的是什么?
问题描述
我有一个简单的 python 应用程序web
服务,它有一个nginx
服务作为它的反向代理。
我注意到 docker-compose 有一个-scale
选项,我认为重点是在它前面设置一个负载均衡器,对吗?
但我不明白,如果容器的所有副本都在同一台机器上运行,那么负载均衡器的意义何在?单个容器不会有更少的开销并因此更快吗?
据我了解,docker-compose 不管理增量更新,什么时候做up
或类似的事情,它只会更新所有副本。
假设 python 应用程序是理想的异步和/或在其容器内已经有多个工作人员。
解决方案
该选项不会设置负载均衡器 - 它只是使用该图像启动多个容器,仅此而已。要进行负载平衡,设置集群,或者您使用的任何策略都取决于您。例如,您可以在 docker-compose 上包含负载均衡器作为您的服务之一。
这对于测试同时运行多个实例以及将非多线程应用程序并行化为单个实例都是有益的——例如,nodejs 应用程序将主要在单核上具有 CPU 负载;在同一台机器上使用负载均衡器运行多个实例是更好地使用内核的好方法。
即使您的 Python 应用程序是“理想的异步”,那么由于 GIL(假设您使用的是 cpython),您仍然会因为大部分 CPU 负载仅在一个内核上而受苦,因此扩展您的应用程序仍然有好处容器。
推荐阅读
- r - 按特定顺序设置因子水平
- java - 我可以在 Java 中控制 JNI 本机方法调用名称吗?
- http - 分块传输编码、内容长度和字节服务
- python - 是否有一种执行命令的方法,然后在不终止命令的情况下继续程序
- google-sheets - 在谷歌表格中执行 REGEXREPLACE 时保留单元格的超链接
- javascript - SvelteKit:500:模块“流”已被外部化以实现浏览器兼容性
- arrays - 使用 Groovy 的简单井字游戏(switch 语句中的索引不会更改双数组中的元素)
- c - 存在或不存在等待时 fork 系统调用的控制流程
- reactjs - 如何在 Next JS 中显示本地视频?
- java - Java Spring RestTemplate 从 api 获取 1 个对象