Spring Cloud

SpringCloud 的25连环炮:https://mp.weixin.qq.com/s/3z_aRi89NWFtNTY2G-BIeg

谈谈几个 Spring Cloud 常见面试题及答案: https://mp.weixin.qq.com/s/MLL05skoddc5yHuQHoRgjA

Spring Cloud系列之Eureka:https://www.jianshu.com/p/4524240a0c8e

Spring Cloud系列之配置中心Config:https://www.jianshu.com/p/7f4ec80f2a8f

Spring Cloud系列之gateway:https://www.jianshu.com/p/db1365a6f624

Spring Cloud系列之Feign:https://www.jianshu.com/p/fc3aad72050d

Spring Cloud系列之Hystrix:https://www.jianshu.com/p/7802aaaac7a9

Spring Cloud系列之链路追踪:https://www.jianshu.com/p/091dac01470e

1.spring cloud

1.1.介绍

Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、 微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config、Spring Cloud Netflix、 Spring Cloud0 CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring Cloud Commons、 Spring Cloud Zookeeper、Spring Cloud CLI等项目。

SpringBoot与SpringCloud的版本对应详细版

spring boot 大版本 1.X,2.X,3.X相互不兼容,甚至是部分语法配置都不一样。尤其是3.X 最低运行依赖jdk17。

1.2.微服务架构

"微服务架构"在这几年非常的火热,以至于关于微服务架构相关的开源产品被反复的提及(比如:netflix、dubbo), Spring Cloud也因Spring社区的强大知名度和影响力也被广大架构师与开发者备受关注。那么什么是"微服务架构"呢? 简单的说,微服务架构就是将一个完整的应用从数据存储开始垂直拆分成多个不同的服务,每个服务都能独立部署、独立维护、独立扩展, 服务与服务间通过诸如RESTful API的方式互相调用。对于"微服务架构",大家在互联网可以搜索到很多相关的介绍和研究文章来进行学习和了解。

1.3.服务治理

在简单介绍了Spring Cloud和微服务架构之后,下面回归本文的主旨内容,如何使用Spring Cloud来实现服务治理。 由于Spring Cloud为服务治理做了一层抽象接口,所以在Spring Cloud应用中可以支持多种不同的服务治理框架, 比如:Netflix Eureka、Consul、Zookeeper。在Spring Cloud服务治理抽象层的作用下,我们可以无缝地切换服务治理实现, 并且不影响任何其他的服务注册、服务发现、服务调用等逻辑。所以,下面我们通过介绍两种服务治理的实现来体会Spring Cloud这一层抽象所带来的好处。

1.4.组件

  • 服务注册中心
    • Spring Cloud Netflix Eureka
  • 服务调用方式
    • openFeign
  • 服务网关
    • Spring Cloud Netflix Zuul
  • 断路器
    • Spring Cloud Netflix Hystrix
  • 分布式配置
    • Spring Cloud Config
  • 服务跟踪
    • Spring Cloud Sleuth
  • 消息总线
    • Spring Cloud Bus
  • 数据流
    • Spring Cloud Stream
  • 批量任务
    • Spring Cloud Task

2.介绍组件

2.1.服务治理

  • Spring Cloud Eureka

Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。 而Spring Cloud Netflix项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。 下面,就来具体看看如何使用Spring Cloud Eureka实现服务治理。

  • Consul

除了Eureka之外,还有Consul和zookeeper作为注册中心。 Consul是一个分布式高可用的系统,它包含多个组件,但是作为一个整体,在微服务架构中为我们的基础设施提供服务发现和服务配置的工具。它包含了下面几个特性:

  • 服务发现
  • 健康检查
  • Key/Value存储
  • 多数据中心

官网:https://www.consul.io/

2.3.服务消费

  • 简单使用消费者–LoadBalancerClient

    在Spring Cloud Commons中提供了大量的与服务治理相关的抽象接口,包括DiscoveryClient、这里我们即将介绍的LoadBalancerClient等。 对于这些接口的定义我们在上一篇介绍服务注册与发现时已经说过,Spring Cloud做这一层抽象,很好的解耦了服务治理体系,使得我们可以轻易的替换不同的服务治理设施。 从LoadBalancerClient接口的命名中,我们就知道这是一个负载均衡客户端的抽象定义,下面我们就看看如何使用Spring Cloud提供的负载均衡器客户端接口来实现服务的消费。

  • 便捷使用消费者–Ribbon(推荐)

    我们已经学会如何通过LoadBalancerClient接口来获取某个服务的具体实例,并根据实例信息来发起服务接口消费请求。 但是这样的做法需要我们手工的去编写服务选取、链接拼接等繁琐的工作,对于开发人员来说非常的不友好。 所以,下来我们看看Spring Cloud中针对客户端负载均衡的工具包:Spring Cloud Ribbon。

  • Spring Cloud Ribbon

    基于Netflix Ribbon实现的一套客户端负载均衡的工具。它是一个基于HTTP和TCP的客户端负载均衡器。它可以通过在客户端中配置ribbonServerList来设置服务端列表去轮询访问以达到均衡负载的作用。 当Ribbon与Eureka联合使用时,ribbonServerList会被DiscoveryEnabledNIWSServerList重写,扩展成从Eureka注册中心中获取服务实例列表。 同时它也会用NIWSDiscoveryPing来取代IPing,它将职责委托给Eureka来确定服务端是否已经启动。 而当Ribbon与Consul联合使用时,ribbonServerList会被ConsulServerList来扩展成从Consul获取服务实例列表。同时由ConsulPing来作为IPing接口的实现。 我们在使用Spring Cloud Ribbon的时候,不论是与Eureka还是Consul结合,都会在引入Spring Cloud Eureka或Spring Cloud Consul 依赖的时候通过自动化配置来加载上述所说的配置内容,所以我们可以快速在Spring Cloud中实现服务间调用的负载均衡。

  • 生产环境的消费者–Feign

    Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端。它使得编写Web服务客户端变得更加简单。 我们只需要通过创建接口并用注解来配置它既可完成对Web服务接口的绑定。它具备可插拔的注解支持,包括Feign注解、JAX-RS注解。 它也支持可插拔的编码器和解码器。Spring Cloud Feign还扩展了对Spring MVC注解的支持,同时还整合了Ribbon和Eureka来提供均衡负载的HTTP客户端实现。

2.4.分布式配置中心

  • Spring Cloud Config

是Spring Cloud团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分。 其中服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密/解密信息等访问接口; 而客户端则是微服务架构中的各个微服务应用或基础设施,它们通过指定的配置中心来管理应用资源与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。 Spring Cloud Config实现了对服务端和客户端中环境变量和属性配置的抽象映射, 所以它除了适用于Spring构建的应用程序之外,也可以在任何其他语言运行的应用程序中使用。 由于Spring Cloud Config实现的配置中心默认采用Git来存储配置信息,所以使用Spring Cloud Config构建的配置服务器, 天然就支持对微服务应用配置信息的版本管理,并且可以通过Git客户端工具来方便的管理和访问配置内容。 当然它也提供了对其他存储方式的支持,比如:SVN仓库、本地化文件系统。

2.5.

2.6.

2.7.

2.8.

2.9.

2.10.


文章信息

张雪随笔
master
Homepage
Issues
Download

This Software is under the terms of The Unlicense.