1、Eureka的高可用
1)Eureka实例的互相注册,高并发
启动多个实例,实例与实例之互相持有对象的端口号
2)服务的失效与自我保护
心跳时间:每过一段时间,Eureka会连接一次实例服务
过期时间:当某一个服务心跳之后,没有响应,N秒之后会将此服务从Eureka服务列表中剔除
关闭自我保护:不在设置心跳时间,到了过期时间就直接关闭剔除
面试题
1)什么是Eureka和Eureka的作用
服务的发现与注册中心,用来管理所有服务的信息,服务的名称,服务是否可用
2)Eureka怎么用
先导入依赖,Eureka是分为服务端和客户端的。服务端的作用就是用来保存服务列表的。客户端的作用就是我们普通的功能性服务。
在使用的时候服务端需要开启服务@EnableEurekaServer。服务端使用的@EnableDiscoveryClient。
服务端还需要再yml配置文件中,指定路径
客户端也需要在yml配置文件中,指定Eureka的路径
2.Ribbon
1)概念
用于负载均衡,在Eureka中已经被封装了
2)使用
导入依赖,只有需要在RestTemplate对象上,使用注解@LoadBalanced,在使用连接的时候,通过服务的ID来完成连接
3)负载均衡的规则
默认是轮询,可选随即,在yml中进行设置
service-provider:
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
面试题
使用了,因为我们的服务有很多个实例。
使用的工具是ribbon,通过对请求的拦截,而进行的url路径分析,通过得到url中,服务名ID。进行默认的轮询规则的服务实例的选择,系统提供的规则有两种,一个是轮询,一个是随即,其实最好的我认为是能者多劳,但是,我不会。最终生成,对应服务的url http://localhost:808X。
3.hystrix
1)概念
用于服务的自我保护,类似于保险丝和空气开关,当服务被多次访问,并都发生等待,就必须进行熔断或降级操作。
2)雪崩
由于电脑的内存和cpu等原因,导致的服务的等待时间过长,而造成的内存压力,最终导致服务整个崩溃。
3)服务降级
治标不治本,只是将对应的服务,单独拎出来进行隔离。
4)服务熔断
治本,当访问失败的次数超过默认20次阈(yu)值警戒线,彻底不允许访问此服务
close,熔断关闭,可正常访问,当失败的访问次数过多,会进入open开启状态
open,熔断开启,无法方法,当5秒内,没有请求进入,则进入半开状态
half open,半开状态,允许部分请求进行正常访问,如果访问都是健康的,则进行close关闭状态,反之,则继续进入open打开状态
5)使用
导入依赖,并在主类上添加注解,@EnableCircuitBreaker。在对应的需要进行管理的url方法上,添加依赖@HystrixCommand,还需要设置回调方法fallbackMethod