一篇文章带你了解Spring Cloud 基础组件

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 想学习Spring Cloud,需要哪些基础,需要了解哪些spring cloud模块?今天一篇文章带你了解Spring Cloud 基础。

简介

首先,Spring Cloud是一系列框架的有序集合,它包括:服务发现注册配置中心消息总线负载均衡断路器数据监控等。并且这些都可以用 Spring Boot的开发风格做到一键启动和部署

其次,Spring Cloud并没有重复 制造轮子,它只是通过Spring Boot风格进行再封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。如图所示:

在这里插入图片描述

Spring Cloud Config

服务配置中心(Spring Cloud Config)将所有的服务配置文件放到本地仓库或者远程仓库,配置中心负责读取仓库的配置文件,其他服务向配置中心读取配置。

Spring Cloud Config使得服务的配置统一管理, 并可以在不手动重启服务的情况下进行配置文件的刷新。

Spring Cloud Netflix

通过包装Netflix公司的微服务组件实现,也是Spring Cloud核心组件,包括EurekaHystrixZuulArchaius

Eureka

首先,Eureka是Netflix开发的服务发现框架;Spring Cloud将它集成在其子项目spring- cloud-netflix中,以实现Spring Cloud的服务发现功能。

Eureka包含两个组件:Eureka ServerEureka Client

Eureka Server 提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有 可用服务节点的信息,而且服务节点的信息可以在界面中直观地看到。

Eureka Client是一个Java客户端,用于简化与Eureka Server的交互, 客户端同时也是一个内置的、使用轮询(round-robin)负载算法的负载均衡器。

在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒, 如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,那么 Eureka Server将会从服务注册表中把这个服务节点移除(默认时间为90 秒)。

Hystrix

Hystrix熔断器组件。它通过控制服务的API接口的熔断来转移故 障,防止微服务系统发生雪崩效应。另外,Hystrix能够起到服务限流和服务降级的作用。使用Hystrix Dashboard组件监控单个服务的熔断状 态,使用Hystrix Turbine组件可以监控多个服务的熔断器的状态。

Zuul

智能路由网关组件。能够起到智能路由和请求过滤的作用,内部服务API接口通过Zuul网关统一对外暴露,防止内部服务敏感信息对外暴 露。也可以实现安全验证、权限控制的功能。

Feign

Spring Cloud中,使用Feign非常简单—创建一个接口,并在接口 上添加一些注解,代码就完成了。Feign支持多种注解,例如Feign自带 的注解或者JAX-RS注解等。

Spring Cloud对Feign进行了增强,使Feign支持Spring MVC注解,并整合RibbonEureka,从而让Feign的使用更加方便。

Spring Cloud Feign帮助我们定义和实现依赖服务接口。在Spring Cloud Feign的实现下,只需要创建一个接口并用注解方式配置它,即可 完成服务提供方的接口绑定,简化了在使用Spring Cloud Ribbon时自行 封装服务调用客户端的开发工作量。

Ribbon

Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工 具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模板请求,自动转换成客户端负载均衡的服务调用。

Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在于每 一个Spring Cloud构建的微服务和基础设施中。因为微服务间的调用、 API网关的请求转发等内容,实际上都是通过Ribbon来实现的,包括后续我们将要介绍的Feign,它也是基于Ribbon实现的工具。所以,对 Spring Cloud Ribbon的理解和使用,对于我们使用Spring Cloud来构建微服务非常重要。

Archaius

Archaius是用于配置管理API的组件,是一个基于Java的配置管理 库,主要用于多配置的动态获取。Archaius是Netflix公司开源项目之 一,基于Java的配置管理类库,主要用于多配置存储的动态获取。它的 主要功能是对Apache Common Configuration类库的扩展。在云平台开发 中可以将其用作分布式配置管理依赖构件。同时,它有如下一些特性:

  • 动态类型化属性
  • 高效和线程安全的配置操作
  • 配置改变时的回调机制
  • 轮询框架JMX,通过Jconsole检查和调用操作属性
  • 组合配置。

Spring Cloud Bus

Spring Cloud Bus消息总线组件,常和Spring Cloud Config配合使 用,用于动态刷新服务的配置。Spring Cloud是按照Spring的配置对一系列微服务框架的集成,而Spring Cloud Bus是其中一个微服务框架,用于 实现微服务之间的通信。

Spring Cloud Bus整合Java的事件处理机制和消息中间件消息的发送和接收,主要由发送端、接收端和事件组成。针对不同的业务需求,可 以设置不同的事件,发送端发送事件,接收端接收相应的事件,并进行 相应的处理。

Spring Cloud Sleuth

Spring Cloud Sleuth是服务链路追踪组件,封装了DapperZipkinKibina等组件,可以实时监控服务链路的调用状况。

在微服务系统中,随着业务的发展,系统会变得越来越大,那么各 个服务之间的调用关系也就变得越来越复杂。一个HTTP请求会调用多 个不同的微服务来处理,并返回最后的结果,在这个调用过程中,可能 会因为某个服务出现网络延迟过高或发送错误导致请求失败,这个时 候,对请求调用的监控就显得尤为重要了。Spring Cloud Sleuth提供了分 布式服务链路监控的解决方案。下面介绍Spring Cloud Sleuth整合Zipkin 的解决方案。

Zipkin是Twitter的一个开源项目,它基于Google Dapper实现。我们 可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的 REST API接口来辅助查询、跟踪数据,以实现对分布式系统的监控, 从而及时发现系统中出现的延迟过高问题

除了面向开发的API接口之 外,它还提供了方便的UI组件,可帮助我们直观地搜索跟踪信息和分析 请求链路明细,比如可以查询某段时间内各用户请求的处理时间。

Spring Cloud Data Flow

Spring Cloud Data Flow是大数据操作组件,它是Spring XD的替代 品,也是一个混合计算模型,可以通过命令行的方式操作数据流。

Spring Cloud Consul

该组件是Spring Cloud对Consul的封装。和Eureka类似,它是一个服务注册和发现组件。

Spring Cloud Zookeeper

该组件是Spring Cloud对Zookeeper的封装,也用于服务注册和发现。

Spring Cloud Stream

该组件是数据流操作组件,可以封装RedisRabbitMQKafka等组件,实现消息的接收和发送。

Spring Cloud CLI

该组件是对Spring Boot CLI的封装,可以让用户以命令行方式快速 搭建和运行容器。

Spring Cloud Task

该组件基于Spring Tsak,提供任务调度和任务管理的功能。

总结

这里接给大家介绍一下Spring Cloud 各个组件的概念,都是一些概念性的东西,让它在小伙伴们脑海里先形成一个印象,方便后续的讲解。

后面会对其中的组件一一讲解,如果对微服务感兴趣的小伙伴抓紧订阅收藏哦~,防止下次想看就找不到了~

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2天前
|
XML Java 数据格式
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
7 1
|
2天前
|
XML druid Java
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
6 0
|
17小时前
|
负载均衡 Java 开发者
细解微服务架构实践:如何使用Spring Cloud进行Java微服务治理
【6月更文挑战第30天】Spring Cloud是Java微服务治理明星框架,整合Eureka(服务发现)、Ribbon(客户端负载均衡)、Hystrix(断路器)、Zuul(API网关)和Config Server(配置中心),提供完整服务治理解决方案。通过Eureka实现服务注册与发现,Ribbon进行负载均衡,Hystrix确保服务容错,Config Server集中管理配置,Zuul则作为API入口统一处理请求。理解和使用Spring Cloud是现代Java开发者的关键技能。
13 2
|
2天前
|
负载均衡 Java API
使用Spring Cloud构建Java微服务架构
使用Spring Cloud构建Java微服务架构
|
2天前
|
负载均衡 算法 Java
Spring Cloud Netflix 之 Ribbon
Spring Cloud Netflix Ribbon是客户端负载均衡器,用于在微服务架构中分发请求。它与RestTemplate结合,自动在服务发现(如Eureka)注册的服务之间进行调用。配置包括在pom.xml中添加依赖,设置application.yml以连接Eureka服务器,并在配置类中创建@LoadBalanced的RestTemplate。通过这种方式,当调用如`/user/userInfoList`的接口时,Ribbon会自动处理到多个可用服务实例的负载均衡。
|
3天前
|
NoSQL 前端开发 Java
技术笔记:springboot分布式锁组件spring
技术笔记:springboot分布式锁组件spring
|
2天前
|
Java API 开发者
Spring Cloud Gateway中的GlobalFilter:构建强大的API网关过滤器
Spring Cloud Gateway中的GlobalFilter:构建强大的API网关过滤器
6 0
|
2天前
|
Java Maven 微服务
Spring Cloud Netflix 之 Eureka
Spring Cloud Netflix Eureka是服务发现组件,由Netflix开发,Spring Cloud集成为微服务治理工具。Eureka采用客户端/服务器架构,包含Eureka Server(服务注册中心)和Eureka Client(服务提供者和服务消费者)。服务提供者注册到Eureka Server,服务消费者通过它查找并调用服务。
|
2天前
|
负载均衡 前端开发 Java
Spring Cloud 之 OpenFeign
Spring Cloud OpenFeign是Spring官方的声明式服务调用组件,简化了远程服务调用,使其如同调用本地方法。核心注解包括`@FeignClient`、`@EnableFeignClients`、`@GetMapping`和`@PostMapping`。实践中,通过在`pom.xml`添加依赖,创建Feign接口,配置`@FeignClient`,在启动类启用Feign,以及自定义超时设置来实现远程调用和负载均衡。
|
2天前
|
监控 Java 微服务
Spring Cloud 之 Hystrix
Spring Cloud Hystrix 是一个用于处理分布式系统延迟和容错的库,防止雪崩效应。它作为断路器,当服务故障时通过监控短路,返回备用响应,保持系统弹性。主要功能包括服务降级和熔断: