赞
踩
Spring 是一款目前主流的 Java EE 轻量级开源框架,是 Java 世界最为成功的框架之一。Spring 由“Spring 之父”Rod Johnson(罗宾·约翰逊) 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。
为了降低Java开发的复杂性,Spring采用了以下4种关键策略:
Microservices 微服务:通过可独立开发的微服务快速交付生产级功能。SpringBoot的特性使得在生产环境中大规模构建和运行微服务变得非常容易。而SpringCloud则在此基础上,帮助微服务应用进一步减轻管理并提高容错能力。
Reactive 响应式编程:Spring 的异步,非阻塞架构意味着您可以使用少量资源(线程、CPU、内存),开发一个高吞吐量、高并发的应用。
Cloud 云端技术:开发分布式微服务系统具有一定的挑战性,复杂性从应用层转移到网络层,并要求在服务之间进行更多的交互。SpringCloud包含使应用程序在云中运行所需的众多服务,帮助构建云原生。
Web apps Web应用程序:这是我们最常用的一个模块,Spring提供了SpringMVC,让我们摆脱了以前使用Servlet的那种繁琐的开发方式,以更简洁和更优雅的API,来完成Web应用程序的开发。
Serverless 无服务器编程:Serverless的全称是Serverless computing无服务器运算,又被称为函数即服务(Function-as-a-Service,缩写为 FaaS),是云计算的一种模型。以平台即服务(PaaS)为基础,无服务器运算提供一个微型的架构,终端客户不需要部署、配置或管理服务器服务,代码运行所需要的服务器服务皆由云端平台来提供。Spring Cloud Function提供让Spring开发人员利用无服务器或FaaS平台的功能。
Event Driven 事件驱动:对业务事件做出反应,实时处理您的流数据。事件驱动系统反映了现代企业的实际工作方式,在微服务应用架构中被广泛使用。Spring帮助开发人员能够围绕事件构建应用程序, Spring有很多事件驱动项目,比如Streaming,Integration和Data Flow等。
Batch 批处理:批处理具有高效处理大量数据的能力, Spring Batch的标准处理模式帮助开发者在JVM上构建健壮的批处理作业和关键任务应用程序。
https://spring.io/projects/spring-boot
覆盖了:
上图是Spring官方给出的SpringMVC和Spring WebFlux的对比图,先看最上面的描述信息:
右侧是Spring MVC的描述:Spring MVC构建在Servlet API之上,使用同步阻塞I/O架构,每个线程一个请求模型。
左边是Spring WebFlux的描述:Spring WebFlux是一个从头开始构建的非阻塞web框架,它利用多核、新一代处理器并处理大量并发连接。
Spring WebFlux 作为一个响应式 (reactive-stack) web 框架补充,在 5.0 的版本开始加入到 Spring 全家桶。
这是一个完全非阻塞的,支持 Reactive Streams,运行在诸如 Netty,Undertow,以及 Servlet 3.1+ 容器上的。Spring WebFlux 可以让你使用更少的线程去处理并发请求,同时能够让你使用更少的硬件资源来拓展你的应用。
Spring MVC or WebFlux?
WebFlux 并不是 Spring MVC 替代,它主要应用还是在异步非阻塞编程模型上。如果你的项目并不是该模型或者你的应用目前本身已经足够应付当前情况,是不需要去切换成 WebFlux 的。
基于Java8的一些新特性,重新设计源码架构。
使用Spring Framework 5.0,基准版本是Java 8。Spring Framework代码现在已升级为使用Java 8中的新特性。会改进更可读和更有效的框架代码。
使用的一些Java 8特性如下:
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”.
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
简单来说就是能快速创建出生产级别的Spring应用,简化开发,约定大于配置, you can “just run”,能迅速的开发web应用,几行代码开发一个http接口。
所有的技术框架的发展似乎都遵循了一条主线规律:从一个复杂应用场景衍生一种规范框架,人们只需要进行各种配置而不需要自己去实现它,这时候强大的配置功能成了优点;发展到一定程度之后,人们根据实际生产应用情况,选取其中实用功能和设计精华,重构出一些轻量级的框架;之后为了提高开发效率,嫌弃原先的各类配置过于麻烦,于是开始提倡“约定大于配置”,进而衍生出一些一站式的解决方案。
是的,这就是Java企业级应用->JavaEE->Spring->SpringBoot的过程。
随着 Spring 不断的发展,涉及的领域越来越多,项目整合开发需要配合各种各样的文件,慢慢变得不那么易用简单,违背了最初的理念,甚至人称配置地狱。Spring Boot 正是在这样的一个背景下被抽象出来的开发框架,目的为了让大家更容易的使用 Spring 、更容易的集成各种常用的中间件、开源软件;
总结
概念:SpringBoot是一个用于快速敏捷的搭建Spring项目的脚手架;
作用: SpringBoot是为了快速创建一个大型的Spring项目;
优点:快速搭建、开箱即用、内嵌容器、零配置、微服务基础;
核心:自动装配、场景启动器。
James Lewis and Martin Fowler (2014) 提出微服务完整概念。
In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.-- James Lewis and Martin Fowler (2014)
英文文档:https://martinfowler.com/microservices/
简体中文:https://blog.cuicc.com/blog/2015/07/22/microservices/
分布式的困难
分布式的解决
原生应用如何上云。 Cloud Native
上云的困难
上云的解决
查看版本新特性:https://github.com/spring-projects/spring-boot/wiki#release-notes
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。