springCloud组件详细解析
1 springcloud有哪些组件?
- Eureka 服务注册中心
- Ribbon 负载均衡
- Zuul 网关
- Fegin 客户端Web
- Hsytri 熔断器
- Bus 消息总线
- Config 统一配置中心
2 什么是自我保护模式
springCould的服务注册中心会监控微服务的心跳。如果检测到心跳,那么这个时候服务注册中心进入自我保护模式。等待到微服务恢复心跳,自动退出自我保护模式。
3、Eureka和zookeeper有什么区别
Eureka:
- 服务某一节点挂点后无需从新选举。
- 保证AP模式。
Zoomkeeper:
- 服务某一节点挂点后,需要重新选举(具体怎么选举,自行百度),并且期间服务瘫痪不可用。
- 保证CP模式
注意:
C:一致性。
A:可用性
P:分区容错性
4、discoverclient有什么作用?
- discoverclient根据服务名称从服务注册中心获取服务的信息。
- 其中discoverClient也是Ribbon实现负载均衡的底层原理实现方法。
5 zuul什么是网关?
zuul网关是统一接收、处理微服务收到的请求,转发到具体的服务
6 zuul的作用?
统一管理微服务请求、权限控制、负载均衡、路由转发、监控等作用。
7 zuul和过滤器的区别?
- zuul:统一管理微服务的请求,权限控制、负载均衡、路由转发等作用。
- 过滤器:针对于单服务而言拦截的服务请求等。
8、zuul和nginx的区别
- zuul:使用java语言编写,作用springCloud的微服务网关,实现负载均衡等。
- nginx:使用C语言编写,实现客户端的请求进行反向代理,请求转发、负载均衡。
9 zuulFilter的常用方法?
- run:拦截器的具体实现逻辑。
- shouldFilter:过滤器是否有效。
- filterOrder:过滤器的执行顺序。
- filterType:过滤器拦截位置。
10 zuul如何实现动态路由?
利用path拦截请求,再根据服务的id(ServerId)到服务注册中心查找服务转发列表。
11 zuul网关如何搭建集群?
使用Nginx的UpStream设置Zuul集群-----》通过Nginx的location拦截请并转发到upstream。zuul的默认负载均衡机制是轮循机制。
12 ribbon和nginx的区别?
- Nginx:拦截客户端的请求,并且通过反向代理,实现负载均衡。其负载均衡通过upstream配置进行转发。
- Ribbon:Ribbon是客户端负载均衡,从注册中心读取目标服务器信息,然后客户端采用轮询策略对服务直接访问,全程在客户端操作。
13 ribbon底层原理?--discoverclient
底层原理是通过discoverClient从服务注册中心读,通过服务id(serverId)找到目标服务信息,对请求接口进行计数。再通过取模(%),达到负载均衡的轮循机制。(默认负载均衡是轮循)
14 Hystri断路器是什么?
Hystri断路器就是针对微服务出现问题,有效的防止引起其他微服务的雪崩现象的一种微服务spring cloud技术。
15 Hystri防止服务雪崩的方式?
- 服务降级:重写HysteiCommand的getFallback方法,当执行Hystri的run或construct方法出错,执行的getFallback方法。
- 服务容错:在服务降级的基础上更具体的一种方式。在一定时间内计算请求失败数量(requestVolumeThreshold)或者错误率达到设定的阈值,直接调用fallBack方法。
- 服务隔离:服务隔离就是Hystrix为隔离的服务开启一个独立的线程池,这样在高并发的情况下不会影响其他服务。服务隔离有线程池和信号量两种实现方式,一般使用线程池方式。
- 服务监控:服务隔离就是Hystrix为隔离的服务开启一个独立的线程池,这样在高并发的情况下不会影响其他服务。服务隔离有线程池和信号量两种实现方式,一般使用线程池方式。
15 谈谈Hystri服务降级,熔断,隔离,监控?
如上。
16 Hystri服务降级底层实现原理?
重写HystriCommand的getFallback方法,当执行Hystri的run或construct方法出错,执行的getFallback方法
17 Hystri的服务熔断底层原理?
是服务降级的基础上更直接的保护方法。当在一定时间范围内,请求达到一定值(设定的requestVolumnThroseld值)或发生的错误率 达到设定的值,直接走fallback方法。
18 服务隔离是使用线程池来实现的?
19 ribbon和fegin的区别?(springcloud调用接口的两种方式)
Ribbon:需要自行实现http的编码。
Fegin:无需实现http编码,只需要在接口上添加@Fegin注解,和在抽象方法上加注解@Post或者@Get请求方式即可。
20 spring clous bus是什么?21 springcloud config是什么?server,client两个部分。
spring cloud bus:服务消息总线。用来扩展配置spring boot的应用程序配置文件,也可以用来是实现应用之间的通信,但是必须通过MQ来搭配实现。
spring cloud config:分为Config Server和Config Client两部分。Config Server负责读取配置文件,并且暴露Http API接口,Config Client通过调用Config Server的接口来读取配置文件
- Config能够管理所有微服务的配置文件。
- 集中配置管理工具,分布式系统中统一的外部配置管理,默认使用Git来存储配置,可以支持客户端配置的刷新及加密、解密操作