SpringCloud学习笔记

本文介绍了SpringCloud作为微服务协调整理治理框架的核心组件,包括Eureka服务注册中心、Feign服务间调用、Hystrix断路器、Zuul路由网关、Ribbon负载均衡器以及Config配置中心的功能及使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringCloud:

微服务架构是一种架构模式,架构风格,将单一的应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程内,
服务之间互相协调,互相配置,服务之间采用轻量级的通信机制(HTTP)互相沟通,每个服务都围绕着具体的业务进行构建。
SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务,
整合并管理起来,为各个微服务之间提供:配置管理、服务发现、断路器、路由等。

组件:Eureka、Feign、Hystrix、Zuul、Ribbon、Config

一、Eureka

	服务注册中心,专门负责服务的注册和发现。
	1、Eureka service 注册中心	@EnableEurekaServer
	2、Eureka Client 将服务信息注册到注册中心	@EnableEurekaClient
	eureka:
  	 client:
      serviceUrl:
       defaultZone: eureka服务url

在这里插入图片描述

更改Eureka实例ID

eureka:
 instance:
  instanceId: 
  prefer-ip-address: true //显示ip

健康检查:

默认情况下,Eureka使用客户端心跳来确定客户端状态。
在Status栏显示着UP,表示该服务及其多实例处于状态正常。(需要spring-boot-starter-actuator依赖)
eureka:
 client:
  healthcheck:
   enabled: true

自我保护机制:

默认情况下,EurekaServer在一段时间内没有接收到某个微服务的心跳,会注销该实例(默认90秒),
但是短时间内丢失大量的服务实例心跳,这时会开启自我保护机制,不会剔除该服务。是一种应对网络异常的安全保护措施.

二、Feign

是一个声明式的Web服务客户端,服务与服务之间的调用。
使用@FeignClient进行接口定义,FeignClient会根据接口配置到注册中心找到对应的请求服务接口。
使用Feign在启动类加@EnableFeignClients
在@FeignClient注释中,String值是一个注册在Eureka上的服务名称,
用于创建Ribbon负载平衡器。还可以使用url属性(绝对值或只是主机名)指定URL。
Feign支持Hystrix回退,将fallback属性设置为实现回退的类名。
需要访问导致回退触发的原因,使用注解中fallbackFactory属性,参数Throwable cause :“cause.getMessage()”。

三、Hystrix

Hystrix Dashboard:显示断路器的运行状况
多个微服务之间调用的时候,如果扇出的链路上某个微服务的调用响应时间过长,或者不可用,
对此微服务的调用就会占用越来越多的系统资源,进而引起系统崩溃,
 “断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控,
向调用方返回备选响应 (FallBack) ,
而不是长时间的等待或者抛出调用方法无法处理的异常,这样就可以保证了服务调用方的线程不会被长时间,不必要的占用,
从而避免了故障在分布式系统中的蔓延,乃至雪崩。

在这里插入图片描述

  • 服务熔断 @HystrixCommand
    服务降级、监控
  • 服务降级:fallback,提供友好提示。(释放资源供核心业务使用)服务降级情况:程序运行异常、超时、服务熔断触发服务降级。
  • 服务熔断:circuit break,服务降级->熔断->恢复调用链路,当失败的调用到一定阈值,缺省是5秒内20次调用失败,就会启动熔断机制,三个状态:打开、关闭、半开

四、Zuul

Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器。
路由网关,将外部请求转发到具体微服务实例,实现外部访问统一入口,过滤器功能负责对请求的处理过程进行干预
zuul默认和Ribbon结合实现了负载均衡的功能
当Zuul中给定路由的电路跳闸时,您可以通过创建类型为FallbackProvider的bean来提供回退响应,
如果要为所有路由提供缺省回退,您可以创建一个类型为FallbackProvider的bean,并且getRoute方法返回*或null。
zuul: 
 ignored-services: 忽略的服务 / '*',禁用默认的路由
 routes:
  XXX:
   service-id: xxx
   path: /xxx/**

在这里插入图片描述

五、Ribbon

负载均衡简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的高可用。
Ribbon是一种客户端负载平衡器,可对HTTP和TCP客户端的行为进行大量控制。
Eureka是抽象远程服务器发现的一种方便的方式,因此您不必在客户端中对其URL进行硬编码,
但如果您不想使用它,Ribbon和Feign仍然很适用的。
#禁止授权给Eureka,明确禁用在Ribbon中使用Eureka。
ribbon:
 eureka:
  enabled = false
#Ribbon客户端默认为已配置的服务器列表
eureka-service:
 ribbon:
  listOfServers= xxx,xxx 
  - 负载均衡 @LoadBalance,支持修改负载均衡算法,

六、Config

集中式管理配置文件
不同环境,不同配置,动态化的配置更新,分环境部署,
分为Config Server、Config Client
服务端也称为 分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息
客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,
并在启动的时候从配置中心获取和加载配置信息。
`cloud:
  config:
   label:   #分支名称
   name:  #需要读取的资源名称,无后缀
   profile: #环境配置
   uri: #配置中心的地址`

在这里插入图片描述

  • 配置中心、集中管理配置文件、进行环境转变不同的配置文件
  • 配置文件存放在本地或者远程仓库,Config Server从仓库中读取配置文件,Config Client从Server中加载配置文件

各组件间的运行机制:

1、客户端发起的API调用请求通过路由网关(Zuul)
2、网关接收到请求,根据从Eureka服务中心获取的服务列表,通过负载均衡方式进行转发到具体的服务实例
3、各个微服务间的调用通过Feign进行,Hystrix来进行服务的降级、熔断等操作
4、各服务的配置文件从Config Server中获取

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值