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

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

  • 回顾
  • Spring 历史简介
  • 微服务开发利器 Spring Boot & Spring Cloud 宏观介绍
  • Spring Native 彻底助您开启云原生之旅
  • 总结

回顾

首先让我们做一个简单的回顾:

在之前的系列文章中我们依次谈到了 Event Storming 以及 Boris 和 Snap-E。我们将这三步骤称之为微服务拆分的三把利器,通过它们我们可以从业务角度顺利完成微服务的划分。

同时我们知道,微服务架构的实现可以大体分为两部分:

第一部分即是通过从业务角度,专业的工程方法完成微服务的划分。

第二部分即是通过技术的支持完成微服务架构落地开发的工作。

对于第二部分的内容,一个成熟、高效、开箱即用的微服务开发框架就变得尤为重要,而在 Java 的世界里,我们就不得不提到应用最为广泛的 Spring。

如上图所示,关于 2021 年 JVM 生态的一份统计报告,从报告中可以清楚的看到 Spring Boot 框架已经成为Java微服务开发框架的首选,并且相比其它框架而言,具有压倒性的优势。

本篇文章是 Spring 系列的第一篇,首先会从 Spring 历史说起,接着会对微服务开发利器 Spring Boot 以及 Spring Cloud 进行宏观上的介绍,最后会谈到 Spring 黑科技之 Spring Native。

Spring 历史简介

提到 Spring 还要从一本书说起,相信大家都听过,它就是《Expert One-to-One J2EE Design and Development》,这本书是由 Rod Johnson 撰写的。在这本书中介绍了当时 Java 企业级应用程序的开发情况,以及 EJB 组件框架中存在的一些缺陷。同时提出了基于依赖注入的解决方案。而这本书中的思想也恰恰是 Spring 最初的原型。

随着时间的推移,Spring 项目也迎来了几个比较重要的时间节点,如下图所示:

  • 2004 年 3 月 Spring Framework 1.0 Final Released,也就是 1.0 的版本正式发布。
  • 2009 年 8 月负责开发和维护 Spring的SpringSource 被 VMware 收购。
  • 2013 年 4 月 VMware 和 EMC 创建了Pivotal,Spring 项目转移到了 Pivotal,并有 Pivotal 主导和维护该项目。
  • 2014 年 4 月 Spring Boot 1.0 GA Released,成为业界最广泛使用的 Java 开发框架。
  • 2015年 3月 Spring Cloud 1.0.0 Available,提供了开箱即用的微服务架构解决方案。
  • 2019年 Pivotal 回归到了 VMware,随之 Spring 由 VMware 负责开发、维护和主导。

微服务开发利器 Spring Boot & Spring Cloud

谈到 Spring Boot 相信大家比较熟悉了,通过 Spring Boot 我们可以快速、轻松的创建生产级的、基于 Spring 的应用程序。相比传统Java 技术框架,它具备的优势如下:

  • 快速构建 Spring 应用程序。
  • 提供 Starter 依赖从而简化应用程序的构建配置。
  • 内嵌 Tomcat、Jetty 或者 Undertow,不需要通过 WAR 方式进行部署。
  • 不需要编写 XML 文件。
  • 面向生产就绪的监控数据 Actuator,如应用运行时状态的检查等。
  • 通过集成插件亦或 Spring Initializr 快速创建项目。

有了 Spring Boot 我们可以快速的构建单个的应用程序,但是如果需要构建整个微服务架构,单单采用 Spring Boot 是不够的,Spring Cloud 的出现就是为了解决微服务架构中的共性问题,采用开箱即用的组件,帮助开发者快速搭建或者解决微服务架构设计中遇到的一些共性问题。Spring Cloud 用于构建分布式系统中的一些常见模式(服务发现-注册中心、网关路由、配置管理、熔断、降级、限流等)通过简单的配置完成具体的功能实现,其运行的本质是通过添加对应组件的依赖包方式。

(架构图)

Service registry

服务发现-注册中心,提供了 Eureka、Zookeeper、Consul 等组件可以选择,同时通过简单的注解编写和 yaml 配置,可以帮助您迅速搭建微服务架构中注册中心模块。

API Gateway

网关模块,由最开始的 Zuul 再到如今的 Spring Cloud Gateway。提供了开箱即用的网关解决方案。包括常见的路由、负载均衡、鉴权等功能。

Distributed tracing

链路追踪,主要目的是完成整个微服务系统中监控模块,包括微服务之间调用关系、耗时、问题定位等功能。

Config server

统一配置中心,每一个微服务可以理解为一个 Config Client。通过例如 Git 等方式进行配置的保管,通过 Config server 完成统一更新。

Circuit breaker

应用级别高可用解决方案,包括熔断、降级、限流等功能。开箱即用的使用方式,通过添加对应的依赖,再加上少量的代码注解以及 yaml 配置。

HTTP调用

OpenFeign,简化 HTTP 调用过程中的代码量书写,同时集成了 Circuit breaker,可以对本次请求完成熔断、降级、限流等功能,另外可以使用 URLconnection、Httpclient、OKhttp 等方式。

通过 Spring Boot 来构建每一个微服务,通过 Spring Cloud 提供开箱即用的组件可以帮助我们解决微服务架构开发中遇到的共性问题。

一方面 Spring Boot 一直致力于框架本身的性能优化,另一方面是否可以通过新的技术,使得 Spring 对于应用的启动速度以及内存使用达到极致? 答案是肯定的,它就是 Spring Native。

Spring Native 彻底助您开启云原生之旅

首先来让我们看看关于 Spring Native 的介绍:

英文:

Spring Native provides support for compiling Spring applications to native executables using the GraalVM native-image compiler.

Compared to the Java Virtual Machine, native images can enable cheaper and more sustainable hosting for many types of workloads. These include microservices, function workloads, well suited to containers, and Kubernetes.

Using native image provides key advantages, such as instant startup, instant peak performance, and reduced memory consumption.

中文:

Spring Native 可以使得 Spring 应用程序以 GraalVM 原生镜像的方式进行运行。

与 Java 虚拟机相比,native image 可以为许多类型的工作负载提供更经济、更可持续的托管。这些包括微服务、非常适合容器的功能工作负载和 Kubernetes。

使用 native image 这种方式具备一些关键优势,如即时启动、即时峰值性能和减少内存消耗。

如果对 Spring Native 进行总结式的概括,那么可以理解为以下几个特点:

  • 更快的启动、快速响应扩容需求、更快地响应用户请求
  • 更适合本地云计算,尤其是无服务器计算
  • 更少的内存需求
  • 节省资源成本
  • 更多应用程序实例

Spring native 的出现改变了传统依托于 JVM 的这种方式,使得 Spring 应用借助于 GraalVM 这种方式无论是从启动速度,还是内存需要都做到了极致的提升和改进。

总结

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

  • 首先在开篇我们了解到了 Spring 的历史。
  • 其次对微服务开发利器 Spring Boot 和Spring Cloud 进行了宏观的介绍。
  • 最后对 Spring Native 进行了宏观的介绍。

本篇文章是从宏观的角度对 Spring 做了一个整体的介绍,并没有一一进行深入介绍,在后续系列文章中会分门别类的对 Spring Boot、Spring Cloud 以及 Spring Native 进行专门深入的讲解。敬请期待!

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

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/4238514/blog/5581803