我的系统中有 2 个进程 P1 和 P2,它们通过 TCP 相互通信非常频繁。因此,它们都托管在同一个 VM 上。我正在考虑消除虚拟机,而是将我的系统托管在物理机上的容器中。如果我 dockerize 我的系统,我有两个选择:
请指导我上述两种方法的优缺点。
方法 1 中的通信延迟涉及的开销是多少?
请您参考如下方法:
一个容器中的多个进程的主要问题是信号管理:您如何(干净地)停止所有进程?
那就是“PID 1 zombie reaping issue”,这就是为什么当你必须管理多个进程时,像 phusion/baseimage-docker
这样的基础镜像可以帮助。
更普遍的问题是微服务解耦问题:如果 P1 和 P2 都是有状态的并且相互依赖,那么将它们放在同一个容器中是有意义的。
What is the overhead involved in terms of communication latency
这取决于所涉及的进程类型,但开销很小,因为两个进程都在同一个 docker 主机上运行(即使它们在不同的容器中)