今天看啥  ›  专栏  ›  ADADACHAN

无服务器与传统堆栈

ADADACHAN  · 简书  ·  · 2021-09-06 10:14

为什么选择 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()));

}

}




原文地址:访问原文地址
快照地址: 访问文章快照