我有一些计算密集型和长时间运行的任务。它可以很容易地拆分成子任务,也可以很容易地在以后聚合结果。例如,Map/Reduce可以很好地工作。
我必须在Cloud Foundry上解决这个问题,在那里我希望从自动缩放中获得优势,即由于高CPU负载而创建额外的实例。通常我使用Spring boot来开发我的cf应用程序。
欢迎任何关于如何在cf上以弹性方式分而治之的想法。在不需要配置应用程序中可用应用程序实例数量的情况下,创建与cf一样多的实例将是非常棒的。此外,我还需要通过加载CPU来触发实例的创建,以触发自动伸缩。
发布于 2017-12-21 22:38:28
我必须在云计算上解决这个问题
听起来你的思路是对的。重要的是,您需要编写您的应用程序,以便它可以与自身的多个实例共存(或者可能将其分解为协调工作和多个工作应用程序的主节点)。无论您如何设计应用程序,能够扩展实例都是至关重要的。然后,您可以简单地使用cf scale来添加或删除节点并增加容量。
如果你想变得更聪明,你可以设置一个管道来运行你的作业。第一步是扩大你的应用程序的工作节点,第二步是安排运行的工作,第三步是清理和缩小节点。
我之所以建议这样做,是因为手动伸缩将是最简单的前进道路(请继续阅读)。
我希望从自动缩放中获得优势,即由于高
负载而创建额外的实例。
至于自动缩放,我认为这是可能的,但我也认为它使问题变得比需要的更复杂。在Cloud Foundry上通过CPU自动伸缩并不像看起来那么简单。The way Linux reports CPU usage, you can exceed 100%, it's 100% per CPU core。这与您可能不知道您的单元上有多少个CPU核心的事实(例如,如果您使用的是公共CF提供商)、核心数量可能会随着时间的推移而变化(如果您的提供商更改了硬件),以及这使得很难知道您应该在什么时候扩展您的应用程序。
如果您必须自动缩放,我建议尝试在其他度量上进行自动缩放。哪些指标可用,将取决于您使用的自动缩放工具。最好的情况是,如果您可以有一些自定义指标,那么您可以使用工作队列长度或与您的应用程序相关的内容。如果不支持自定义指标,您可以随时使用自己的自动缩放器来处理与您的应用程序相关的指标(您可以通过使用CF API调整应用程序的实例计数来进行扩展和缩减)。
您还可以根据您的autoscaler提供的指标组合出一个解决方案。例如,您可以根据需要处理的工作负载,人为地膨胀autoscaler支持的指标。
您也可以在工作日开始时扩大规模,在一天结束时缩小规模。它不是动态的,但它很简单,它会给你带来一些效率的提高。
希望这能有所帮助!
https://stackoverflow.com/questions/47912845
复制相似问题