Serverless
无服务器 应用程序利用现代 云计算 能力和 抽象,让您专注于 逻辑而非 基础设施。在 无服务器环境 中,您可以专注于编写 应用程序代码,而底层平台会处理 扩展、运行时、资源分配、安全 和其他 “服务器” 的细节问题。
什么是无服务器?
无服务器 (Serverless) 工作负载是 “不关心通常由服务器基础设施处理的方面”的事件驱动型工作负载。 “要运行多少实例” 和 “要使用什么操作系统” 等问题都由 功能即服务 平台(或 FaaS)管理,使开发人员可以自由地专注于 业务逻辑。
无服务器的特点?
无服务器 应用程序具有一些特定的特点,包括:
- 事件驱动 的代码执行与 触发器
- 平台处理所有的 启动、停止 和 扩展 工作
- 可 扩展到零,空闲时成本 低廉甚至没有
- 无状态
无服务器与传统技术栈 (Serverless vs Traditional Stack)
| 功能即服务 (FaaS) | 传统应用程序 |
|---|---|
| 事件驱动的执行。 | 必须维护服务器基础设施(安装、配置、修补、升级等)。 |
| 开发人员将所有服务器特定的任务委托给 FaaS 平台。 | 基础设施的扩展方式可能不够动态以适应工作负载(浪费资源)。 |
| 开发人员只编写由平台调用的业务逻辑,随着业务需求的演变,这使得要求更具弹性。 | 开发人员编写集成代码来处理消息平台、HTTP 请求/响应等。 |
为什么选择 Spring 和无服务器?
Spring 产品组合为在无服务器应用程序中使用提供了强大的功能集合。无论是使用 Spring Data 访问数据、使用 Spring Integration 的 企业集成模式,还是使用 Spring Framework 和 Project 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 Riff、AWS Lambda 等;详见下文)打包函数以进行部署。
- 具有灵活签名的函数 (POJO functions) - “如果它看起来像一个函数,那么它就是一个函数”。
- Spring 习语和编程模型的所有其他优势。
Spring Cloud Function 提供了适配器,因此您可以在最常见的 FaaS 服务上运行您的函数,包括 Amazon Lambda、Apache OpenWhisk、Microsoft Azure 和 Project Riff。