1、什么是SpringCloud
SpringCloud是一系列框架的有序集合,有注册中心,配置中心,网关,负载均衡,熔断等等。主要作用适用于对微服务的治理。
2、Eureka的工作原理
Eureka的工作原理,一共有四个过程,服务注册,服务发现,服务续约,服务停止
服务注册是指微服务向注册中心注册的时候会把自己的信息提交给注册中心
服务发现是指注册中心每隔30秒会主动拉取现在注册的微服务,形成一个本地通讯录
服务续约是指每隔30秒,微服务会向服务器发送一个心跳请求,表示自己还活着。
服务停止,服务断线。
3、服务宕机后,注册中心的处理方式
服务宕机之后,注册中心会等待三个心跳时间90秒,加上原来的心跳时间,一共120秒,才会把服务标记为不可用,解决方案有两种
1、采取熔断。访问不上的返回兜底数据,并标记为熔断状态
2、修改心跳时间变小。
4、网关zuul的工作原理
Zuul注册到注册中心,会拉取微服务通讯录,通过配置文件,配置各个服务的访问路径,外面访问只保留Zuul的接口,保证微服务内部调用。
5、网关zuul的过滤器,以及如何实现限流,身份校验
Zuul过滤器一共有四个前置—路由—后置—异常。
如果我们要实现限流等,可以实现ZuulFilter接口,重写pre方法,进行逻辑的判断。
6、负载均衡是什么,有什么意义
SpringCloud中的负载均衡有两套实现方案feign/ribbon,feign是基于ribbon实现的,负载均衡主要提供了微服务之间的调用,feign实现的话就是写一个接口,和controller一样,打上注解@feignclient,调用方启动类上打注解@enableFeignClients,当微服务调用时,注入对象使用,先会根据路径查找包,之后会生成一个代理对象,代理对象内部会通过模板发起请求,实现微服务调用。并且负载均衡有多种策略提供,便于微服务之间的服务调用,解决并发问题,有轮循,权重,随机等等。当然负载均衡也会带来更多的网络开销。
7、SpringCloud和Dubbo的区别
1、注册中心不同,dubbo使用zookper,cloud使用eureka或者zookper
2、cloud网关使用zuul,dubbo没有,只有基层第三方技术
3、服务调用方式dubbo是RPC,cloud是Rest API
8、什么是服务熔断
服务熔断是服务宕机后,或者并发过高,请求失败的情况,我们可以通过熔断进行服务降级返回兜底数据。他一共有三个功能。
资源隔离
资源隔离的作用是实现请求之间的相互隔离,有两种实现方式,
线程池:每次请求和调用的线程不是一个请求,所以会造成token失效,我们可以重写线程池方法,传递两个线程的token数据
信号量:信号量是延续当前线程,但是没有等待队列等
我们可以通过限制信号量或者线程池,实现并发限流。
服务熔断
服务熔断分为三个状态,分别是闭合,半熔断,熔断,当服务器宕机之后就会被标记为熔断状态,之后会释放少量请求,如果数据通了,就标记为闭合,没有通就继续熔断。多次后标记为不可用。
服务降级
服务降级是返回兜底数据的处理方式。实现方式是,实现fallbackfactory,重写feign接口方法,并添加到feignclient注解中,fallbackfactory=。。。。
9、什么是配置中心,cloud中用什么实现
就是在Git实现配置文件的统一管理,需要单独配置一个bootstrap.yml,配置访问Git文件的路径。
10、SpringAlibaba常用组件
nacos注册中心,配置中心,feign负载均衡,gateWay网关。Sentinel熔断
11、nacos和eureka区别
nacos相当于注册中心和配置中心,并且可以对微服务数据进行持久化,还可以进行分组 。默认权重设置,调整承载压力。基于netty动态刷新配置文件
eureka是注册中心,他实现配置中心功能需要集成config,是基于Git的,如果需要同步更新,还要集成MQ才能实现配置文件动态刷新。