SpringCloud核心组件

本文详细介绍了SpringCloud中最常用的六个组件:Nacos作为注册中心和配置中心,Gateway实现服务路由和负载均衡,Feign进行远程调用,Sentinel提供熔断降级保护,以及Ribbon的负载均衡功能。
摘要由CSDN通过智能技术生成
1、SpringCloud常⽤组件有哪些

最常⽤的5个组件是Nacos、Gateway⽹关、Feign远程调⽤、Sentinel熔断降级和Ribbon负载均衡,其中Nacos是eureka的升级版,是阿⾥巴巴开发的,不仅仅可以作为注册中⼼,还可以作为配置中⼼

1.1. 注册中⼼

服务提供者在启动时,会将⾃⼰的元数据信息注册到Nacos服务器中,同时Nacos也会对注册的服务进⾏

⼼跳检测,以确保服务的可⽤性,服务消费者在需要调⽤服务时,可以通过Nacos的服务发现功能获取

服务提供者的地址列表,从⽽实现负载均衡和服务调⽤

1.2 配置中⼼

配置中⼼则是负责管理应⽤程序的配置信息,nacos提供了⼀个可视化的配置管理界⾯,⽀持多种格式的

配置⽂件,⽀持动态配置管理,当配置信息发⽣变化时,Nacos会⾃动推送最新的配置信息给应⽤程

序,从⽽实现配置的实时更新

1.3 ⽹关Gateway

⽤于实现服务的路由、负载均衡、过滤和熔断等功能。采⽤了异步⾮阻塞的模型,采⽤Netty作为底层的

HTTP库,提⾼了⽹关的吞吐量和性能。

⽹关中的过滤器:

  1. 默认过滤器(只能使⽤SpringCloudGateway⾃带的过滤器)

  2. 路由过滤器(只能使⽤SpringCloudGateway⾃带的过滤器)

  3. 全局过滤器(创建⼀个类实现GlobalFilter接⼝,重写filter⽅法.可⽤于鉴权)

  4. 三种过滤器默认执⾏顺序(默认 -> 路由 -> 全局)全局过滤器实现Ordered接⼝,重写

1.4. Feign远程调⽤
  1. 定义接⼝:在Feign客户端的接⼝中定义需要调⽤的远程服务的⽅法,使⽤注解指定服务名称、请求

⽅式、请求路径、请求参数,响应结果等信息。

  1. 解析接⼝:在应⽤启动时,Feign会扫描所有带有@FeignClient注解的接⼝,并将其解析成可执⾏的

HTTP请求,⽣成动态代理对象并保存在Spring的容器中。

  1. 发起请求:当应⽤调⽤Feign客户端的接⼝⽅法时,Feign中依赖的ribbon组件会去获取

@FeignClient注解中name属性的值,即服务名,通过这个服务名去找注册中⼼拉取服务提供者列

表,缓存到本地。基于负载均衡的⽅式选择⼀个服务提供者,根据接⼝声明的⽅法上的请求路径,

请求参数,请求⽅法,发送http请求

  1. 响应结果:远程服务接收到请求后,会根据请求路径和请求参数执⾏相应的逻辑,并将结果封装成

HTTP响应返回。Feign客户端接收到响应后,根据响应结果类型进⾏反序列化,并返回给应⽤程

序。以接⼝和注解的⽅式,实现对HTTP请求的映射和调⽤

1.5. Sentinel熔断降级

Sentinel是⼀款开源的服务治理组件,主要提供流量控制、熔断降级和系统负载保护等功能。熔断

降级是指在分布式系统中,即当系统出现异常或不可⽤时,通过断路器的⽅式将请求快速失败,避免请

求不断堆积,引起系统的崩溃(雪崩)。Sentinel在防⽌微服雪崩上有以下4种⽅案:

  1. 超时处理:设定超时时间,请求超过⼀定时间没有响应就返回错误信息,不会⽆休⽌等待

  2. 舱壁模式:限定每个业务能使⽤的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离

  3. 熔断降级:由断路器统计业务执⾏的异常⽐例,如果超出阈值则会熔断该业务,拦截访问该业务的

⼀切请求。

  1. 流量控制:限制业务访问的QPS,避免服务因流量的突增⽽故障。
1.6. Ribbon负载均衡

主要作⽤是在服务消费者与服务提供者之间进⾏负载均衡,将请求分发到不同的服务实例上,从⽽

提⾼系统的可⽤性和性能。Ribbon通过向注册中⼼获取服务实例信息,并通过算法选择合适的实例进⾏

请求转发,从⽽实现负载均衡。可以通过配置不同的负载均衡策略,实现不同的负载均衡⽅式,如轮

询、随机、加权随机、最少活跃数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值