SpringCloud五大组件

Eureka

1、微服务注册中心,有2个角色,服务端是Eureka本身,客户端是服务提供者、消费者

2、服务提供者启动将信息注册到Eureka,消费者启动到注册中心拉取服务列表

3、保持心跳,每隔30s客户端发送心跳给注册中心

4、自我保护机制,15分钟内,收到心跳总数低于总数85%,开启

与Zookeeper区别

Zookeeper保证强一致性,发生网络故障导致master和slave节点失联时,会进行leader选举,选举过程中不能提供服务

Eureka保证高可用性,只要有一个Eureka节点存在,就可以提供服务

Ribbon

1、Ribbon是一个Http和Tcp的客户端负载均衡工具,在客户端配置服务端列表,使用RestTemplate模拟客户端请求

2、Feign继承Ribbon,使用接口的方式进行服务调用

与Feign区别

1、启动类注解不同,@RibbonClients、@EnableFeignClients

2、Ribbon在启动类指定服务名称,Feign在接口上指定

3、Ribbon需要自己构建http请求,模拟http请求,使用RestTemplate进行调用

Ribbon原理

先去本地获取从Eureka缓存下来的服务列表,根据负载均衡算法选取一个服务,使用HttpClient调用

Feign

扫描所有加了@FeignClient注解的接口,生成动态代理,通过动态代理调用方法

Hystrix

是分布式系统的一个延迟、容错组件,可以进行熔断、降级、限流、监控,避免级联故障、雪崩效应

熔断

直接调用降级方法,无需等待接口调用超时

降级

调用目标方法,超时则调用降级方法

服务雪崩

下游服务挂掉,导致上游服务大面积阻塞

Hystrix限流

1、线程池

2、信号量

限流算法

计数器、滑动窗口计数器、漏桶法、令牌桶

Zuul

作为微服务的网关,控制访问,进行路由、过滤、鉴权、代理请求

与gateway区别

1、gateway支持异步,Zuul不支持长连接

2、gateway提供限流、负载均衡

3、都是web网关处理http请求,底层都是servlet

Config

是微服务配置中心,统一管理配置,对配置进行读取、加密、解密

CAP理论

C Consistence,一致性

A Availability 可用性

P Partition tolerance 分区容忍性

Base理论

是CAP延伸,抛弃强一致性,最终一致性

BA Basically Available 基本可用

S Soft State 软状态

E Eventual Consistency 最终一致性

浙ICP备11005866号-12