Springcloud2020.0.3学习笔记(黑马+尚硅谷)(一:介绍)

微服务框架(基于SpringCloud2020.0.3的微服务架构)

需要学习的内容

image-20210815190855924image-20210815192114963image-20210815192603998

学习路径

image-20210815192645989

认识微服务

单体架构

单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。

优点

  • 架构简单
  • 部署成本低

缺点

  • 耦合度高

image-20210815192928881

分布式架构

分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。

优点:

  • 降低服务耦合
  • 有利于服务升级拓展

image-20210815193206774

缺点:

分布式架构的要考虑的问题:

  • 服务拆分粒度如何?
  • 服务集群地址如何维护?
  • 服务之间如何实现远程调用? 通过RestTemplate类,openfeign
  • 服务健康状态如何感知?

微服务

特征:
  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
  • 自治:团队独立、技术独立、数据独立,独立部署和交付
  • 面向服务:服务提供统一标准的接口,与语言和技术无关
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

image-20210713203753373

微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。

因此,可以认为微服务是一种经过良好架构设计的分布式架构方案

微服务这种方案需要技术框架来落地,全球的互联网公司都在积极尝试自己的微服务落地技术。在国内最知名的就是SpringCloud和阿里巴巴的Dubbo

image-20210815195458644

image-20210815195945256

Spring cloud

什么是 Spring cloud

构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常⻅的分布式系统模式提供了⼀种简单且易于接受的编程模 型,帮助开发⼈员构建有弹性的、可靠的、协调的应⽤程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易 ⼊⼿并快速应⽤于⽣产中。

我所理解的Spring Cloud就是微服务系统架构的⼀站式解决⽅案,在平时我们构建微服务的过程中需要做如服务发现注册、配置 中⼼、消息总线、负载均衡、断路器、数据监控等操作,⽽ Spring Cloud 为我们提供了⼀套简易的编程模型,使我们能在 Spring Boot 的基础上轻松地实现微服务项⽬的构建。

什么是分布式?

1.将各个组件分开部署,某个组件占一个服务器,互相独立,互相调用,可以将组件的功能发挥强大
2.一个业务分拆多个子业务,部署在不同的服务器上(不同的服务器,运行不同的代码,为了同一个目的)

优点:
1.模块之间独立,各做各的事,便于扩展,复用性高
2.高吞吐量。某个任务需要一个机器运行20个小时,将该任务用10台机器的分布式跑
(将这个任务拆分成10个小任务),可能2个小时就跑完了

springcloud官网

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

猜猜SpringCloud这个大集合里有多少种技术?

img

SpringCloud俨然已成为微服务开发的主流技术栈,在国内开发者社区非常火爆。

“微”力十足,互联网大厂微服务架构案例

京东的:

image-20210728173133254

阿里的:

image-20210728173223884

Spring Cloud技术栈

img

image-20210713204155887

Boot和Cloud版本选型

image-20210728182306547

更详细的版本号对应推荐

通过该地址查看更详细的版本号推荐

image-20210728182954049

Spring Boot 2.5.3 版

image-20210728183100656

Spring Cloud 2020.0.3版

Spring Cloud 的版本号并不是我们通常⻅的数字版本号,⽽是⼀些很奇怪的单词。这些单词均为英国伦敦地铁站的站名。同时根 据字⺟表的顺序来对应版本时间顺序,⽐如:最早 的 Release 版本 Angel,第⼆个 Release 版本 Brixton(英国地名),然后是 Camden、 Dalston、Edgware、Finchley、Greenwich、Hoxton。后来有了2020.0.3等数字版本

image-20210728183132205

spring cloud2020.0.3最大的变化就是移除了spring cloud netflix模块,仅仅包括了eureka模块。

既然把Netflix组件remove掉了,那么需要有替代方案,Spring Cloud团队给我们推荐了用于替代的产品:

Netflix推荐替代品说明
HystrixResilience4jHystrix自己也推荐你使用它代替自己
Hystrix Dashboard / TurbineMicrometer + Monitoring System说白了,监控这件事交给更专业的组件去做
RibbonSpring Cloud Loadbalancer忍不住了,Spring终究亲自出手
Zuul 1Spring Cloud Gateway忍不住了,Spring终究亲自出手
Archaius 1Spring Boot外部化配置 + Spring Cloud配置比Netflix实现的更好、更强大

Spring Cloud LoadBalancer是什么?

Spring Cloud Alibaba版本组件

以上替代品中,你可能最陌生、最好奇的是Spring Cloud Loadbalancer,它一度只是Spring Cloud 孵化器里的一个小项目,并且一度搁浅。后再经过重启,发展,现行使其伟大使命,正式用于完全替换 Ribbon,成为Spring Cloud负载均衡器唯一实现。

负载均衡抽象LoadBalancerClient接口有两个实现,而到了Spring Cloud 2020.0版本后,BlockingLoadBalancerClient就是唯一实现了。

接下来开发用到的组件版本

  • Cloud - 2020.0.3

  • Boot - 2.5.3

  • Cloud Alibaba - 2021.1

    官网

  • Java - Java 8

  • Maven - 3.5及以上

  • MySQL - 5.7及以上

Cloud组件停更说明

停更引发的“升级惨案” 【停更不停用(不在更新维护,但是可以用)不再发布新版本】

springcloud第一代:Spring Cloud Netflix

我们之前常用的一些SpringCloud组件大部分来自于Netflix公司,比如我们熟知的Eureka,Hystrix,Ribbon等等,然而随着Eureka不再维护且闭源,Hystrix不再开发新功能,Zuul的性能一般而2.0又迟迟出不来,Ribbon不支持webFlux的负载均衡等等 ,这些已经限制了SpringCloud的高速发展,于是大家开始把目光转向第二代组合——SpringCloud Alibaba

springcloud第二代:Spring Cloud Alibaba

Spring Cloud Alibaba 于 2018年成为SpringCloud的孵化项目,2018年7月27日 在 Spring Cloud 孵化器仓库提交第一次代码,到 2019年8月1日 在 Alibaba 仓库发布第一个正式版本。

第一代和第二代部分常用组件对比
SringCloud 第一代SringCloud 第二代
网关Zuul(Netflix)Gateway(SpringCloud)
注册中心Eureka(Netflix),Consul、ZKNacos(阿里)
配置中心SprigCloudConfigNacos(阿里),Apollo(携程)等
负载均衡Ribbon(Netflix)Loadbalancer(SpringCloud)
熔断器Hystrix(Netflix)Resilience4J(spring-cloud-r4j),Sentinel (阿里)
毕业版本依赖关系(推荐使用)
Spring Cloud VersionSpring Cloud Alibaba VersionSpring Boot Version
Spring Cloud 2020.0.12021.12.4.2
Spring Cloud Hoxton.SR92.2.6.RELEASE2.3.2.RELEASE
Spring Cloud Greenwich.SR62.1.4.RELEASE2.1.13.RELEASE
Spring Cloud Hoxton.SR32.2.1.RELEASE2.2.5.RELEASE
Spring Cloud Hoxton.RELEASE2.2.0.RELEASE2.2.X.RELEASE
Spring Cloud Greenwich2.1.2.RELEASE2.1.X.RELEASE
Spring Cloud Finchley2.0.4.RELEASE(停止维护,建议升级)2.0.X.RELEASE
Spring Cloud Edgware1.5.1.RELEASE(停止维护,建议升级)1.5.X.RELEASE

如果需要使用 Spring Cloud 2020 版本,请在 dependencyManagement 中添加如下内容

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2021.1</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

image-20210728185627558

X号的表示不再更新去维护了,死翘翘了

服务注册中心

× Eureka
√ Zookeeper(公司走保守路线使用这个)
√ Consul
√ Nacos(推荐(公司最多用的))

服务调用

√ Ribbon
√ LoadBalancer(会慢慢取代Ribbon)

服务调用2

× Feign
√ OpenFeign

服务降级

× Hystrix
√ resilience4j(国外用的多)
√ sentienl(阿里的,国内用的多)

服务网关

× Zuul
! Zuul2(估计不会出了,公司内部人员跳槽吵架原因)
√ gateway

服务配置

× Config
√ Nacos

服务总线

× Bus
√ Nacos

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值