在 linux 上模拟分布式系统的最轻量级方法

Most lightweight way to emulate a distributed system on linux

所以我正在使用这个分布式系统 class,其中的项目是通过使用 android 和多个模拟器模拟分布式系统来完成的。由于多种原因,这种方法很糟糕:

  1. Android 模拟器太费资源了,我可怜的笔记本电脑经常崩溃。
  2. 模拟器之间的网络支持不佳。需要在 TCP 上做端口转发什么的。

那么在我的 Linux 机器上模拟一个消耗最少资源(主要是 RAM 和 CPU 时间)的分布式系统的方法是什么?

Docker 是这一切的答案吗?也许创建多个容器,每个容器都有单独的 IP?这可能吗?

您可以在一台 Linux 机器上 运行 多个 docker 容器。每个容器都将获得自己的 IP 地址,并且还能够与同一主机上的其他容器通信。您想模拟多少个系统?

我的团队维护着几个生产分布式系统;我们必须以能够捕获协议错误的方式对其进行单元测试。

我们有一个时钟存根实现和我们注入 类 的网络。该网络模仿许多分布式系统论文中使用的消息传递模型:随机选择一条消息并传递它。这很好地模拟了网络延迟和不一致。我们还有其他内置功能:能够 block/release 或删除消息 to/from 主机集;和一个简单的 tcp 模型。

通过这个简单的添加,我们的单元测试现在就是我们所说的交互测试。我们可以非常快速地添加我们想要的所有服务器 运行 在笔记本电脑上的单个进程中。


哦,做完这些你就会知道为什么全局变量和单例是一件坏事了。