0

我正在使用无服务器体系结构在AWS中构建一个Web应用程序。AWS无服务器应用程序加载时间与Spring框架

该应用程序的目的是公开一个公共API来上传来自世界各地的文件。

我使用AWS API-Gateway和Lambda来执行我的代码和S3作为存储。

我知道它非常有可能并得到很好的支持(即使是像无Serverless框架的第三方)也可以使用Java Spring框架编写我在Lambda函数中部署的代码。

但是,它真的推荐? Spring应用程序通常需要30秒或更长时间才能完全加载,而Lambda应该立即运行。

这个选项如何被AWS支持(因为它听起来像是一个非常糟糕的主意)?

+0

我希望你知道Spring框架是非常广泛的术语。如果我没有记错的话,Spring Boot作为独立软件是大多数人在编写Lambda时使用的。不是沉重的Spring组件。换句话说,使用Spring编码Lambda的人使用最小版本的Spring。 – kosa

回答

1

Java是AWS Lambda支持的编程语言之一。可以使用Java运行应用程序,只需考虑预热时间(如果符合您的使用情况),然后使用它即可。如果你没有收到请求,你也可以使用SNS和钩子来保持它的温暖

+0

我不是在谈论java热身,这可能不会超过1-2秒。我正在谈论Spring应用程序加载时间,可能需要30秒才能启动。 我问他们为什么会支持这样一个选项,当它看起来是最糟糕的选择时(也许我错过了一些东西,并且它们的配置方式不需要太多的时间来加载) – yuz

+0

如果你的Spring应用程序上下文需要30秒加载,我怀疑你从根本上不了解微服务的概念。 –

+0

在这方面,应用程序初始加载时间几乎与微服务无关。我也没有在谈话中的任何地方提到微服务。 如果你运行一个spring启动应用程序,通常需要几秒钟才能加载,这只是一个事实。这不是“我的”春季应用程序。 由于需要那么长时间我想知道为什么有人会鼓励在一个环境中使用这样的解决方案(Lambda),其中最重要的是你有多快地启动并返回响应 – yuz

0

就我个人而言,我会AVOID尽可能使用AWS lambda的java运行时。我明白,假设您正在考虑将现有实现迁移到微服务中,使用java是非常诱人的。但是,与其他运行时间相比,您总是要付出缓慢的预热时间。您也可能错过Java编译器优化,因为lambda可能不会被调用足够多的次数来触发C1和C2编译。

我更倾向于将只使用Java拉姆达如果你打算写一个实施精益,意味着没有spring,hibernate的等等,等等

0

使用Java与AWS lambda表达式是完全正常的,但Lambda表达式是功能不是应用程序!

所以你应该避免使用像Spring这样的框架,因为你不需要这样的框架。

问题是你想在你的函数中实现什么,为什么你需要一个框架来执行这么少量的代码? 你的用例是什么?

相关问题