docker - 动态可扩展和自适应架构

标签 docker zeromq microservices consul

我是云计算专业的博士生,我计划在我的研究项目中使用基于微服务的架构以及 consul 和 Zeromq。我有几个我觉得难以理解的问题。有人可以帮我分享他们的经验吗?

  1. 我们有基于docker的微服务,我们有zeromq,我们有consul。您能提到我们如何将这三者结合在一起以获得动态自适应环境吗?
尽管我了解 Zeromq、docker 和 consul 分别是什么,但我仍然无法清楚地了解它们作为一个整体如何运作。我们有 docker 容器,在主机上的容器内运行着微服务。我们使用 Zeromq 在 Docker 容器之间传输(发布-订阅/管道)消息。容器可以在同一主机/数据中心或不同主机/数据中心上运行。然后我们使用 consul 进行服务发现。我的理解正确吗?

  • 架构如何根据工作负载动态扩展/缩减?
  • 比如说,我有一种情况,有时我需要更多的工作节点来进行特定的计算。谁启动更多数量的工作节点。哪个组件决定/做出这个决定?

    有调度组件吗?如果是这样,有人可以简要解释一下它是如何发生的或者哪个组件执行该功能吗?

  • 那么,领事的主要作用是什么?它只是用于服务发现吗?它也可以用于配置吗?如果是这样,它的局限性是什么?
  • 我发现即使zeromq也有服务发现机制,那么为什么我们需要consul呢?

  • 节点信息的故障如何在架构中传播?哪个组件负责?只是领事吗?或者还有zeroMq?
  • 请指教。

    最佳答案

    我参与了一个使用基于 Docker 的微服务和 Consul 的大型项目。 (我们使用的是不同的队列服务——RabbitMQ,所以我不能详细谈论这方面,但总的来说,队列就是队列。)

    据我所知,Docker、Consul 和任何队列技术都不​​提供自动缩放功能。 Docker 提供了一种简单的方法来启动服务的多个实例,Consul 提供服务发现(如您所说)和键/值持久存储。队列只是在服务实例之间传递消息的一种方式。您没有提到任何可以处理自动缩放的内容。

    要添加自动缩放功能,您需要查看 Kubernetes 之类的东西。

    您可以看看 CloudFoundry 或 Mesos 之类的东西。然而,这两者都需要虚拟化层,例如 OpenStack 或 VMWare vSphere。这些产品带来了巨大的值(value),但也带来了价格和复杂性。

    我建议您不要走这条路,而是查看 Amazon Web Services。使用 AWS,您可以轻松运行 docker 容器,并根据 CPU 负载、队列中的消息、一天中的时间(或一周中的某一天)等设置自动缩放。我知道使用 AWS 需要付出一定的代价,但如果设计和管理良好的话,它的成本远低于尝试自己设计、实现和维护。您还可以使用最小的(即免费的)机器和/或现货实例来最大限度地降低成本。

    关于docker - 动态可扩展和自适应架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33556707/

    相关文章:

    python - zeromq (zmq) 缺少带有 c++ 发布者和 python 订阅者的消息

    java - Zuul无法路由到在 Eureka 服务器中注册的应用程序

    node.js - node.js 的 API 网关示例

    Django - 如何在微服务架构中实现认证服务

    docker - 在 Dockerfile 中循环/迭代

    docker - Airflow:无法将工作日志发送到 S3

    tcp - 我可以将 ZeroMQ 与基于软件的负载均衡器 HAProxy 一起使用吗?

    java - 在不同的应用程序版本之间动态移动 session 特定数据

    docker - 如何解决docker中的 'no such file'错误?

    javascript - Node.js 和 zeroMQ 请求和响应