Lzh on GitHub

Serverless

Serverless

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

什么是无服务器?

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


无服务器的特点?

无服务器 应用程序具有一些特定的特点,包括:

  • 事件驱动 的代码执行与 触发器
  • 平台处理所有的 启动停止扩展 工作
  • 扩展到零,空闲时成本 低廉甚至没有
  • 无状态

无服务器与传统技术栈 (Serverless vs Traditional Stack)

功能即服务 (FaaS)传统应用程序
事件驱动的执行。必须维护服务器基础设施(安装、配置、修补、升级等)。
开发人员将所有服务器特定的任务委托给 FaaS 平台。基础设施的扩展方式可能不够动态以适应工作负载(浪费资源)。
开发人员只编写由平台调用的业务逻辑,随着业务需求的演变,这使得要求更具弹性开发人员编写集成代码来处理消息平台、HTTP 请求/响应等。

为什么选择 Spring 和无服务器?

Spring 产品组合为在无服务器应用程序中使用提供了强大的功能集合。无论是使用 Spring Data 访问数据、使用 Spring Integration企业集成模式,还是使用 Spring FrameworkProject Reactor 的最新 响应式编程,Spring 都能让开发人员从第一天起就在 无服务器环境 中高效工作。

Spring 还有助于您的函数 避免厂商锁定Spring Cloud Function 提供的 适配器 让您在厂商平台上运行代码时,可以 解耦 厂商特定的 API。

开始使用这个简单的指南

详细介绍:Spring Cloud Function

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

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

  • 编程风格的选择:响应式 (reactive)、命令式 (imperative) 或混合式。
  • 函数组合和适配(例如将命令式函数与响应式函数进行组合)。
  • 支持具有多个输入和输出响应式函数,以让函数处理合并连接和其他复杂的流操作
  • 输入和输出的透明类型转换
  • 针对目标平台(如 Project RiffAWS Lambda 等;详见下文)打包函数以进行部署
  • 具有灵活签名的函数 (POJO functions) - “如果它看起来像一个函数,那么它就是一个函数”。
  • Spring 习语编程模型的所有其他优势。

Spring Cloud Function 提供了适配器,因此您可以在最常见的 FaaS 服务上运行您的函数,包括 Amazon LambdaApache OpenWhiskMicrosoft AzureProject Riff