当前位置: 首页 > news >正文

【微服务】Spring Cloud 基础

Spring Cloud 基础

  • 前言
  • 简介
  • Spring Cloud Config
  • Spring Cloud Netflix
  • Eureka
  • Hystrix
  • Zuul
  • Feign
  • Ribbon
  • Archaius
  • Spring Cloud Bus
  • Spring Cloud Sleuth
  • Spring Cloud Data Flow
  • Spring Cloud Consul
  • Spring Cloud Zookeeper
  • Spring Cloud Stream
  • Spring Cloud CLI
  • Spring Cloud Task
  • 总结

前言

大家好,我是DJ李淳罡,微服务是现在面试中必不可少的一项技能了,掌握微服务,不仅能够加薪升职,还能在面试中,底气十足,不怯场,不怕被压薪资。所以今天就特意开了一个微服务专栏,给大家从0-1的介绍微服务知识,由浅入深,逐渐掌握,感兴趣的可以订阅收藏,防止下次找不到了哦~

简介

首先,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 各个组件的概念,都是一些概念性的东西,让它在小伙伴们脑海里先形成一个印象,方便后续的讲解。

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

相关文章:

  • cpanel应用不显示wordpress/关键词排名推广方法
  • 青岛网站如何制作/广州网站快速排名优化
  • 优秀产品设计案例/北京seo排名服务
  • 移动终端网站建设/百度一下 官方网
  • 可信网站认证必须做/百度整站优化
  • 政府网站建设取得的成效/seo优化对网店的推广的作用为
  • 阿里巴巴原来这么容易就能进去…
  • redis应用问题
  • 改进YOLOv7系列:首发结合最新Centralized Feature Pyramid集中特征金字塔,通过COCO数据集验证强势涨点
  • 二叉树的操作及常见面试题
  • 北理工操作系统实验合集
  • 【HAL库学习笔记】四、STM32串口与定时器
  • 编程初学者如何缓解迷茫和焦虑?墙裂推荐此文,助你赢在起跑线
  • 图解git原理
  • DOM特效模拟框拖拽
  • ITIL 4 Foundation知识体系-第四章:服务价值体系-2
  • 【备战十四届蓝桥杯 | 开篇】如何高效备战蓝桥杯
  • 北京化工大学2022-2023-1 ACM集训队每周程序设计竞赛(6)题解