记springcloud面试篇

2,115 阅读6分钟

一、什么是spring cloud?

spring cloud是一个微服务框架,spring cloud提供了全套分布式系统解决方案,spring cloud对多个netflix的多个组件进行了封装,形成了一套独有的微服务基础框架,同时又很好的兼容了spring boot的各个版本。

二、什么是微服务?

微服务简单来说的话,其实就是将一个大型的系统拆分成各个小型的服务,他们之间拆分的颗粒度可以是以一个模块、一个功能菜单甚至是一个方法做为单独服务,但是需要注意,“微服务”与“微服务架构”有着本质的区别: “微服务”强调的是服务的大小,它关注的是某一个点。而“微服务架构”则是一种架构思想,需要从整体上对软件系统进行通盘的考虑。

三、spring cloud有什么优势?

使用spring boot 开发分布式微服务,我们面临以下问题:

  1. 与分布式系统相关的复杂性,这种开销包括网络问题,网络延迟、带宽问题,安全问题;

  2. 服务发现-服务发现工具管理集群中的流程和服务如何查找和互相交互,他涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录的服务;

  3. 冗余-分布式系统中的冗余问题;

  4. 负载均衡-负载均衡改善了多个服务的工作负荷;

  5. 性能-由于各种运行开销导致的性能问题;

  6. 部署复杂性-devops技能的要求。

四、什么是服务熔断?什么是服务降级?

服务熔断指的是,高并发情况下应对雪崩的一种保护机制,当某个服务暂时不可用或者响应时间太长时,会进行服务降级,进而熔断该服务节点的调用,快速返回预设信息给到用户,当检测到服务可用或者响应正常的时候恢复链路进行通信,在spring cloud框架中服务熔断机制通过hystrix实现,hystrix会监控各个服务间的调用情况,当某个服务不可用或者响应超时时,会启动熔断机制进行保护。

服务降级,在服务熔断之后,服务不可用时,为了用户更好的体验,客户端会自己返回一个预先设置好的fallback回调,返回默认值给到用户,提高了用户体验性。

五、hystrix相关注解

@EnableHystrix:开启熔断器

@HystrixCommand(fallbacMethod="方法") 用于方法回调,当方法被声明改注解时,当方法执行超时时,会默认返回一个预先设定好的回调方法。

六、Euraka与zookeeper都可以提供服务注册与发现的功能,请说下他们之间的区别?

zookeeper是CP的模式,保证了一直性和容错性,Eureka是AP的模式,保证了可用性和容错性

  1. 当向注册中心查询注册列表时,我们可以容忍注册中心返回的是几分钟前的信息,单不能容忍直接不可用,也就是说,服务注册功能对可用性的要求比较高,但zk会出现这样的一种情况,当master节点因为网络故障与其他节断连时,剩余的节点会重新选取leader,问题在于,选取leader的时间过长(30s-120s)在选取的期间,注册中心是不能向外界提供服务的,在云部署的环境下,因网络问题使得zk集群失去master节点的问题会较大概率发生,一旦master节点挂掉,就会进行重新选举,选举期间注册服务不可对外提供服务,这是不能容忍的。

  2. Eureka保证了可用性,Eureka的各个节点都是平等的,多个节点挂掉也不会出现注册服务不可用的情况,剩余的节点还是能正常的对外提供服务,也就是说,只要Eureka集群中只要还有一台注册服务处于正常情况,就能持续的提供服务,除此之外,Eureka还提供了自我保护机制,如果在15分钟内超过85%的节点没有正常的心跳,那么Eureka就会认为服务与注册中心发生了网络故障,此时会出现以下几种情况:

    • 1)、Eureka不在从注册列表中移除因为长时间没有收到心跳而应该过期的服务;

    • 2)、Eureka仍然能够接受新服务的注册与查询请求,但不会被同步到其他节点上;

    • 3)、当网络文档时,当前实例新注册信息会被同步到其他节点

    因此,Eureka能很好的处理因为网络故障导致各个服务之间失联的情况,而不会想zookeeper那样无法对外提供服务,导致系统瘫痪。

七、spring boot和spring cloudd的区别

spring boot 专注于快递构建单个个体微服务

spring cloud 更关注于全局的微服务协调治理,它将springboot开发的各个单体微服务整合并管理起来,为各个服务之间提供了,服务注册与发现,配置管理,断路器,网关,事件总线等等集成服务。

八、负载均衡的意义是什么?

负载均衡可以改善跨计算机,计算机集群,网络链接,中央处理器单元或磁盘驱动器等多种计算资源的工作负荷的分布,负载均衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载,使用多个组件进行负载,提高了可靠性、可用性。

九、什么是hystrix?它是如何容错?

hystrix是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性。

十、什么是hystrix熔断器?

熔断器,相当于我们家庭中的电路总开关,当我们家里发生电路不可用时,电路总开关便会开启自我保护机制,及时断开,避免因一条线路短路而导致整个线路被破坏,但是电路总开关不存在降级的功能,但是我们在微服务的系统中,由于某个服务出现故障或者不可用时,服务发生熔断时,在这种情况下如果我们使用了熔断器它就会断开服务之间不可用服务之间的通信并且返回我们预先设置好的默认回调。

十一、说说RPC的实现原理

  • 首先需要有处理网络连接通讯的模块,负责连接建立、管理和消息的传输。

  • 其次需要有编码的模块,因为网络通信都是传输的字节码,需要将我们使用的对象序列化和反序列化。

  • 剩下的就是客户端和服务器的部分,服务器端暴露要开放的服务接口,客户端调用服务接口的一个代理实现,这个代理实现负责收集数据、编码并传输给服务器然后等待结果返回。