首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单容器与多容器

单容器与多容器
EN

Stack Overflow用户
提问于 2016-05-17 06:35:18
回答 2查看 1.2K关注 0票数 5

我的系统中有两个进程P1和P2,它们通过TCP频繁地相互通信。因此,它们都托管在同一个VM上。我正在考虑消除VM,而是将我的系统托管在物理机器上的容器中。如果我篡改了我的系统,我有两个选择:

  1. 容器1包含P1,容器2包含P2。这两个集装箱将连接起来。P1和P2之间的通信将跨越容器边界。
  2. 一个容器将包含P1和P2。通信将留在容器内。

请指导我上述两种方法的优点和缺点。

在方法1中,通信延迟所涉及的开销是什么?

EN

回答 2

Stack Overflow用户

发布于 2016-05-17 07:14:43

一个容器中的几个进程的主要问题是信号管理:如何(干净地)停止所有进程?

这就是"PID 1 zombie reaping issue",这就是为什么每当您必须管理多个进程时,像phusion/baseimage-docker这样的基本映像可以提供帮助。

更普遍的问题是微服务解耦问题:如果P1和P2都是有状态的,并且相互依赖,那么将它们保持在同一个容器中是有意义的。

在通信延迟方面所涉及的开销是什么?

这取决于所涉及的进程类型,但是开销是最小的,因为两个进程都运行在同一个码头主机上(即使它们位于单独的容器中)。

票数 2
EN

Stack Overflow用户

发布于 2016-05-18 04:10:51

这也是一个缩放的问题。如果您想要自动缩放P1,假设P1的使用跨越了某个阈值(堆,吞吐量),使用单个容器方法,您也将复制P2,尽管这可能不是必需的。

因此,一个容器--一个进程,扩展得更好--并提供细粒度管理(编排)控制。

就延迟而言,它实际上取决于您对容器的部署架构。如果两个容器都托管在同一台机器上,那么延迟将是微不足道的,同时,如果它们位于两个不同的AWS区域,则会开始产生影响。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37268790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档