【发布时间】:2016-08-25 22:52:44
【问题描述】:
我目前正在与我的团队设计一个系统,该系统在 Marathon 中编排大量容器。我们需要获取 Marathon 中应用的当前状态,这里有两个选项:
- 通过 API 轮询任务列表。可能会用到
GET /v2/apps/和GET /v2/apps/{app_id}API 资源。 - 从事件总线接收实时事件。
嗯,第二个选项似乎更优化,但无论如何,我想知道,Marathon 的 API 的性能如何。
Marathon 能承受多少负荷?它可以处理每秒 1K 的请求吗?
PS:我们希望将状态更新传递到 UI。由于我们可以启动和停止应用程序,因此这种状态本质上是动态的。大多数应用程序只运行 1-2 分钟,但有些应用程序可以在需要时运行,除非停止。
【问题讨论】:
-
什么类型的请求?如果您对获取(不更改)状态感兴趣,并且可以假设此状态在某个时间间隔内不会更改(或者可以忽略此更改),则可以在代理后面设置 marathon。如果您有许多应用程序
GET /v2/apps最多可以达到 1 秒。 -
我目前正在谈论获取状态。实际上,我们希望将状态更新传递给 UI。但是我们有两种类型的马拉松任务:长时间运行和那些可能正在运行的任务,例如一分钟。所以状态可以经常更新。
-
像往常一样视情况而定。如果你没有使用 Auth 插件并且有少量的应用程序/组/任务,那么 marathon 可以处理。请记住,marathon 将其状态保存在每个应用程序/任务/组存储的 zookeeper 中,所以只要 ZK 可以处理它 Marathon 就可以工作(+ 领导者有内部缓存,所以读取应该很快)。
-
如果应用程序在 1 分钟后完成,我相信 Marathon 会重新启动它们...
-
你是如何确定的?听起来有点奇怪/复杂。此外,还有用于此类工作负载的现有工具,例如 Chronos 或其继任者 Metronome
标签: performance mesos marathon