gpt4 book ai didi

linux - Pivotal Cloud Foundry 中的工作应用程序和任务与调用 linux 应用程序之间的区别

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:00 25 4
gpt4 key购买 nike

我有一个第三方 linux 应用程序,它必须在主 Spring Boot 应用程序运行之前运行并完成。我已阅读有关辅助应用程序和一次性任务的信息,但目前我不知道我的用例属于哪一类。 linux 应用程序在某种程度上依赖于主应用程序,所以我认为一次性任务(带有运行任务)是我需要的。

同时,linux 应用程序必须在主应用程序启动之前完成。如果我的假设是正确的,我很高兴知道如何在启动主应用程序之前确定 linux 应用程序已经完成。另一方面,我想知道如何在 Cloud Foundry 上推送 linux 应用程序,以防我需要将其视为工作应用程序。

最佳答案

Worker 是一种基于相同代码库运行多个操作系统进程的方法。例如,如果您有一个 Web 应用程序,并且除了 Web 部件之外,它还有一个后台进程,它可能处理长时间运行的作业或类似的东西。 Web 进程和工作进程都将被设计为同时运行并永远运行(即永不退出,如果退出就是崩溃)。

基于相同代码分支的任务并非旨在与您的主应用程序并行运行。它会运行一段时间然后退出。典型的例子是批处理和单次运行的作业,比如如果你有一组需要处理的记录,当这些记录完成后任务就会退出(这是预期的,而不是崩溃)。任务通常与调度程序结合使用并一次又一次地运行。

两者都不是您尝试做的事情的完美匹配。您可以使用任务,但您需要手动管理任务并让它在您的应用程序启动之前运行。您可以使用 shell 脚本和 cf cli 执行此操作,例如:使用 --no-start 推送您的应用程序,运行您的任务,等待它完成,然后 cf start 你的应用程序。

您可以做的其他几件事:

  • Package a .profile script with your app .这将在与您的应用程序相同的容器中执行,但在您的应用程序运行之前。除非脚本成功完成,否则应用程序不会启动。这几乎就是你想要的,但它有一个严重的限制,因为你只有很少的时间让你的 .profile 脚本完成(默认 60 秒,在大多数平台上最多 180 秒,它是基本上是 cf push -t)。如果它没有足够快地完成,您的应用程序将被视为尚未启动,并将重新启动。这也会在您的应用程序每次启动时以及在每个应用程序实例中运行,这可能不是您想要的。关于这一点的最后一件事,文档说你不能将它与 Java 应用程序一起使用,但他们错了,它只是更复杂)。

  • 修改您的启动命令(即 cf push -c)。这与 .profile 基本相同,只是您将多个命令放入启动命令中,例如 cf push -c 'do_something_1 && do_something_2 && do_something_3 ...')。此选项与 .profile 选项有类似的限制,而且它不能很好地与具有相当长且复杂的启动命令的 Java buildpack 一起使用(不要将此选项用于 Java 应用程序)。

希望对您有所帮助!

关于linux - Pivotal Cloud Foundry 中的工作应用程序和任务与调用 linux 应用程序之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56997301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com