Spring 概念

介绍

什么是spring

Spring 使每个人都可以更快、更轻松、更安全地进行 Java 编程。Spring 对速度、简单性和生产力的关注使其成为世界上最受欢迎的 Java框架。

spring优点

  • 应用广泛
  • 灵活
  • 简化开发
  • 快捷
  • 安全
  • 持续维护

spring应用访问

微服务

微服务架构是“新常态”。构建小型、自包含、随时可以运行的应用程序可以为您的代码带来极大的灵活性和弹性。Spring Boot 的许多专门构建的功能使在生产中大规模构建和运行微服务变得容易。并且不要忘记,没有微服务架构是不完整的春云 ‒ 简化管理并提高容错能力。

什么是微服务?

微服务是一种现代软件方法,其中应用程序代码以小的、可管理的、独立于其他部分的方式交付。

为什么要构建微服务?

它们的小规模和相对隔离可以带来许多额外的好处,例如更容易维护、提高生产力、更大的容错能力、更好的业务一致性等等。

实现关键

使用spring Boot作为微服务的服务主体,它提供了一个自包含的引用开发框架。这是微服务的基础。

微服务的架构性质会为开发与维护带来一系列的麻烦。

spring提供Spring Cloud作为微服务的解决方案提供了一系列组件包括服务发现、负载均衡、分布式跟踪和监控以及API网关

image-20211004141920434

spring cloud stream 构建数据流

无论您选择哪种消息传递平台,Spring Cloud Stream 都可以轻松使用和生成事件。Spring Cloud Stream 只需几行代码即可将您的微服务与实时消息传递连接起来,以帮助您构建高度可扩展的事件驱动系统。

管理您的微服务

Reactive

反应式系统具有某些特性,使其成为低延迟、高吞吐量工作负载的理想选择。Project Reactor 和 Spring 产品组合协同工作,使开发人员能够构建具有响应性、弹性、弹性和消息驱动的企业级反应式系统。

什么是反应式处理?

响应式处理是一种范例,它使开发人员能够构建可以处理背压(流控制)的非阻塞、异步应用程序。

为什么要使用反应式处理?

反应式系统更好地利用现代处理器。此外,在反应式编程中包含背压可确保解耦组件之间具有更好的弹性。

spring boot中的反应式微服务

image-20211004143010311

基于spring提供两套服务解决方案,基于netty的反应式架构 WebFlux 与传统的servlet stack Spring MVC

Spring Cloud

开发分布式系统可能具有挑战性。复杂性从应用层转移到网络层,需要服务之间进行更多的交互。使您的代码成为“云原生”意味着处理12 因子诸如外部配置、无状态、日志记录和连接到支持服务等问题。Spring Cloud 项目套件包含使应用程序在云中运行所需的许多服务。

image-20211004143416578

Service discovery

提供服务注册中心服务

流行的框架有Consul zookeeper eureka,或使用kubernetes内置系统。

并且可以使用Spring Cloud LoadBalancer进行负载均衡

API gateway

与网络层的网关有类似的功能,我们需要区分内部与外部接口以保证服务调用的安全性与统一性。在Gateway外部看来内部所有服务是一个统一的整体而内部则可以通过各自的服务名相互调用。

Cloud configuration

在云架构中配置不能简单的嵌入到应用中去。配置必须足够灵活以因对多个应用程序、环境和服务实例。并且必须在不停机的情况下处理动态变化。

Circuit breakers

分布式系统可能不可靠、会遭遇超时或失败、断路器可以解决这些问题,并且 spring cloud breakers提供了多种解决方案。

Tracing

调试分布式引用很复杂,可能出现很多不固定的问题,我们需要使用工具比如zipkin对分布式应用进行追踪。

https://www.youtube.com/watch?v=CFLZJSwbYI0

Testing

Consumer Driven Contracts

消费驱动测试,基于双方约定的接口进行测试并持久化测试用例,以保证在未来的版本内对系统的跟新能够向下兼容。

Web APP

Spring 使构建 Web 应用程序变得快速而轻松。通过删除与 Web 开发相关的大部分样板代码和配置,您可以获得一个现代 Web 编程模型,该模型简化了服务器端 HTML 应用程序、REST API 和双向、基于事件的系统的开发。

Battle-tested security

当需要保护您的 Web 应用程序时,Spring Security 支持许多行业标准的身份验证协议,包括 SAML、OAuth 和 LDAP。

从顶部获得保护 OWASP 攻击,例如会话固定、点击劫持、跨站点请求伪造等。

试试我们的保护 Web 应用程序指南

Data access made easy

spring提供JPA 帮助用户访问数据层,支持包括关系型数据库、非关系型数据库、Map-reduce框架访问数据以及基于云访问数据的多种方式。

serverless

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

什么是无服务器?

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

无服务器特性?

无服务器应用程序具有许多特定特征,包括:

带触发器的事件驱动代码执行
平台处理所有的启动、停止和扩展工作

image-20211004152750697

为什么选择 Spring 和 Serverless?

Spring 产品组合提供了强大的功能集合,可在无服务器应用程序中使用。是否访问数据春季数据, 使用企业集成模式 弹簧集成,或使用最新的反应式编程 弹簧框架项目反应堆, Spring 让开发人员从一开始就在无服务器环境中高效工作。

Spring 还可以帮助您的函数避免供应商锁定。提供的适配器春云功能 让您在他们的平台上运行代码时与供应商特定的 API 分离。

Spring Cloud 函数

春云功能 提供让 Spring 开发人员利用无服务器或 FaaS 平台的功能。

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

编程风格的选择:反应式、命令式或混合式。
函数组合和适配(例如用反应式组合命令式函数)。
支持具有多个输入和输出的反应式函数,让函数处理合并、加入和其他复杂的流操作。
输入和输出的透明类型转换。
特定于目标平台(例如 Project Riff、AWS Lambda 等;见下文)的部署打包函数。
具有灵活签名的函数(POJO 函数)——“如果它看起来像一个函数,它就是一个函数”
Spring 的习惯用法和编程模型的所有其他好处。

Spring Cloud Function 提供了适配器,以便您可以在最常见的 FaaS 服务上运行您的功能,包括 亚马逊 Lambda, Apache OpenWhisk, 微软 Azure, 和 项目 Riff.

Event Driven

事件驱动的系统反映了现代企业的实际运作方式——每天都在发生数以千计的小变化。Spring 能够处理事件并使开发人员能够围绕它们构建应用程序,这意味着您的应用程序将与您的业务保持同步。Spring 有许多事件驱动的选项可供选择,从集成和流式传输一直到云功能和数据流。

事件驱动的微服务

当与微服务结合时,事件流提供了令人兴奋的机会——事件驱动架构就是一个常见的例子。Spring 简化了事件的产生、处理和消费,提供了几个有用的抽象。

流数据

流数据表示事件的持续流。一个例子可能是股票代码。每次股票价格变化时,都会创建一个新事件。之所以称为“流数据”,是因为有数千个此类事件会产生持续的数据流。

一体化

任何事件驱动系统的基石都是消息处理。连接消息平台、路由消息、转换消息、处理消息。使用 Spring,您可以快速解决这些集成挑战。

Spring Cloud Streamsp

Spring Cloud Streamsp是spring提供的系一列技术以为流处理提供解决方案。包括 Spring Cloud Stream 、Apache Kafka、Rabbit MQ、Azure Event Hub、提供就集成解决方案。Spring Cloud Stream 还提供了对配置、内容转换、错误处理、配置管理、消费者组、分区、监控和健康检查的支持。

Spring Cloud Function

Spring Cloud Function,使您能够一次编写函数并在任何地方(AWS、Azure 等)运行它们,同时继续使用所有熟悉和全面的 Spring API。您可以将多个功能链接在一起以创建新功能。对多个输入和输出的支持使合并、加入和其他更高级的用例变得触手可及。

Spring Data Cloud

Spring Cloud 数据流

Spring Cloud Data Flow 为开发人员提供了一系列工具和自动化,用于处理各种数据源和目的地。Spring Cloud Data Flow 可帮助您跨多个云原生平台开发、部署、管理和扩展高吞吐量流数据管道。它还具有丰富的用户界面,用于构建和监控您的应用程序。

Spring Cloud Kafka Stream

Spring Cloud Stream 提供了第二个更具体的绑定器,专门用于处理 Kafka Streams。这个特殊的活页夹仍然专注于开发人员的生产力,但增加了对 KStream、KTable 和 GlobalKTable 等 Kafka 特定功能的支持。与常规的 Spring Cloud Stream 一样,binder 还负责连接到 Kafka,以及创建、配置和维护流和主题。

Batch

处理有效处理大量数据的能力使其成为许多用例的理想选择。Spring Batch 对行业标准处理模式的实现让您可以在 JVM 上构建健壮的批处理作业。从 Spring 产品组合中添加 Spring Boot 和其他组件可让您构建任务关键型批处理应用程序。

什么是批处理?

批处理是以不需要外部交互或中断的方式处理有限数量的数据。

为什么要构建批处理?

批处理是处理大量数据的一种极其有效的方式。根据 SLA 安排和优先处理工作的能力让您可以分配资源以获得最佳利用。

使用 Spring 进行批处理

Spring Batch 是 JVM 上批处理的事实标准。它实现了常见的批处理模式,例如基于块的处理和分区,让您可以创建高性能、可扩展的批处理应用程序,这些应用程序对您最关键的任务流程具有足够的弹性。Spring Boot 提供了额外级别的生产级功能,让您可以加快批处理过程的开发。

image-20211004204045034

云端批处理

批处理非常适合云计算,尤其是基础设施即服务 (IaaS)。以按需、弹性伸缩和容错的方式运行应用程序的能力都是 Spring Batch 可以使用的云特性。

与常用技术的集成

Spring Batch 与其他 Spring API 的集成让您从一开始就富有成效。随着ItemReaderItemWriter的文件,关系数据库和NoSQL存储支持通过Spring数据并通过Apache卡夫卡和RabbitMQ的消息支持支持,Spring Batch的必须处理大多数使用情况开箱即用的能力。

image-20211004204154090