Spring Cloud的基本概念

前言

由于SpringCloud知识点众多,篇幅较长,本次博客分为多部分,首先通过讲解spring cloud的各部分特点,和功能,然后通过一个小dome教大家搭建最基本微服务系统,希望可以给各位刚刚学习spring cloud的一点引导。

在介绍Spring Cloud之前,如果读者不了解微服务,我觉得有必要了解一下什么是微服务,可以参考我上篇博客:

https://blog.csdn.net/weixin_44209403/article/details/103494576

一、什么是Spring Cloud

1、Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发
2、一个基于Spring Boot实现的服务治理工具包,在微服务架构中用于管理和协调服务
3、主要是基于Netflix开元组件的进一步封装,可以用Spring Boot的开发风格做到一键启动和部署

二、Spring Cloud的组成

spring cloud组成
声明:图片来自互联网,借用!

1、Spring Cloud常用5大组件

  • 服务发现——Netflix Eureka
  • 客户端负载均衡——Netflix Ribbon
  • 断路器——Netflix Hystrix
  • 服务网关——Netflix Zuul
  • 分布式配置——Spring Cloud Config

2、Spring Cloud
Spring Cloud Netflix提供了服务发现、断路由、智能路由、服务监控等相关功能,供开发者快速建立弹性稳定的微服务集群,上面常用的5大组件就属于它的一部分。
下面我们来详细说明一下各组件的作用:

  • 1、Eureka
    作用: 服务的管理者(服务注册和发现)
    介绍: Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。
    组成: Eureka服务端和Eureka客户端。
    Eureka服务端用作服务注册中心。支持集群部署。
    Eureka客户端是一个java客户端,用来处理服务注册与发现。

  • 2、Ribbon
    作用: 为服务提供负载均衡算法
    1.本地负载均衡 一般使用ribbon
    2.服务器端负载均衡 一般使用nginx
    介绍: Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。
    原理: Ribbon实现负载均衡其实就是轮询机制
    计算公式: 总请求次数 % 服务器总数 取模后就调用相对应索引的服务 就可以实现本地均衡负载了 。

  • 3、Hystrix
    作用: 断路器,保护系统,控制故障范围
    介绍: Hystrix 是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等。Hystrix 能够保证在一个依赖出问题的情况下,不会导致整个服务失败,避免级联故障,以提高分布式系统的弹性。
    实现方式: 当某个服务单元发生故障之后,通过断路器的故障监控,向调用方返回一个符合预期的、可处理的备选响应,而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要的占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。

  • 4、Zuul
    作用: 具有动态路由、过滤、压力测试、监控、弹性伸缩和安全等功能,主要功能是路由转发和过滤器
    介绍: Zuul网关,网关顾名思义很好理解 就是控制网络请求出入的关卡,就比如生活中的海关,只有具有一定条件才可以通过
    原理: 网关就是做一下过滤或拦截操作 让我们的服务更加安全 当用户访问我们服务的时候先通过网关验证身份然后通过负载均衡,转发到我们的微服务上。

  • 5、Feign
    作用: 可以更快捷、优雅地调用HTTP API。
    介绍: Feign是一个声明式的Web服务客户端,使用Feign可使得Web服务客户端的写入更加方便。它具有可插拔注释支持,包括Feign注解和JAX-RS注解、Feign还支持可插拔编码器和解码器、Spring Cloud增加了对Spring MVC注释的支持,并HttpMessageConverters在Spring Web中使用了默认使用的相同方式。
    在这里插入图片描述
    注:图片来自互联网,如有问题,请及时联系。

通过上图我们可以清楚看到各个组件之间的调用处理关系,相信你看完上方各个组件的介绍,应该可以轻易理解图中的内容,如有不懂,欢迎留言提问,如果发现有什么错误,也希望可以提出,让我及时修改,谢谢!
Spring Cloud Netflix还有很多组件,我这里就介绍这几个常用的组件

三、Spring Cloud的版本
如果你刚刚接触Spring Cloud,你一定会很奇怪,为什么Spring Cloud不像其他maven依赖一样有那么明确的版本,下面我们以前来了解一下Spring Cloud的版本。

Spring版本名称 Spring Cloud版本名称
1.2.x Angel
1.3.x Brixton
1.4.x stripes Camden
1.5.x Dalston、Edgware
2.0.x Finchley
2.1.x Greenwich

1、Spring Cloud并没有熟悉的数字版本号,而是对应一个开发代号。
2、版本区分
从Angel到Greenwich可以看出,版本的第一个字母是按照A-Z顺序编排的。单词来自于英国伦敦的地铁站站名。
3、版本号
格式是:主版本号+次版本号+(修正版本号build-可选)+(编译版本号-可选)+英文常见号(重点),下面先列常见的版本进行简要说明:

  1. Alpha:内测版本,BUG会比较多,一般是开发人员在开发过程中使用;
  2. Beta:早期的版本,所有一般仍有缺陷,但无大的BUG,可能会加入新的功能,需要进行完善;
  3. GA:General Availability,正式发布的版本,官方推荐使用的版本;在国外用GA来说明是RELEASE版本;
  4. SNAPSHOT:快照版,可稳定使用,且仍在继续改进版本;
  5. Final:正式版本;
  6. SR:修正版本;
  7. Trial:试用版本,一般会有时间或功能的限制;
  8. Build:修正版;
  9. PRE:预览版本,内部测试版本,主要是给开发和测试人员测试及检查

4、如何选择大版本:
1、各个版本之间组件变化不大,但细节略有不同,比如配置项名称、或者新版本增加新的配置方式。
2、从这一点来看,选择哪个版本都不是大问题,但提醒一下,遇到坑时,最好根据版本进行查询,否则你会发现你找到的办法不行。实际上是版本不匹配。
3、如果你项目需要和其他老项目交叉,以兼容为第一要务。

四、Spring Cloud和Spring Boot是什么关系

最后我们来说一下Spring boot和Spring Cloud之间的关系,上文提到了这么多spring boot,那么可想而知spring boot和spring cloud之间一定有比较重要的关系。
1、Spring Boot 是 Spring 的一套快速配置脚手架,可以基于Spring Boot 快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的云应用开发工具;Spring Boot专注于快速、方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架;Spring Boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring Boot来实现。
2、Spring Cloud可以不基于Spring Boot吗?
Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖的关系。

所以,如果你要学习SpringCloud必须要学习SpringBoot,SpringBoot就相当于原材料,你没有原材料你就不可以做出东西来,但是原材料却可以通过其他方法做出新的东西。

五、总结:

基于Spring Boot的Spring Cloud,以它简单的配置,易于搭建的项目,这些年来越来越受开发者的欢迎,相信未来Spring Cloud的微服务可以起到引导作用,成为微服务架构的标准框架。

未完待续…

发布了13 篇原创文章 · 获赞 48 · 访问量 4295

猜你喜欢

转载自blog.csdn.net/weixin_44209403/article/details/103493907