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