springcloud入门demo:https://gitee.com/Linging241/springcloud-demo.git
面试题:
1.Eureka与Zookeeper的区别在哪?
2 .Eureka与Nacos的区别?

面试题:
1.负载均衡算法有哪些?
随机、轮询、响应时间权重、重试等,还可以实现IRule接口,自定义负载均衡算法。
2.Ribbon和Feign的区别?
3.Ribbon原理
先去本地获取从Eureka缓存下来的服务列表,然后使用负载均衡算法选取一个服务,使用HttpClient进行调用。
4.Feign的原理
在配置类上,加上@EnableFeginClients,那么该注解是基于@Import注解,注册有关Fegin的解析注册类,这个类是实现 ImportBeanDefinitionRegistrar 这个接口,重写registryBeanDefinition 方法。他会扫描所有加了@FeginClient 的接口,然后针对这个注解的接口生成动态代理,然后你针对fegin的动态代理去调用他方法的时候,此时会在底层生成http协议格式的请求,使用HttpURLConnection进行调用。
5.Feign和OpenFeign的区别?
OpenFeign在feign的基础上支持了SpringMVC的注解,如@RequestMapping等等,OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。
Hystix是分布式系统的一个延迟和容错的开源库,它可以进行熔断、降级、限流、监控,可以避免分布式系统的级联故障和雪崩效应。
服务熔断:熔断是直接调用降级方法。不调用目标方法,无需等待接口调用超时才返回结果。
服务降级:降级是调用目标方法,由于目标方法调用超时或者异常,才调用降级方法。
使用:服务降级是在消费端和feign一起使用,默认降级的配置不是开启的(feign.hystrix.enabled=false),服务熔断是在服务端使用,对服务端的controller进行熔断,默认熔断的配置是开启的(spring.cloud.circuit.breaker.enabled=true)。
面试题:
1、什么是服务雪崩?
服务雪崩就是服务A调用服务B,服务B调用服务C,服务C挂掉了,导致服务B、C超时受影响,导致服务A也超时,对服务造成级联的影响。即下游服务挂掉或者超时,导致上游调用服务大面积受到影响,阻塞、超时,进而导致雪崩效应。
2、Hystix和Sentinel的区别?

3、Hystix的限流两种方式
线程池和信号量,信号量没有timeout机制。
4、限流算法有几种?
计数器、滑动窗口计数器、漏桶法、令牌桶
Zuul作为微服务的网关,对微服务的访问进行控制,它可以进行路由、过滤、鉴权、代理请求,
面试题:
1、Zuul和gateway的区别?
SpringcloudConfig是微服务中的配置中心,对微服务中多个自服务的配置进行统一的管理,可以对配置的读取、加密、解密等操作。
面试题:
1、Config和Nacos的区别?

C(Consistence):一致性,集群节点数据的一致。
A(Availability):可用性,集群节点只要存在一个节点就能对外提供服务,那就是可用。
P(Partition tolerance):分区容忍性,分布式系统多个服务节点部署网络中的不同机器上,通过网络连接在一起,那么由于网络不稳定,所以一定会存在分区故障,导致网络分区,形成多个不连通的区域,那么如果某个数据只在一个分区中存在,其他分区就访问不到。然而提高分区容忍性的方法就是将数据复制到不同的分区上,那么数据复制就会导致不一致性,就需要在一致性(C)和可用性(A)之间进行权衡。
Base理论是CAP理论的延伸,它抛弃强一致性,来了个最终一致性。