【问题标题】:Distributed Systems NSQ topology pattern on Docker containersDocker 容器上的分布式系统 NSQ 拓扑模式
【发布时间】:2013-12-18 01:12:09
【问题描述】:

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

【问题讨论】:

  • 好问题,我想这将利用容器链接,我还没有深入研究。
  • 关于 GitHub 上的相关主题有一个有趣的后续:github.com/bitly/nsq/issues/283#issuecomment-30048495 拓扑问题仍在进行中,但由于 Matt Reiferson 的工作已经注入了良好的基础(mreiferson:index.docker.io/u/mreiferson
  • @LucaG.Soave 我认为给自己添加一个答案会很好。包括对 NSQ 官方 Go 包的引用:github.com/bitly/go-nsq
  • @eAbi github.com/bitly/go-nsq 很棒,但仍然不能回答我的问题。此外,据我了解,与 Docker 或该拓扑的容器化无关。如果我错了,请多多包涵,更多解释/示例可能会有所帮助。

标签: deployment go docker lxc nsq


【解决方案1】:

我会在等待一些后台任务完成的时候尝试一下。

@Luca G. Soave 提到的分布式消息传递平台可以在这里看到:

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

出于讨论的目的,让我们假设 Docker 容器只是虚拟机的不同名称。 “可以用虚拟机构建分布式系统吗?”的问题。不太合适,因为它实际上只是配置、抽象和协调的问题。

上图可以重新创建,每个接触点/责任点(节点)都独立于 Docker 容器或虚拟机中。即:

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

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

  • 将容器内部端口映射到同一个主机端口,并将您的节点配置为将自己广播为主机 ip,这样当其他节点连接到它们时,它们会在映射到容器的端口;从而直接连接到容器。

  • 使用consul 之类的服务发现包替换 nsqlookupd 以添加其他元数据。如果您正在运行许多容器,每个容器都在内部绑定到同一端口(例如端口 9090),但允许主机上的 docker 进程管理随机外部端口映射,这将非常有用。

由于这与 Docker 有关,最近在跨主机向相关容器广播信息方面取得了一些进展;这是使用有关 nsqlookupd 容器的信息为您的 api/nsqd 容器播种的一种方法。

我已经成功地将 MaestroNG 用于小型部署,但它绝对不是大型 docker 部署的好解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    相关资源
    最近更新 更多