Docker性能获取信息:轮询vs事件

我有Docker群满容器。 我需要监视什么时候上下。 我可以用两种方法做到这一点:

  • 附在群里听事件。
  • 轮询服务清单

事件的问题是可能会有巨大的stream量,再加上如果一些事件没有被处理,我们将简单地散播关于发生的事情的信息。

对于我来说,获得即时的结果并不是非常重要的,但要获得关于正在发生的事情的正确信息。

现实生活中的优点/缺点?

听事件 – 它的直接,但有风险,就好像你的事件监听程序由于任何原因而崩溃,你将错过一个重要的信息,并导致错误的结果。 此注册人计划基于事件。 轮询 – 最终一致的结果。 但如果它解决了你的问题,那么抓取数据的方式就不那么痛苦了。 无论你的程序是崩溃还是重启。 我们正在使用这种方法在我们的项目中进行服务发现,到目前为止它已经达到了目的。

根据我的经验,检查一下是否正在启动或closures应该使用运行状况检查来完成,而且应该与运行服务的底层架构无关(否则每次更换平台时都必须编写一个新的运行状况检查)。 当然 – 你可能有特定需求的服务,不能以这种方式监控 – 如果是这种情况,欢迎您对此发表评论。

如果您仅将Swarm用于无状态服务,则build议创build一个运行状况检查路线,以validation服务是否健康,甚至可以从服务中断开有故障的容器。

如果你正在运行有状态的东西,这可能会更棘手,但也有解决scheme,通常在你的statefull容器上使用某种监视代理(我们使用cloudwatch,因为我们在AWS上运行,但有很多select)

希望这可以帮助。