分布式系统Docker容器上的NSQ拓扑模式

是否可以使用Docker复制“ Topology Patterns ”最后一个示例中描述的“NSQ实时分布式消息传递平台”? 有人有docker文件或图像的例子吗?

当我等待几个后台任务完成时,我会采取一些措施。

@Luca G. Soave提到的分布式消息平台可以在这里看到: 来源:www.nsq.io/deployment/topology_patterns.html

我认为这个问题的根源是一个致命的问题:对Docker容器的误解。

为了便于我们讨论,假设一个Docker容器只是虚拟机的一个不同的名字。 “分布式系统可以用虚拟机build立吗?”的问题 不太适合,因为它只是一个configuration,抽象和协调的问题。

上面的图可以通过在Docker容器或虚拟机中自包含的每个联系点/责任(节点)来重新创build。 即:

  • 每个API / nsqd节点都在它自己的容器中
  • 每个nsq_to_file节点都位于其自己的容器中
  • 每个nsqlookupd节点都位于其自己的容器中

根据您如何设置Docker镜像,您可以通过多种方式实现分布式(多主机)版本。 一些想法是:

  • 将容器内部端口映射到同一个主机端口,并将您的节点configuration为主机IP,以便当其他节点连接到它们时,它们在映射到容器的端口上locking到主机的外部IP上; 从而直接连接到容器。

  • 使用像consul这样的服务发现包来replacensqlookupd以添加额外的元数据。 如果您运行的许多容器都内部绑定到相同的端口(例如端口9090),但是允许主机上的docker进程pipe理随机的外部端口映射,这将非常有用。

由于这涉及到Docker,所以在主机间广播信息到相关容器方面有了一些新进展。 这将是一个种子你的api / nsqd容器的信息关于nsqlookupd容器的一种方法。

我已经成功使用MaestroNG进行小型部署,但对于大型Docker部署来说,这绝对不是一个好的解决scheme。