系列文章|云原生时代下微服务架构进阶之路 - Spring Boot

云计算 创建于:2023-05-29

通过本篇文章您可以了解到以下内容:

· Spring Boot 发展历史

· Spring Boot 核心特性

· Spring Boot 版本迁移

· 总结

Spring Boot 发展历史

首先让我们来看看,什么是 Spring Boot 呢? 简单的来说 Spring Boot 就是一个 Java Web 开发框架。Spring Boot 是基于 Spring 开发的,与此同时与 Spring 框架紧密结合,从而极大提升了 Java 开发者的开发体验。

我们知道,随着 Spring 不断的发展壮大,涉及的领域越来越多,从而对于项目整合时开发者需要配置的文件数量也随之增加。同时也加大了开发者的学习曲线。Spring Boot 正是在这样的一个背景下被创造出来的。当我们谈到Spring Boot 的发展历史时,我们首先要从一个 Jira 说起。

早在2012年的10月12日,Mike Youngstrom 在 Spring jira 中提交了一个名为Improved support for 'containerless' web application architecturesSpring (Spring 框架中支持无容器 Web 应用程序体系结构)的请求。在这个请求中 Mike Youngstrom 对现有开发人员需要面临克服的学习曲线进行了一一阐述:

英文描述:

· web.xml and other Servlet oriented configuration concepts

·  war directory structure

· Container implementation specific items (e.g. ports, thread pools, etc.)

· Complex Classloading hierarchies

· Monitoring and management facilities configured outside of the application

· Logging facilities

· Configuration of application context roots

· So forth

中文描述:

· web.xml以及其他面向Servlet配置的概念。

· war目录结构

· 容器实现特定项(如端口、线程池等)

· 复杂类加载层次结构

· 应用程序外部配置的监控和管理设施

· 日志工具

· 应用程序上下文的配置

同时 Mike Youngstrom 指出为了实现这种简化,认为 Spring 不需要创建一个全新的 http引擎。它可以简单地利用嵌入式 servlet 容器,如 Jetty。尽管它需要尽可能多地抽象配置。

Jira的详细内容可以识别二维码,参考以下内容: 

两年后也就是2014年的4月 Spring Boot 1.0.0 正式发布,从那以后一些Spring Boot 的版本也随之而出,以下是关于各个 Spring Boot 主要版本发布的说明,识别二维码立即查看:

Spring boot 1.1 – Spring Boot 2.4

Spring Boot 2.5

Spring Boot 2.6

Spring Boot 2.7

正是由于 Spring Boot 的简单、快速、开箱即用等特性,使得 Java 开发人员能够快速大规模采用,并且大大降低了学习曲线。正如JRebel 的 2022 年开发者生产力报告中提到的那样,Spring Boot 已经作为 Java 开发微服务首选的框架,并且占有主导位置。

(jrebel-2022-java-developer-productivity-report)

Spring Boot 核心特性

核心特性一

遵循约定大于配置的核心思想。使用Spring Boot 我们只需要进行非常少的配置,而且大多数的情况可以使用默认配置即可。

核心特性二

相比传统 Spring 项目例如 Spring MVC,我们可以完全不使用 XML 配置,只需要使用自动配置以及 Java Config 方式即可。

核心特性三

内嵌 Servlet 容器,降低了对环境的依赖程度,以及大大减少了学习成本,相比war方式的部署,可以直接使用 jar 的方式进行部署,同时可以通过简单的命令 java -jar xx.jar 进行启动。

核心特性四

依赖管理 Spring Boot 提供 starter 机制,从而大大简化了 Maven 配置。此外可以通过识别二维码内容:

进行项目构建。通过选择添加项目所需要的依赖,从而帮助开发者快速构建项目骨架,例如常用的 spring-boot-starter-web 等依赖。

核心特性五

应用的可观测性,Spring Boot 提供了对当前应用可观测的解决方案,也就是我们熟知的actuator。实现这种功能,只需要添加spring-boot-starter-actuator,我们就可以获取面向生产就绪的监控数据,如应用运行时状态等,从而可以帮助开发和运维人员快速定位系统问题。

核心特性六

对 Spring 自动装配,Spring Boot 会为 jar包的类进行自动对 Bean 的装配。这样会极大减少为们需要使用的配置。这种操作可以覆盖大多数的开发场景,如果实际开发过程中我们需要配置特定的 Bean,可以使用Spring Boot 自定义自动配置的能力。

Spring Boot 版本迁移

首先我们来看看 Spring Boot 官方对于版本发布的说明:

可以看到的是,主要版本的发布周期是每六个月一次,同时对于每一个主要的版本,无论是开源社区的版本还是商业支持的版本都会有与之对应的 End of Support 日期。以下就是主要版本的时间周期情况。

此外一个主要的新版本发布可能会带来一些新的功能以及老旧 Bug 的修复。那么如果选择进行新版本的升级,最佳升级的路径是怎样的呢?关于这个问题,大体可以理解分为两类:

第一类: Spring Boot 1.x的版本到Spring Boot 2.0

对于 Spring Boot 1.x 的版本目前早已经不再维护,如果需要进行版本的升级,可以参考官方给出的迁移实践路径,识别二维码,查看对应内容:

第二类: Spring Boot 2.x 版本的升级

比如,是否因为版本的升级,修改或者重命名一些配置文件,亦或有一些依赖已经在新的版本中进行了移除? 正是因为诸如此类的问题,从 Spring Boot 的角度,提供了一个关于迁移的开源项目,我们称之为spring-boot-properties-migrator。

如果需要启用该特性需要将下方的依赖添加到所对应的工程当中(以 Maven 为例)

对于这种特性的详细说明,我们可以在对应的Spring Boot 官方文档中查看,识别二维码,立即查看以Spring Boot2.7.3 文档进行说明内容。

总结

回顾全篇内容,整体包括以下内容:

· 首先在开篇我们对 Spring Boot 的发展历史有了一个全面清晰的了解。

· 其次我们对 Spring Boot 的核心特性进行了深入展开的讨论。

· 最后在关于 Spring Boot 版本迁移的方面给出了最佳实践路径。

至此我们可以利用 Spring Boot 来构建每一个微服务,那么在微服务架构体系中我们遇到的常见问题又如何解决呢? 比如微服务体系下注册中心的搭建、微服务之间调用的负载均衡、熔断、降级、限流等,这些问题 Spring又会给出哪些开箱即用的解决方案呢? 在下一章节中我们会深入了解 Spring Cloud,微服务架构的解决方案。敬请期待!

参考链接:

1.https://github.com/spring-projects/spring-boot

2.https://docs.spring.io/spring-boot/docs/2.7.3/reference/pdf/spring-boot-reference.pdf

3.https://www.jrebel.com/resources/java-developer-productivity-report-2022

内容来源|公众号:VMwareTanzu 云原生

 

 

 

原文地址:https://my.oschina.net/u/4238514/blog/5589481

免责声明:本文来源于互联网,版权归合法拥有者所有,如有侵权请公众号联系管理员

* 本站提供的一些文章、资料是供学习研究之用,如用于商业用途,请购买正版。

VMware中国研发中心