无服务器应用程序利用现代云计算功能和抽象,让您专注于逻辑而不是基础设施。在无服务器环境中,您可以专注于编写应用程序代码,而底层平台负责扩展、运行时、资源分配、安全性和其他“服务器”细节。
无服务器工作负载是“事件驱动的工作负载,与通常由服务器基础设施处理的方面无关。” “运行多少实例”和“使用什么操作系统”等问题都由功能即服务平台(或 FaaS)管理,让开发人员可以自由地专注于业务逻辑。
无服务器应用程序具有许多特定特征,包括:
• 带触发器的事件驱动代码执行
• 平台处理所有的启动、停止和扩展工作
• 可扩展至零,闲置时成本低至零
• 无国籍
•事件驱动的执行。
•开发人员将所有特定于服务器的任务委托给 FaaS 平台。
•开发人员仅编写由平台调用的业务逻辑,从而随着业务需求的变化实现更具弹性的需求演变。
•必须维护服务器基础设施(安装、配置、打补丁、升级等)。
•基础设施的扩展方式对于工作负载来说可能不够动态(浪费资源)。
•开发人员编写集成代码来处理消息平台、HTTP 请求/响应等。
Spring 产品组合提供了强大的功能集合,可在无服务器应用程序中使用。是否用Spring Data访问数据, 用Spring Integration 来运行企业集成模式,或用Spring Framework和Project Reactor来进行最新的响应式编程, Spring 让开发人员从一开始就在无服务器环境中高效工作。
Spring 还可以使您的功能避免供应商锁定。由Spring Cloud Function提供适配器, 让您在他们的平台上运行代码时与供应商特定的 API 分离。
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.