为什么选择 Spring 和 Serverless?
Spring 产品组合提供了强大的功能集合,可在无服务器应用程序中使用。无论是使用 Spring Data 访问数据,使用 Spring Integration 的企业集成模式,还是使用 Spring Framework 和 Project Reactor 的最新反应式编程,Spring 都能让开发人员从一开始就在无服务器环境中高效工作。
Spring 还可以帮助您的函数避免供应商锁定。 Spring Cloud Function 提供的适配器允许您在其平台上运行代码时与特定于供应商的 API 解耦。
功能即服务 (FaaS)
事件驱动的执行。
开发人员将所有特定于服务器的任务委托给 FaaS 平台。
开发人员仅编写由平台调用的业务逻辑,从而随着业务需求的变化实现更具弹性的需求演变。
传统应用
必须维护服务器基础设施(安装、配置、打补丁、升级等)。
基础设施的扩展方式对于工作负载来说可能不够动态(浪费资源)。
开发人员编写集成代码来处理消息平台、HTTP 请求/响应等。
详细:Spring Cloud 函数
Spring Cloud Function 提供了让 Spring 开发人员能够利用无服务器或 FaaS 平台的功能。
核心 Java 中的 java.util.function 包是 Spring Cloud Function 使用的编程模型的基础。简而言之,Spring Cloud Function 提供:
编程风格的选择:反应式、命令式或混合式。
函数组合和适配(例如用反应式组合命令式函数)。
支持具有多个输入和输出的反应式函数,让函数处理合并、加入和其他复杂的流操作。
输入和输出的透明类型转换。
特定于目标平台(例如 Project Riff、AWS Lambda 等;见下文)的部署打包函数。
具有灵活签名的函数(POJO 函数)——“如果它看起来像一个函数,那么它就是一个函数”
Spring 的习惯用法和编程模型的所有其他好处。
Spring Cloud Function 提供了适配器,以便您可以在最常见的 FaaS 服务上运行您的函数,包括 Amazon Lambda、Apache OpenWhisk、Microsoft Azure 和 Project Riff。
Spring Cloud Function 是一个具有以下高级目标的项目:
通过功能促进业务逻辑的实现。将业务逻辑的开发生命周期与任何特定的运行时目标分离,以便相同的代码可以作为 Web 端点、流处理器或任务运行。支持跨无服务器提供商的统一编程模型,以及独立运行(本地或在 PaaS 中)的能力。在无服务器提供程序上启用 Spring Boot 功能(自动配置、依赖注入、指标)。它抽象了所有传输细节和基础设施,允许开发人员保留所有熟悉的工具和流程,并专注于业务逻辑
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public Function<String, String> uppercase() {
return value -> value.toUpperCase();
}
}
或者
@Configuration
public class GenericFunction {
@Bean
public Function, Map> function() {
return m -> m.entrySet().stream().collect(Collectors.toMap(e -> e.getKey(),
e -> e.getValue().toString().toUpperCase()));
}
}
网友评论