Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 动态可扩展自适应体系结构_Docker_Zeromq_Microservices_Consul - Fatal编程技术网

Docker 动态可扩展自适应体系结构

Docker 动态可扩展自适应体系结构,docker,zeromq,microservices,consul,Docker,Zeromq,Microservices,Consul,我是一名云计算的博士生,我计划在我的研究项目中使用基于微服务的体系结构和concur和zeromq。我有几个问题很难理解。有人能帮我分享他们的经验吗 我们有基于dockers的微服务,我们有zeromq和Consor。你能谈谈我们如何将这三者结合起来,形成一个动态的适应性环境吗 虽然我了解zeromq、docker和Concur各自是什么,但我仍然无法清楚地了解它们作为一个整体是如何工作的。我们有docker容器,其中包含在主机上运行的微服务。我们使用zeromq在docker容器之间传输(发布

我是一名云计算的博士生,我计划在我的研究项目中使用基于微服务的体系结构和concur和zeromq。我有几个问题很难理解。有人能帮我分享他们的经验吗

  • 我们有基于dockers的微服务,我们有zeromq和Consor。你能谈谈我们如何将这三者结合起来,形成一个动态的适应性环境吗 虽然我了解zeromq、docker和Concur各自是什么,但我仍然无法清楚地了解它们作为一个整体是如何工作的。我们有docker容器,其中包含在主机上运行的微服务。我们使用zeromq在docker容器之间传输(发布子/管道)消息。这些容器可以在同一主机/数据中心上运行,也可以在不同主机/数据中心上运行。然后我们使用Concur进行服务发现。我的理解正确吗

  • 体系结构如何根据工作负载动态地向上/向下扩展 比如说,我有一种情况,我需要更多的工作节点来进行一段时间的特定计算。谁增加了更多的工作节点数。哪个组件决定/做出此决定

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

  • 那么,领事的主要角色是什么?它是否仅用于服务发现?是否也可用于配置。如果是,它的限制是什么 我发现即使zeromq也有服务发现机制,那么为什么我们需要Consor

  • 节点故障信息如何在体系结构中传播?哪个部分负责?只是领事吗?还是同样

  • 请给出建议。

    我参与了一个使用基于Docker的微服务和Consour的大型项目。(我们使用的是另一种排队服务——RabbitMQ,因此我无法详细介绍这方面的内容,但一般来说,队列就是一个队列。)

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

    要添加自动缩放功能,您需要查看类似Kubernetes的内容

    你可以看看CloudFoundry或Mesos之类的东西。但是,这两个都需要虚拟化层,如OpenStack或VMWare vSphere。这些产品带来了巨大的价值,但也带来了价格和复杂性


    我建议您不要走这条路,而应该研究Amazon Web服务。使用AWS,您可以轻松地运行docker容器,并根据CPU负载、队列中的消息、一天中的时间(或一周中的某一天)等设置自动缩放。我知道使用AWS是有代价的,但如果设计和管理得当,您的成本将远低于尝试自行设计、实施和维护。您还可以使用最小(即免费)的机器和/或现场实例来最小化成本

    这是一个有趣的问题。您提到的所有组件都是独立的,在微服务体系结构中具有明显不同的优势和角色。不同寻常的是使用消息传递而不是HTTP。我认为这是一个有价值的离开,因为它支持更灵活的计算模式(工作生产者不需要是产品消费者,甚至不需要得到通知)。跳过HTTP的一个特别优点是避免了负载平衡器的成本(操作成本和服务延迟)、复杂性和增加的故障模式

  • Docker:管理单个服务的打包和交付到基础架构 ZeroMQ:管理服务之间高效的对等或代理通信 领事:服务发现(例如,找出用户服务的位置)

  • 自动缩放不是由Docker执行的。您可以使用自己的微服务来检查负载指标(例如,负载平均值、物理/交换内存使用率等),并启动副本和更新

    或者,您可以依靠@drhender:Kubernetes、中间层DCO或AWS自动缩放组详细介绍的自动缩放解决方案。但是,请注意,使用AWS自动缩放组会严重限制解决方案的可移植性

    无论您选择何种自动缩放机制,请确保您的ZeroMQ消息模式支持添加或删除服务。政府在这个问题上有很好的建议

  • 领事可以提供服务发现和服务配置需求。如果要存储敏感数据(如PHI或PII),请记住存储安全问题。这些都是更好地存储在休息时的保护,如保险库用品

    您可以监视问题。还有一个相当简单的方法,可以用来测试存储配置

    ZeroMQ不是直接为服务发现而设计的。您可以选择一种集中代理的体系结构,它不需要单独的服务发现,但具有不同的可伸缩性和容错含义。假设您在绑定子套接字时使用多部分消息和主题订阅,则它具有每消息有效负载开销。单独使用ZeroMQ有许多方法可以进行服务发现,但这将是非常重要的,特别是在考虑错误容忍度和一致性时

  • 节点故障是一个有趣的挑战。领事可以通过健康检查了解情况,但ZeroMQ会根据消息传递模式带来一些挑战。例如,根据我的经验,如果发送了请求,并且响应程序在交付后死亡,则使用REQ-REP对,REQ套接字将永远阻塞。有很多方法可以解决这个问题,比如超时

    我会依靠执政官来完成这件事,并准备打断或重生