Spring Cloud入门+深入(一)

目录

一、微服务架构

1、什么是微服务

2、架构的演变

2.1、单体应用架构:

2.2、垂直应用架构:

2.3、分布式架构:

2.4、SOA架构:

2.5、微服务架构:

 二、Spring Cloud简介

Spring Boot版本选择

SpringCloud版本选择

SpringCloud和Springboot之间的依赖关系如何看

关于Spring Cloud各种组件的停更/升级/替换


一、微服务架构

1、什么是微服务

2014年,martin fowler 发表了一篇关于微服务的博客,非常形象生动的描述微服务的设计思想等理念。

详细参照:Microservices Guide

参照:Spring Boot入门+深入(一)

2014年,Martin Fowler(**马丁·福勒** ) 提出了微服务的概念,定义了微服务是由以单一应用程序构成的小服务,自己拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用 HTTP API 通信。同时服务会使用最小的规模的集中管理能力,服务可以用不同的编程语言与数据库等组件实现。

马丁·福勒是敏捷联盟的成员,于2001年,同其他16名合著者一起协助创作了“敏捷软件开发宣言”。他负责维护一个bliki网站---一种blog和wiki的混合衍生物,他还使控制反转(Inversion of Control)“依赖注入模式(Dependency Injection)”一词得到普及。

2、架构的演变

随着互联网的发展,网站应用的规模也不断的扩大,进而导致系统架构也在不断的进行变化,从互联网早起到现在,系统架构大体经历了下面几个过程:

2.1、单体应用架构:

把所有功能都集中在一个应用中,统一部署,开发成本、部署成本和维护成本低

优点:项目架构简单,适合用户量少的项目,开发成本低,项目部署在一个节点上,维护方便。

缺点:功能集中在一个工程中,对于大型项目比一开发和维护,项目模块紧耦合,单点容错率低,无法对不同的模块功能进行针对性的优化和水平拓展

2.2、垂直应用架构:

所谓垂直应用架构,其实就是把之前的单体应用拆分成多个应用,以提升效率,比如电商系统可以拆分成:电商系统、后台系统、CMS系统

优点:项目拆分实现了流量分担,解决了并发问题,而且可以针对不同模块进行优化和水平拓展,同时不同的系统之间不会互相影响,提高容错率

缺点:系统之间互相存在,无法进行相互调用,系统之间互相独立,会造成一部分功能的冗余

2.3、分布式架构:

随着业务的增加,在垂直应用架构中冗余的业务代码越来越多,就需要将冗余的部分抽取出来,统一做成业务层单独处理,变成一个单独的服务,控制层调用不同的业务层服务就能完成不同的业务功能,具体表现就是一个项目拆分成表现层和服务层两个部分,服务层中包含业务逻辑,表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现,这就是分布式架构。

优点:抽取公共的功能作为服务层,提高代码复用。

缺点:系统间耦合度变高,调用关系错综复杂,难以维护。

2.4、SOA架构:

分布式架构中的缺点就是调用复杂,而且当服务越来越多,或者当某一个服务压力过大需要水平拓展和负载均衡,对于资源调度和治理就需要用到治理中心SOA(Service Oriented Architecture)为核心来解决,同时治理中心还可以帮助我们解决服务之间协议不同的问题。

优点:使用治理中心(ESB\dubbo)解决了服务见调用关系的自动调节

缺点:服务间会有依赖关系,一旦某个环节出错会影响较大(服务雪崩),服务关系复杂,运维、测试部署困难。

2.5、微服务架构:

微服务架构在某种程度上面架构SOA继续发展的下一步,它更加强调服务的“彻底拆分”,目的就是提高效率,微服务架构中,每个服务必须独立部署同时互不影响,微服务架构更加轻巧,轻量级。

优点:服务原子化拆分,独立打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展

缺点:分布式系统开发的技术成本高(容错、分布式事务等),复杂性更高,每个微服务进行分布式独立部署,当进行模块调用的时候,分布式将会变得更加麻烦。

微服务架构与SOA架构的不同

1. 微服务架构比SOA架构会更加的精细,让专业的人去做专业的。

2. 目的是提高效率每个服务之间互不影响,微服务架构中,每个服务需要独立部署

3. SOA架构中可能数据库存储会发生共享,微服务强调每个服务都是单独数据库,保证每个服务之间互不影响。

4. 微服务项目架构比SOA架构更加适合与互联网公司迅捷开发、快速迭代版本,因为粒度非常精细。

 二、Spring Cloud简介

Spring Cloud 发展历史

**Spring Cloud netflix -> Spring Cloud Alibaba**

        1. 2020-12-22日**Spring** 官方博客宣布,`Spring Cloud 2020.0.0`正式发布。`2020.0.0`是第一个使用新的版本号命名方案的**Spring Cloud** 发行版本。在此之前**Spring Cloud** 使用英国伦敦地铁站的命名方式来命名一个大版本(`train version`),如果不按照新的版本号命名的话,本次的版本号应该是Ilford。

        2. 更新版本没有什么大惊小怪的,但是本次更新却正式开启了**Spring Cloud Netflix** 体系的终结进程。**Netflix** 公司是目前微服务落地中最成功的公司。它开源了诸如**Eureka** 、**Hystrix** 、**Zuul** 、**Feign** 、**Ribbon** 等等广大开发者所知微服务套件,统称为**Netflix OSS** 。在当时**Netflix OSS** 成为微服务组件上事实的标准。但是在2018年**Netflix** 公司宣布其核心组件**Hystrix** 、**Ribbon** 、**Zuul** 、**Eureka** 等进入**维护状态** ,不再进行新特性开发,只修BUG。这直接影响了**Spring Cloud** 项目的发展路线,**Spring** 官方不得不采取了应对措施,在2019年的在 **SpringOne 2019** 大会中,**Spring Cloud** 宣布 **Spring Cloud Netflix项目进入维护模式** ,并在2020年移除相关的**Netflix OSS** 组件。

        3. Spring Cloud Aalibaba 成为了主流

Spring Cloud=分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶。

Spring Cloud学习前,需要学习Spring Boot。 参照:Spring Boot入门+深入(一)

Spring Cloud官网架构图

服务注册与发现:EUREKA

服务调用:NETFLIX OSS RIBBON  / NETFLIX FEIGN

服务熔断:HYSTRIX

负载均衡

服务降级

服务消息队列

配置中心管理:Spring Cloud Config

服务网关:NETFLIX ZUUL

服务监控

全链路追踪

自动化构建部署

服务定时任务调度操作

Spring Boot版本选择

git源码地址:https://github.com/spring-projects/spring-boot/releases/

SpringBoot2.0新特性:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Release-Notes

通过上面官网发现,Spring Boot官方强烈建议你升级到2.X以上版本

SpringCloud版本选择

SpringCloud官网:Spring Cloud

SpringCloud的版本关系

Spring Cloud采用了英国伦敦地铁站的名称来命名,并由地铁站名称字母A-Z依次类推的形式来发布迭代版本

SpringCloud是一个由许多子项目组成的综合项目,各子项目有不同的发布节奏。为了管理SpringCloud与各子项目的版本依赖关系,发布了一个清单,其中包括了某个SpringCloud版本对应的子项目版本。为了避免SpringCloud版本号与子项目版本号混淆,SpringCloud版本采用了名称而非版本号的命名,这些版本的名字采用了伦敦地铁站的名字,根据字母表的顺序来对应版本时间顺序。例如Angel是第一个版本,Brixton是第二个版本。当SpringCloud的发布内容积累到临界点或者一个重大BUG被解决后,会发布一个"service releases"版本,简称SRX版本,比如Greenwich.SR2就是SpringCloud发布的Greenwich版本的第二个SRX版本。

SpringCloud和Springboot之间的依赖关系如何看

Spring Cloud

往下翻

更详细的版本对应查看方法https://start.spring.io/actuator/info

版本对应严格按照官网匹配

 "spring-cloud":{
            "Hoxton.SR12":"Spring Boot >=2.2.0.RELEASE and <2.4.0.M1",
            "2020.0.4":"Spring Boot >=2.4.0.M1 and <2.5.8-SNAPSHOT",
            "2020.0.5-SNAPSHOT":"Spring Boot >=2.5.8-SNAPSHOT and <2.6.0-M1",
            "2021.0.0-M1":"Spring Boot >=2.6.0-M1 and <2.6.0-M3",
            "2021.0.0-M3":"Spring Boot >=2.6.0-M3 and <2.6.0-RC1",
            "2021.0.0-RC1":"Spring Boot >=2.6.0-RC1 and <2.6.1",
            "2021.0.0":"Spring Boot >=2.6.1 and <2.6.2-SNAPSHOT",
            "2021.0.1-SNAPSHOT":"Spring Boot >=2.6.2-SNAPSHOT"
        }

更具体版本SpringCloud官网   点击最新 后面的Reference Doc ,最上方显示版本对应关系.

Spring Cloud学习资料,参考Spring Cloud官网 Reference Doc  Spring Cloud中文

关于Spring Cloud各种组件的停更/升级/替换

Spring Cloud入门+深入(二)-实例+RestTemplate

不在能知,乃在能行。

干我们这行,啥时候懈怠,就意味着长进的停止,长进的停止就意味着被淘汰,只能往前冲,直到凤凰涅槃的一天!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杀神lwz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值