无服务器
无服务器应用程序利用了现代云计算功能和抽象的优势,使您可以专注于逻辑而不是基础架构。在无服务器环境中,您可以专注于编写应用程序代码,而基础平台则负责扩展,运行时,资源分配,安全性以及其他“服务器”方面的细节。
什么是无服务器?
无服务器工作负载是“事件驱动的工作负载,与服务器基础结构通常处理的方面无关。” 诸如“要运行多少个实例”和“要使用哪种操作系统”之类的问题都由功能即服务平台(或FaaS)管理,从而使开发人员可以自由地专注于业务逻辑。
无服务器特性?
无服务器应用程序具有许多特定特征,包括:
- 带触发器的事件驱动的代码执行
- 平台处理所有开始,停止和缩放的琐事
- 缩放为零,空闲时成本低至零
- 无状态
无服务器与传统堆栈
服务即服务(FaaS)
- 事件驱动的执行。
- 开发人员将所有特定于服务器的任务委托给FaaS平台。
- 开发人员仅编写平台调用的业务逻辑,从而可以随着业务需求的变化而更加灵活地扩展需求。
传统应用
- 必须维护服务器基础结构(安装,配置,修补,升级等)。
- 基础架构的扩展方式可能无法动态适应工作负载(浪费资源)。
- 开发人员编写集成代码来处理消息传递平台,HTTP请求/响应等。
为什么选择Spring和Serverless?
Spring产品组合提供了强大的功能集合,可在无服务器应用程序中使用。无论是使用Spring Data访问数据,使用带有Spring Integration的企业集成模式还是使用带有Spring Framework和Project Reactor的最新反应式编程,Spring都使开发人员从第一天开始就可以在无服务器环境中工作。
Spring还可以帮助您的功能避免供应商锁定。通过Spring Cloud Function提供的适配器,您可以在其平台上运行代码时与特定于供应商的API分离。
详细说明:Spring Cloud功能
Spring Cloud Function提供的功能使Spring开发人员可以利用无服务器或FaaS平台。
java.util.function
来自核心Java的软件包是Spring Cloud Function使用的编程模型的基础。简而言之,Spring Cloud Function提供了:
- 编程风格的选择:反应式,命令式或混合式。
- 功能组成和适应(例如将命令性功能与反应性组合)。
- 支持具有多个输入和输出的反应式功能,以使功能处理合并,联接和其他复杂的流操作。
- 输入和输出的透明类型转换。
- 特定于目标平台的部署打包功能(例如Project Riff,AWS Lambda等;请参见下文)。
- 具有灵活签名的函数(POJO函数)-“如果看起来像一个函数,那就是一个函数”
- Spring习惯用法和编程模型的所有其他好处。
Spring Cloud Function提供了适配器,因此您可以在最常见的FaaS服务上运行功能,包括Amazon Lambda,Apache OpenWhisk,Microsoft Azure和Project Riff。