关于 Spring Cloud 的一些面试题

关于 Spring Cloud 的一些面试题

1 、什么是Spring Cloud?

Spring cloud流应⽤程序启动器是基于Spring Boot的Spring集成应⽤程序,提供与外部系统的集成。

Spring cloud Task,⼀个⽣命周期短暂的微服务框架,⽤于快速构建执⾏有限数据处理的应⽤程序。

2 、使⽤Spring Cloud有什么优势?

使⽤Spring Boot开发分布式微服务时,我们⾯临以下问题:

与分布式系统相关的复杂性-这种开销包括⽹络问题,延迟开销,带宽问题,安全问题。

  • 服务发现-服务发现⼯具管理群集中的流程和服务如何查找和互相交谈。它涉及⼀个服务⽬录,在该⽬录中注册服务,然后能够查找并连接到该⽬录中的服务。

  • 冗余-分布式系统中的冗余问题。 负载平衡

    负载平衡改善跨多个计算资源的⼯作负荷,诸如计算机,计算机集群,⽹络链路,中央处理单元,或磁盘驱动器的分布。

  • 性能-问题 由于各种运营开销导致的性能问题。部署复杂性-Devops技能的要求。

3 、 服务注册和发现是什么意思? Spring Cloud如何实现?

当我们开始⼀个项⽬时,我们通常在属性⽂件中进⾏所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,⽽某些位置可能会发⽣变化。⼿动更改属性可能会产⽣问题。

Eureka服务注册和发现可以在这种情况下提供帮助。由于所有服务都在Eureka服务器上注册并通过调⽤Eureka服务器完成查找,因此⽆需处理服务地点的任何更改和处理。

4 、负载均衡的意义什么?

在计算中,负载均衡可以改善跨计算机,计算机集群,⽹络链接,中央处理单元或磁盘驱动器等多种计算资源的⼯作负载分布。负载均衡旨在优化资源使⽤,最⼤化吞吐量,最⼩化响应时间并避免任何单⼀资源的过载。使⽤多个组件进⾏负载均衡⽽不是单个组件可能会通过冗余来提⾼可靠性和可⽤性。负载均衡通常涉及专⽤软件或硬件,
例如多层交换机或域名系统服务器进程。

5、 什么是Hystrix断路器?

Hystix是Netflix开源的一个延迟和容错库,用于隔离访问远程服务,防止出现级联失败。
Hystrix为每个依赖服务调用分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队,加速失败判定时间。用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超时,则会进行降级处理。

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

在复杂的分布式系统中,微服务之间的相互调⽤,有可能出现各种各样的原因导致服务的阻塞,在⾼并发场景下,服务的阻塞意味着线程的阻塞,导致当前线程不可⽤,服务器的线程全部阻塞,导致服务器崩溃,由于服务之间的调⽤关系是同步的,会对整个微服务系统造成服务雪崩,为了解决某个微服务的调⽤响应时间过⻓或者不可⽤进⽽占⽤越来越多的系统资源引起雪崩效应就需要进⾏服务熔断和服务降级处理。

  • 所谓的服务熔断指的是某个服务故障或异常⼀起类似显⽰世界中的“保险丝"当某个异常条件被触发就直接熔断整个服务,⽽不是⼀直等到此服务超时。

  • 服务熔断就是相当于我们电闸的保险丝,⼀旦发⽣服务雪崩的,就会熔断整个服务,通过维护⼀个⾃⼰的线程池,当线程达到阈值的时候就启动服务降级,如果其他请求继续访问就直接返回fallback的默认值。

7、 Eureka和ZooKeeper都可以提供服务注册与发现的功能,请说说两个的区别

1.ZooKeeper保证的是CP,Eureka保证的是AP

ZooKeeper在选举期间注册服务瘫痪,虽然服务最终会恢复,但是选举期间不可⽤的
Eureka各个节点是平等关系,只要有⼀台Eureka就可以保证服务可⽤,⽽查询到的数据并不是最新的
⾃我保护机制会导致:

  • Eureka不再从注册列表移除因⻓时间没收到⼼跳⽽应该过期的服务

  • Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其他节点(⾼可⽤)

  • 当⽹络稳定时,当前实例新的注册信息会被同步到其他节点中(最终⼀致性)

  • Eureka可以很好的应对因⽹络故障导致部分节点失去联系的情况,⽽不会像ZooKeeper⼀样使得整个注册系统瘫痪

2.ZooKeeper有Leader和Follower⻆⾊,Eureka各个节点平等

3.ZooKeeper采⽤过半数存活原则,Eureka采⽤⾃我保护机制解决分区问题

4.Eureka本质上是⼀个⼯程,⽽ZooKeeper只是⼀个进程

8、SpringBoot和SpringCloud

SpringBoot是Spring推出⽤于解决传统框架配置⽂件冗余,装配组件繁杂的基于Maven的解决⽅案,旨在快速
搭建单个微服务
⽽SpringCloud专注于解决各个微服务之间的协调与配置,服务之间的通信,熔断,负载均衡等,技术维度并相同,
并且SpringCloud是依赖于SpringBoot的,⽽SpringBoot并不是依赖与SpringCloud,甚⾄还可以和
Dubbo进⾏优秀的整合开发

总结:

  • SpringBoot专注于快速⽅便的开发单个个体的微服务
  • SpringCloud是关注全局的微服务协调整理治理框架,整合并管理各个微服务,为各个微服务之间提供,配置管理,服务发现,断路器,路由,事件总线等集成服务
  • SpringBoot不依赖于SpringCloud,SpringCloud依赖于SpringBoot,属于依赖关系
  • SpringBoot专注于快速,⽅便的开发单个的微服务个体,SpringCloud关注全局的服务治理框架
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值