一、Spring Cloud组件有哪些
Nacos注册中心,Ribbon负载均衡,Feign远程调用,sentinel服务熔断,Gateway网关
二、服务注册和服务发现是什么意思
服务注册:服务提供者需要把自己的信息注册到注册中心,由注册中心保存这些信息,比如ip地址,端口号,服务名称等。
服务发现:消费者向注册中心拉取服务列表信息,如果服务有集群,,则消费者会利用负载均衡算法,选择一个发起调用。
服务监控:服务提供者每隔30s向注册中心发送心跳,报告健康状态,如果注册中心90s没收到心跳,则从注册中心删除。
三、eureka和nacos区别
共同点:
都支持服务注册和服务拉取
都支持服务提供者心跳方式做健康监测
区别:
Nacos有临时实例和非临时实例两种,临时实例采用心跳模式,,非临时实例采用主动检测模式。
临时实例心跳不正常会被剔除,非临时实例不会被剔除。
Nacos支持注册中心消息推送来更改服务列表,更新更加及时。
Nacos集群默认采取AP方式,当集群中存在非临时实例时,采用CP(强一致)模式;Eureka采用AP(高可用)方式。
四、Ribbon复杂均衡策略
1.轮询策略:简单轮询服务列表来选择服务器。
2.权重选择:按照权重来选择服务器,响应时间越长,权重越小。
3.随机策略:随机选择一个可用的服务器。
4.范围选择:以区域内可用的服务器为基础进行服务器的选择,使用Zone对服务器进行分类,之后在对Zone内的多个服务进行轮询。(默认)
5.重试机制:重试机制的选择逻辑。
6.最小连接数策略:忽略那些短路的服务器,并且选择一个并发数较低的服务器。
7.可用性敏感策略:首先判断是否健康,在选择连接数较小的实例。
五、服务雪崩
一个服务失败,导致整条链路的服务都失败
六、服务降级
服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会手请求突增影响变得不可用,,确保服务不会崩溃。
代码实现:在@FeignClient里面加上fallback=***,里面是自己写的服务降级代码,一般返回异常即可。
七、服务熔断
默认关闭,需要手动打开,如果检测到10秒内请求失败率超过50%,就会触发熔断机制,之后每隔5秒重新尝试请求微服务,如果微服务不能相应,继续走熔断机制,,如果微服务可以到达,则关闭熔断机制,恢复正常请求。