前面我们已经粗略的将项目的骨架搭建完成,并初步引入一些基础支撑功能,为后续的开发打好基础。本篇将介绍 Spring Cloud 及 Spring Cloud Alibaba 两个项目,从理论角度作个整体性掌握,后续进入开发实战作好铺垫工作。 Spring Cloud Alibaba 是 Spring Cloud 的一个子项目,在介绍 Spring Cloud Alibaba 之前,先简单聊一聊 Spring Cloud 的情况。
Spring Cloud 官方文档地址:https://spring.io/projects/spring-cloud
它是由很多个组件共同组成的一套微服务技术体系解决方案,目前最新版本是 Hoxton,它的版本并不是我们常见的大版本、小版本的数字形式,Spring Cloud 的版本规划是按伦敦地铁站的名称先后顺序来规划的,目的是为了更好的管理每个 Spring Cloud 子项目的版本,避免自己的版本与子项目的版本号混淆,所以要特别注意两个项目的版本对应情况,以免实际应用中产生不必要的麻烦。
随着新版本的迭代更新,有些低版本的 Spring Cloud 的不建议再应用于生产,比如 Brixton 和 Angel 两个版本在 2017 年已经寿终正寝。 ( Spring Cloud 与 Spring Boot 的版本对应情况,来源于官网) ( 某 Spring Cloud Greenwich 版本与子项目的版本对应情况 ) Spring Cloud 基于 Spring Boot 对外提供一整套的微服务架构体系的解决方案,包括配置管理、服务注册与服务发现、路由、端到端的调用、负载均衡、断路器、全局锁、分布式消息等,对于这些功能 Spring Cloud 提供了多种项目选择,可从官网的主要项目列表一窥端倪。 看上图有个比较突出的子项目: Spring Cloud netflix,由 Netflix 开发后来又并入 Spring Cloud 大家庭,它主要提供的模块包括:服务发现、断路器和监控、智能路由、客户端负载均衡等。但随着 Spring Cloud 的迭代,不少 Netflix 的组件进行了维护模式,最明显的莫过于 Spring Cloud Gateway 的推出来替代旧有的 Zuul 组件,有项目加入,也会有老旧项目退出舞台,这也是产品迭代的正常节奏。
这些子项目,极大的丰富了 Spring Cloud 在微服务领域中应用范围,几乎无需要借助外部组件,以一已之力打造全生态的微服务架构,并与外部基础运维组件更好的融合在一起。
下面再介绍一个近两年出现的一个新生项目 : Spring Cloud Alibaba。
官网地址:https://github.com/alibaba/spring-cloud-alibaba 它是 Spring Cloud 的一个子项目,致力于提供微服务开发的一站式解决方案,项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务,只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。 项目特性见下图: 包括一些关键组件:
以上组件都是均是开源实现方案。下面提到的几个组件都是结合阿里云的产品形态完成的功能,后续的案例开发实战不引入商业产品,需要的小伙伴可以购买后拿到对应的 API 直接接入即可。
在使用过程中,版本问题同样需要关注。 (截图来源于 Spring 官网)
不管是 Spring Cloud 还是 Spring Cloud Alibaba 项目,都是基于 Spring Boot ,所以先将 Spring Boot 掌握后,才能更好的应用这两个项目。提供的大量的 starter 组件,更是方便我们快速的应用相应的功能,由于其内置了应用容器( Tomcat ,Jetty ,Undertow ),无须再构建成 war 文件去部署,并遵从约定优于配置的原则,高效开发应用。
下面的链接是一份 Spring Boot 的全量参数配置,相信对你会有帮助。 https://docs.spring.io/spring-boot/docs/2.2.4.RELEASE/reference/html/appendix-application-properties.html
本篇介绍了课程中使用到的三个关键项目,这里只是做个简单的概念了解,后续将结合实际业务进入开发工作。采用 Spring Boot 构建项目,一般直接是 jar 的形式运行,但有些小伙伴还是有偏爱 war 包情况,哪用 Spring Boot 搭建的项目如何构建出 war 包呢?