无服务器

无服务器应用程序利用现代云计算功能和抽象,让您专注于逻辑而不是基础设施。在无服务器环境中,您可以专注于编写应用程序代码,而底层平台负责扩展、运行时、资源分配、安全性和其他“服务器”细节。

什么是无服务器?

无服务器工作负载是“事件驱动的工作负载,与通常由服务器基础设施处理的方面无关。” “运行多少实例”和“使用什么操作系统”等问题都由功能即服务平台(或 FaaS)管理,让开发人员可以自由地专注于业务逻辑。

无服务器特性?

无服务器应用程序具有许多特定特征,包括:
• 带触发器的事件驱动代码执行
• 平台处理所有的启动、停止和扩展工作
• 可扩展至零,闲置时成本低至零
• 无国籍

无服务器与传统堆栈

Function as a Service (FaaS) and Legacy diagram

功能即服务 (FaaS)

•事件驱动的执行。
•开发人员将所有特定于服务器的任务委托给 FaaS 平台。
•开发人员仅编写由平台调用的业务逻辑,从而随着业务需求的变化实现更具弹性的需求演变。

传统应用

•必须维护服务器基础设施(安装、配置、打补丁、升级等)。
•基础设施的扩展方式对于工作负载来说可能不够动态(浪费资源)。
•开发人员编写集成代码来处理消息平台、HTTP 请求/响应等。

为什么选择 Spring 和 Serverless?

Spring 产品组合提供了强大的功能集合,可在无服务器应用程序中使用。是否用Spring Data访问数据, 用Spring Integration 来运行企业集成模式,或用Spring Framework和Project Reactor来进行最新的响应式编程, Spring 让开发人员从一开始就在无服务器环境中高效工作。

Spring 还可以使您的功能避免供应商锁定。由Spring Cloud Function提供适配器, 让您在他们的平台上运行代码时与供应商特定的 API 分离。

详细:Spring Cloud 功能

Spring Cloud功能提供让 Spring 开发人员利用无服务器或 FaaS 平台的功能。

java.util.function来自核心 Java,是 Spring Cloud Function 使用的编程模型的基础。简而言之,Spring Cloud Function 提供:

• 编程风格的选择:响应式、命令式或混合式。
• 功能组合和适配(例如用响应式组合构建命令式功能)。
• 支持具有多个输入和输出的响应式功能,让功能处理合并、加入和其他复杂的流操作。
• 输入和输出的透明类型转换。
• 特定于目标平台(例如 Project Riff、AWS Lambda 等;见下文)的部署打包功能。
• 具有灵活签名的功能(POJO 功能)——“如果它看起来像一个功能,它就是一个功能”
• Spring 的习惯用法和编程模型的所有其他好处。

Spring Cloud Function 提供了适配器,以便您可以在最常见的 FaaS 服务上运行您的功能,包括 亚马逊 Lambda, Apache OpenWhisk, 微软 Azure, 和 Project Riff.