springcloud五大组件及其在项目中的作用 springcloud五大组件nacos

admin2024-05-30  18

SpringCloud常用组件

注册中心:Eureka、Nacos

负载均衡:Ribbon

服务保护:Hystrix ,Sentinel

远程调用:Feign

网关:Zuul,Getway

配置中心:SpringCloudConfig,Nacos

注册中心

Eureda:

1、支持AP模式

2、Eureka完全依赖心跳模式

Eureka里的临时实例,需要由微服务自己使用心跳进行续约。失效服务会被清除掉

3、Eureka完全依赖于服务拉取

springcloud五大组件及其在项目中的作用 springcloud五大组件nacos,springcloud五大组件及其在项目中的作用 springcloud五大组件nacos_线程池,第1张

Eureda的运行原理

Nacos:

1、支持AP模式和CP模式

2、Nacos支持主动探测实现健康监测

Nacos里的永久实例,由Nacos主动探测目标服务是否可用,如果不可用,标记为不健康,但是不清除

3、Nacos支持服务推送

Nacos如果发现某个服务失效了,会主动推送通知消费者

负载均衡

Ribbon

消费者负载均衡Ribbon,由调用者通过算法来判断调用哪个服务

默认的负载均衡策略为轮询

nginx

提供者负载均衡nginx,调用者根本不知道有没有负载均衡

服务保护

Hystrix熔断器

因为某些原因服务宕机了,Hystrix是为了服务无法访问提供的解决方案

主要的方案:服务隔离,服务熔断

1、服务隔离

线程池隔离:调用每一个服务,都会有一个专门的线程池,当服务出现问题最多将线程池中的资源占满

优点:支持异步调用 ,主动超时

缺点:消耗资源大

信号量隔离:调用每一个服务时都会设置线程允许使用的数量,超过数量后就不允许使用了,当服务出现问题最多占满允许使用线程数

优点:耗费资源小

缺点:不支持异步调用

            不支持主动超时

2、服务熔断:如果某个服务发现短时间内大部分访问失败,那么就暂时切断他的一切访问

Hystrix的熔断是由状态机实现的,有三个状态

Closed:闭合状态,一切请求都可以正常通行

  • 如果短时间内大量请求失败,就会切换到Open断开状态
  • 默认:5秒内,超过20次请求,50%失败

Open:断开状态,会拦截一切请求

  • 切断之后,默认休眠5秒钟,然后进入Half Open(半开)状态

Half Open:半开状态

  • 会释放一次请求做试探
  • 如果这次请求成功了,就切换到Closed闭合状态
  • 如果这次请求还失败,就切换到Open断开状态

Hystrix、Sentinel 两者的区别:

隔离策略:Hystrix支持信号量隔离和线程池隔离 (默认);Sentinel只支持信号量隔离

熔断策略:Hystrix支持异常比例熔断;Sentinel支持异常比例熔断、异常数量熔断、调用慢比例熔断

限流策略:Hystrix限流能力很弱;Sentinel提供了基于QPS限流、调用链路限流,限流能力很强大

控制台:Hystrix控制台很简陋;Sentinel控制台功能强大,有规则的配置界面、监控界面

远程调用:

feign:

由三部分组成:服务提供者、服务消费者、feign的客户端

使用步骤

服务提供者在启动类,加上@EnableFeignClients表示开启Feign功能

Feign客户端实际上就是一个接口,但是这个接口继承了服务提供者的接口,通过@FeignClient注解声明需要调用的服务别名

服务消费者启动类,同样加上EnableFeignClients

扩展:

Feign内置ribbon负载均衡,如果是使用RestTemplate则需要通过@LoadBalanced注解开启

Feign内置Hystrix,但是默认关闭

网关:

getway

网关的作用:是整个微服务最前沿,可以进行鉴权、统计等等

两大核心:

  • 路由:把符合条件的请求,路由分发到对应的微服务上
  • 过滤:可以对请求和响应进行过滤处理,决定是否放行    

配置中心

nacos支持配置中心,将各个服务的配置文件进行同一管理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!