1,什么是SpringCloud?
它是一系列框架的有序集合,利用SpringBoot开发的便利性简化了分布式系统基本设施的开发(注册中心,配置中心,消息总线,负载均衡,断路器,数据监控)都可以使用SpringBoot的开发风格做到一键启动和部署
2,什么是服务发现和注册?
所有服务器都在服务注册器上注册并通过服务器完成查找,因此在服务位置改变时无需做任何的更改和处理
3,SpringCloud组件有哪些?
Eureka:服务注册与发现
Zuul:服务网关
Ribbon:客户端负载均衡
Hystrix:断路器
Config:分布式配置中心
4,什么是服务熔断?
熔断机制是针对雪崩效应的一种微服务链保护机制,当某个微服务不可用或者响应时间太长时,会进行服务降级,进而熔断该节点微服务调用,快速返回错误信息。当检测到该节点微服务调用相应正常时恢复调用链路
5,什么是服务降级
一般是从整体负荷考虑,当某个服务熔断后,服务器将不再调用,此时客户端可以自己准备一个fallback回调,返回一个缺省值
6,负载均衡的意义是什么?
在计算中,负载均衡可以改善计算机集群等多种计算资源的工作负载分布,负载均衡旨在优化资源应用,最大化吞吐量,最小化响应时间,避免任何单一资源的过载,使用多个组件冗余而不是单个组件来负责负载均衡可以提高可靠性和可用性。
7,Eureka和Zookeeper的区别?
Zookeeper保证了CP(C:一致性,P:分区容错性),Eureka保证了AP(A:高可用性)
Eureka可以很好应对因网络故障导致部分节点失去联系的情况,而不会像Zookeeper那样使整个微服务瘫痪
8,Hystrix如何实现容错?
Hystrix是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免地故障时,停止级联故障并在复杂的分布式系统中实现弹性。
我们将使用Hystrix的fallback方法实现服务容错
9,什么是Hystrix断路器?
我们将使用Hystrix定义了一个回退方法,如果公开服务中发生异常,则回退方法返回一些默认值
10,Eureka的工作原理?
提供者:启动后向Eureka注册自己的信息(地址,何种服务)
消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表肺癌给消费者,并定期更新。
心跳:提供者定期通过http向eureka刷新自己的状态(30s),未按时心跳续约时,eureka会自动剔除此服务
11,什么是Zuul?
zuul是对springcloud提供的相对成熟额路由方案,根据请求路径不同,网关会定位到指定的微服务,并代理请求到不同的微服务接口,对外隐蔽了真正微服务地址
动态路由表:Zuul支持Eureka路由,手动配置路由
路由定位:根据请求路径,Zuul会匹配
反向代理:客户端请求到路由网关,网关受理后,对目标发送请求,拿到响应后,再返回到客户端
12,Zuul工作流程是什么?
API网关维护了系统中所有的serviceId和实例地址的映射关系。当有请求到达api网关时,根据请求的URL匹配到最匹配的path,API网关就可以知道要将该请求路由到那个具体的serviceId上去,最后使用Ribbon的负载均衡策略实现请求的路由
13,什么是服务雪崩效应?
某个服务发生宕机,调用这个服务的服务也会宕机,这样会将服务的不可用逐步扩大到各个其他服务中,从而会使整个项目的服务宕机崩溃。
14,如何实现动态Zuul的网关路由转换?
通过path配置拦截请求,通过serviceId到配置中心获取转发的服务列表,Zuul内部采用Ribbon实现负载均衡