文章目录
Spring Cloud项目的官方网址:
http://projects.spring.io/spring-cloud/
什么是SpringCloud
-
Spring Cloud是一系列框架的集合,这一系列框架全部用Spring Boot的开发风格做到一键启动和部署,由于Spirng Boot开发的便利性,巧妙的简化了分布式系统基础设施的开发;比如:服务注册发现、配置中心、负载均衡、数据监控等。
-
Spring Cloud并不是重新开发这些框架的,而是将各家公司比较成熟的框架组合起来,然后通过Spring Boot风格进行再次封装,屏蔽了复杂的配置和实现,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
-
Spring Cloud是一站式分布式系统解决方案,可以快速建立一个分布式系统基础设施。
什么是微服务
微服务是一个概念、一个项目开发的架构思想。Spring Cloud 是微服务架构的一种 Java 实现。
微服务架构模式(Microservices Architecture Pattern)的目的是将大型的、复杂的、长期运行的应用程序构建为一组相互配合的服务,每个服务都可以很容易进行局部改良。 Micro 这个词意味着每个服务都应该足够小,但是,这里的小不能用代码量来比较,而应该是从业务逻辑上比较 —— 符合 SRP(单一职责) 原则的才叫微服务。
微服务架构优势
复杂度可控、独立部署、技术选型灵活、容错、扩展。
- 复杂度可控: 在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。
- 独立部署: 由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期。
- 技术选型灵活: 微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。由于每个微服务相对简单,故需要对技术栈进行升级时所面临的风险就较低,甚至完全重构一个微服务也是可行的。
- 容错(fault isolation): 当某一组建发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,形成应用全局性的不可用。在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服务可通过重试、平稳退化等机制实现应用层面的容错。
- 扩展: 每个服务可以各自进行 水平 扩展,而且,每个服务可以根据自己的需要部署到合适的硬件服务器上。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。
SpringCloud框架特点

SpringCloud与SpringBoot版本对应关系
SpringBoot与SpringCloud需要版本对应,否则可能会造成很多意料之外的错误。
关于maven仓库的版本列表
spring-cloud-dependencies版本列表可查看:
https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies
spring-boot-starter-parent 版本列表可查看:
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent
版本对应关系
大版本对应关系:
| SpringBoot | SpringCloud | 关系 |
|---|---|---|
| 1.2.x | Angel版本(天使) | 兼容Spring Boot 1.2.x |
| 1.3.x | Brixton版本(布里克斯顿) | 兼容Spring Boot 1.3.x,也兼容Spring Boot 1.4.x |
| 1.4.x | Camden版本(卡姆登) | 兼容Spring Boot 1.4.x,也兼容Spring Boot 1.5.x |
| 1.5.x | Dalston版本(多尔斯顿) | 兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x |
| 1.5.x | Edgware版本(埃奇韦尔) | 兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x |
| 2.0.x | Finchley版本(芬奇利) | 兼容Spring Boot 2.0.x,不兼容Spring Boot 1.5.x |
| 2.1.x | Greenwich版本(格林威治) | 兼容Spring Boot 2.1.x |
| 2.2.x | Hoxton(霍克斯顿) | 兼容Spring Boot 2.2.x |
实际开发版本关系:
| spring-boot-starter-parent | spring-cloud-dependencies |
|---|---|
| 1.5.2.RELEASE | Dalston.RC1 |
| 1.5.9.RELEASE | Edgware.RELEASE |
| 2.0.2.RELEASE | Finchley.BUILD-SNAPSHOT |
| 2.0.3.RELEASE | Finchley.RELEASE |
| 2.0.6.RELEASE | Finchley.SR2 |
| 2.1.4.RELEASE | Greenwich.SR1 |
| 2.2.2.RELEASE | Hoxton SR1 |
SpringCloud常用启动依赖
Spring Cloud Netflix:是对Netfilx开发的一套分布式服务框架的封装,包括服务注册发现、负载均衡、断路器等。
spring-cloud-starter-netflix-eureka-server: 主要负责完成微服务架构中的服务治理功能中的服务端。spring-cloud-starter-netflix-eureka-client: 主要负责完成微服务架构中的服务治理功能中的客户端。spring-cloud-starter-netflix-ribbon:为服务实现负载均衡。spring-cloud-starter-netflix-hystrix:为服务提供容错保护功能,实现了线程隔离、断路器等一些列服务保护功能。spring-cloud-starter-openfeign:声明式、模板化的HTTP客户端。spring-cloud-starter-netflix-zuul:服务网关。spring-cloud-config-server:配置中心服务端。spring-cloud-starter-config:配置中心客户端。spring-cloud-starter-gateway:功能更强大的第二代服务网关,SpringCloud好像已经不会更新Zuul了,用gateway替换Zuul。
SpringCloud分布式流程总结
- 使用
Eureka作为服务注册中心完成服务注册和发现。 - 服务间通过
Feign和Ribbon实现服务的消费以及负载均衡。 - 为了使服务集群更健壮,使用
Hystrix的容错保护机制来避免微服务架构中个别服务出现异常时引起的故障蔓延。 - 只用
zuul或gateway作为服务的路由转发、权限校验、限流控制。 - 项目用到的配置信息,比如数据源,可以使用
config配置中心组件管理,配置信息可以放置到Git、SVN等,实现不重启应用的情况下更新配置。
本文深入解析SpringCloud作为一站式分布式系统解决方案的特点与优势,涵盖微服务架构原理、SpringCloud核心功能模块,以及与SpringBoot的版本对应关系,帮助读者理解微服务设计与实践。
434

被折叠的 条评论
为什么被折叠?



