angular - 如何使用 Heroku 和 CleverCloud 在 Java 应用程序上加速应用程序 startup?

背景:我正在通过我的国家政府开设的课程学习编码。我们正在使用 Angular、Java Spring 引导和 SQL 来创建投资组合。他们没有详细讨论不同的事情,他们将我们指向谷歌(和 Stack Overflow),以及学生之间的合作,以解决任何疑问。我设法创建了一个应用程序,目前托管在 Firebase(前端)、Heroku(后端)和 CleverCloud(数据库)上,每个都有免费版本。

在本地运行应用程序时,它会在大约 10 秒内启动。当在 Heroku 中运行应用程序或在连接到 CleverCloud 时在 Apache Netbeans 中进行清理和构建时,它会在大约 2 分钟内启动。我想尽可能减少启动。显而易见的解决方案可能是使用 Heroku 的非免费版本,并且不要让应用程序停止,但考虑到我的国家和针对免费版本的课程,这不是一个选择。

我尝试了什么:

  • 删除实体上未使用的导入并在本 Heroku 指南中添加“排除测试依赖项”部分:https://devcenter.heroku.com/articles/reducing-the-slug-size-of-java-applications,但是在 Apache Netbeans 中进行了清理和构建之后,加载时间大约为 2 分钟,并且需要大约一分钟来执行以前不存在的其他进程。我结束了回滚更改。
  • 在前端添加了一个加载屏幕,告诉用户 Heroku 在 startup 上需要 2 分钟,并且从前端发出的 HTTP 调用超时大约为 1800000,但 HTTP 调用在大约一分钟后仍然崩溃,使其所以用户必须刷新页面并等待。

我希望,因为该应用程序将在某个时候被检查,要么让应用程序在工作日的工作时间不间断地运行,要么让它快速启动。我看到像 https://kaffeine.herokuapp.com/ 这样的页面可以 ping 应用程序,但我不知道如何使用它们,如果我可以将它们免费设置为在工作日使用,并且工作时间。

鉴于 startup 在 Heroku 上都很慢,并且在连接到 CleverCloud 时在 Apache Netbeans 中进行清理和构建时,我什至不知道问题是否出在 Heroku 本身上。作为一个对编码完全陌生的人,并且它的曝光一直是“这样做”而没有太多解释,这有点令人沮丧。我见过一种叫做“cron”的东西,但我不明白它们是如何工作或创建它们的,或者它们是否可以在仅支持 CRUD 的 Java 应用程序上工作(也许在前端做这个 cron 事情,但我仍然不对他们一无所知)。

TLDR:有没有什么方法可以加快 Java 应用程序的构建或启动速度,或者在工作日和工作时间为假人自动运行免费 Heroku 应用程序的指南?

对不起,如果问题很明显,因为我是一个必须依靠指南和视频的代码的初学者。

回答1

对于 Heroku 上的 Free & Hobby 版本,您在 Free 版本上的应用程序将进入休眠状态,在到达站点后需要一段时间才能加载。

在闲置 30 分钟后进入睡眠状态,否则将根据您剩余的每月免费测功小时数始终开启。

每月只需 7 美元,您就可以消除此限制并获得更多功能 Hobby version - 我认为这完全值得,而且我经常将它用于我的个人项目。 https://www.heroku.com/pricing

如果您使用某些东西来 ping Heroku 以使其保持活动状态,那么您将用完测功时间(您的应用程序可以运行的时间),即使这样,免费层也很难运行应用程序。

Heroku 还支持 SQL (Postgres),因此将数据库、前端和后端放在同一个地方是一个好处。一切运行顺利,环境变量和自动部署很容易设置。

如果这是您第一次使用 AWS,您还可以在那里使用免费套餐一段时间并使用弹性 beanstalk 进行部署。但是对于一个简单的免费项目来说,AWS 基础设施可能会让人不知所措——当他们开始向你收费时要小心。

相似文章