【问题标题】:Most lightweight way to emulate a distributed system on linux在 Linux 上模拟分布式系统的最轻量级方法
【发布时间】:2018-07-19 20:08:19
【问题描述】:

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

  1. Android 模拟器太消耗资源,以至于我可怜的笔记本电脑大多崩溃。
  2. 模拟器之间的网络支持不佳。需要在 TCP 上进行端口转发等等。

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

Docker 是解决所有这些问题的答案吗?也许为每个容器创建多个具有不同 IP 的容器?这可能吗?

【问题讨论】:

  • 你试过在 Virtualbox 上使用 Android-x86 吗? Android-x86 的运行速度比 android 模拟器快很多,您可以在 virtualbox 上使用桥接网络连接为每个实例分配自己的 ip
  • Virtualbox 将再次为每个虚拟机使用大量 RAM。必须为每个实例分配至少 1 GB 的 RAM。不是很优化资源。

标签: linux docker android-emulator distributed-computing distributed-system


【解决方案1】:

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

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

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


哦,这样做之后,您就会知道为什么全局变量和单例是一件坏事。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我想模拟至少 5 个。每个系统需要多少资源?
    • 5 应该可以在任何 Linux 系统上轻松运行,除非您在 docker 容器中运行一些重型计算机。如果您需要扩展到 100 个容器,您可能需要更强大的主机。
    • 我明白了。我绝对应该对此进行更多探索。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多