Spring Cloud基本介绍

1.概念

Spring Cloud是实现微服务架构的一系列框架的有机集合。

是在Spring Boot基础上构建的,用于简化分布式系统构建的工具集。是拥有众多子项目的项目集合。利用Spring Boot的开发便利性,巧妙地简化了分布式系统基础设施(服务注册与发现、熔断机制、网关路由、配置中心、消息总线、负载均衡、链路追踪等)的开发。

2.版本

  1. 版本过程:版本名.版本号。

  2. 版本名:伦敦地铁字母顺序。

  3. 版本号:M(milestone):里程碑,

    ​ SR(Service Releases):稳定版,

    ​ RC(Release Candidate):稳定版的候选版,也就是稳定版的最后一个版本。

3.整体架构

  1. 服务注册与发现组件:Eureka,Zookeeper,Consul,Nacos等。Eureka基于REST风格的。

  2. 服务调用组件:Hystrix(熔断降级,在出现依赖服务失效的情况下,通过隔离 系统依赖服务 的方式,防止服务级联失败,同时提供失败回滚机制,使系统能够更快地从异常中恢复),Ribbon(客户端负载均衡,用于提供客户端的软件负载均衡算法,提供了一系列完善的配置项:连接超时、重试等),OpenFeign(优雅的封装Ribbon,是一个声明式RESTful网络请求客户端,它使编写Web服务客户端变得更加方便和快捷)。

  3. 网关:路由和过滤。Zuul,Gateway。

  4. 配置中心:提供了配置集中管理,动态刷新配置的功能;配置通过Git或者其他方式来存储。

  5. 消息组件:Spring Cloud Stream(对分布式消息进行抽象,包括发布订阅、分组消费等功能,实现了微服务之间的异步通信)和Spring Cloud Bus(主要提供服务间的事件通信,如刷新配置)

  6. 安全控制组件:Spring Cloud Security 基于OAuth2.0开放网络的安全标准,提供了单点登录、资源授权和令牌管理等功能。

  7. 链路追踪组件:Spring Cloud Sleuth(收集调用链路上的数据),Zipkin(对Sleuth收集的信息,进行存储,统计,展示)。

4.Spring Cloud Context

  1. 我们知道Spring Boot中应用上下文通过application.yml配置。

  2. Bootstrap上下文(Spring Cloud提供,也叫引导程序上下文)

    ​ Spring Cloud启动的时候会创建一个bootstrap的上下文,它是应用的父级上下文(请注意这里所说的bootstrap指的是启动最开始时加载的配置项,与bootstrap.yml或者说bootstrap.properties是两码事);它负责从一些外部环境中加载配置项,如配置中心;这部分配置项的优先级是最高的,因此它不会被其它的配置文件中加载的配置项给覆盖。

    ​ 它是主程序的父级上下文,负责从外部资源中(Git仓库)加载配置属性 和 解密本地外部配置文件中的属性。是所有Spring程序的外部属性来源。通过Bootstrap加载进来的属性的优先级较高,不能被本地配置覆盖。

    3.加载顺序

    Spring Cloud应用加载的配置项可以来自于以下几个位置:

​     启动命令中指定的配置项 -> 配置中心中的配置文件  ->  本地的application.properties(yml)  -> 本地boostrap.properties(yml)   这几个位置的配置项从上往下优先级递减,即从上面位置加载的配置项会覆盖下面位置加载的配置项。如下面代码中 配置中心加载的配置项优先级要高于bootstrap.yml中加载的配置项

    4.application上下文

Bootstrap上下文是application上下文的父级。子级从父级继承配置文件和属性。

bootstrap.yml中的属性 会添加到子级的上下文。它们的优先级低于application.yml和其他添加到子级中作为创建Spring Boot应用的属性源,boostrap.yml中的属性具备非常低的优先级,因此可以作为默认值。

Bootstrap中上下文的属性优先,但是注意这些属性并不包括任何来自于bootstrap.yml中的属性。

5.Spring Cloud Commons

​ 将服务发现,负载均衡,断路器等封装在Commons中,供Cloud客户端使用,不依赖于具体的实现(Eureka,Consul),类似于jdbc提供了一套规范,数据库厂商来实现它。

例如:

org.springframework.cloud.client.discovery.DiscoveryClient

是Spring Cloud中用来进行服务发现的顶级接口,在Netflix Eureka或者Consul中都有相应的具体实现类。

DiscoveryClient目前的实现有Spring Cloud Netflix Eureka、Spring Cloud Consul Discovery和Spring Cloud Zookeeper Discovery。

org.springframework.cloud.client.serviceregistry.ServiceRegistry接口实现了服务注册和服务下线。

6.小结

Spring Cloud目前只是Java世界中微服务实践的最佳落地方案,是一个基于Spring Boot的服务治理工具包。并不能代表微服务或者微服务架构。

微服务是一种架构理念:重点是微服务设计原则,不用Spring cloud也能实现微服务,重在架构理念。

发布了45 篇原创文章 · 获赞 1 · 访问量 2486

猜你喜欢

转载自blog.csdn.net/Forest24/article/details/104597471