加载中...
avatar
文章
42
标签
25
分类
21
首页
Java
Spring全家桶
  • Spring
  • SpringBoot
  • SpringCloud
JVM
源码
  • Mybatis
  • HashMap
归档
其他
  • 互联网电子书汇总
  • JAVA八股文指南
  • 历史
  • 相册
关于
Logo码农Stormling面试系列(二)| SpringCloud 面试题
搜索
首页
Java
Spring全家桶
  • Spring
  • SpringBoot
  • SpringCloud
JVM
源码
  • Mybatis
  • HashMap
归档
其他
  • 互联网电子书汇总
  • JAVA八股文指南
  • 历史
  • 相册
关于

面试系列(二)| SpringCloud 面试题

发表于2021-10-07|更新于2025-01-16|SpringCloud
|总字数:2.6k|阅读时长:8分钟|浏览量:

微服务基础

1.什么是微服务架构

​ 微服务架构就是将单体的应用程序分成多个应用程序,这多个应用程序就成为微服务,每个微服务 运行在自己的进程中,并使用轻量级的机制通信。这些服务围绕业务能力来划分,并通过自动化部 署机制来独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理。

2.为什么需要学习Spring Cloud

  • 首先Spring Cloud基于Spring Boot的优雅简洁,可还记得我们被无数xml支配的恐惧?可还记得 Spring MVC ,Mybatis 错综复杂的配置,有了Spring Boot,这些东西都不需要了,Spring Boot好处不再赘诉,Spring Cloud就基于Spring Boot把市场上优秀的服务框架组合起来,通过Spring Boot风 格进行再封装屏蔽掉了复杂的配置和实现原理
  • 什么叫做开箱即用?即使是当年的黄金搭档 Dubbo + ZooKeeper下载配置起来也是颇费心神的!而 Spring Cloud完成这些只需要一个jar的依赖就可以了!
  • Spring Cloud大多数子模块都是直击痛点,像 Zuul 解决的跨域,Fegin 解决的负载均衡,Hystrix的熔 断机制等等等等

3. Spring Cloud 是什么

  • Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如 服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

  • Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框 架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留 出了一套简单易懂、易部署和易维护的分布式系统开发工具包

4. Spring Cloud的优缺点

优点

  1. 耦合低
  2. 配置简单
  3. 跨平台
  4. 可配置独立的数据库
  5. 可以组件间之间通讯

缺点:

  1. 部署麻烦
  2. 数据管理麻烦
  3. 系统集成测试
  4. 性能监控复杂

5. Spring Boot 和 Spring Cloud 区别?

  • Spring Boot 专注单体快速开发

  • Spring Cloud 关注全局微服务协调整理治理框架,将Spring Boot 单体微服务整个管理

  • 各个微服务之间提供,配置管理,服务发现,断路器,路由,微代理,消息总线,全局锁,决策竞选,分布式会话等

6.Spring Cloud 和 Spring Boot 版本对应关系?

Release Train Boot Version
2020.0.x aka Ilford 2.4.x, 2.5.x (Starting with 2020.0.3)
Hoxton 2.2.x, 2.3.x (Starting with SR5)
Greenwich 2.1.x
Finchley 2.0.x
Edgware 1.5.x
Dalston 1.5.x

7.SpringCloud由什么组成

这里列举几个主要的组件

  • Eureka 服务注册和发现
  • Zuul 网关
  • Ribbon 负载均衡
  • Feign 声明式Web服务客户端
  • Hystrix 断路器
  • Config 分布式统一配置管理

Eureka 篇

8.服务注册和发现是什么意思?Spring Cloud 如何实现的?

​ 一般Spring Cloud 项目由多个模块服务组成,通常在属性文件中进行配置,随着越来越多的服务开发和部署,添加修改属性变得复杂。由于所有服务都通过Eureka 服务注册统一由Eureka服务管理并通过Eureka完成查找,这样就无需知道服务的地的任何修改了。

9.什么是Eureka

​ Eureka 作为 Spring Cloud 服务注册中心,系统中的服务使用 Eureka 客户端将其连接 Eureka Service 中并保持心跳,可以通过 Eureka 服务来监控其他微服务是否正常运行

10.Eureka 如何实现高可用

​ 通过集群注册多台 Eureka,将各个 微服务 相互注册

11.Eureka 的自我保护机制

​ 默认情况下,如果 Eureka 服务一定时间没有收到某个微服务的心跳,那个Eureka 服务会进入自我保护模式,在该模式下 Eureka 服务会保护注册表中的信息,不删除注册表中的数据,当网路恢复后,自动退出保护模式。

12.DiscoveryClient 作用

​ 可以从注册中心中的服务别名来注册服务器信息

13.Eureka 和ZooKeeper 的区别

  1. ZooKeeper 的节点服务挂了要选举,选举期间的注册服务瘫痪

  2. Eureka的各个节点平等,服务器挂了没关系,只要由一台可以保证服务即可,如果数据不是最新的,可能是启动了自我保护机制导致的。

  3. Eureka 本质是工程,ZooKeeper 是进程

  4. ZooKeeper 保证CP,Eureka 保证 AP

CAP: C:一致性、A:可用性、P:分区容错性

Zuul 篇

14.什么是网关

  • 网关相当与网络服务框架的入口,所有网络请求都必须通过网关才能转发到具体的服务

15.作用是什么

  • 统一管理微服务请求,权限控制、负载均衡、路由转发、监控、安全控制黑名单和白名单

16.什么是Spring Cloud Zuul (服务网关)

  • Spring Cloud 的一套路由方案,会根据请求路径不同,网关会定位到指定的微服务,并代理请求到不同的微服务接口,对外隐蔽了微服务的真正接口地址,
    三个重要概念
    • 动态路由表:Zuul 支持 Eureka 路由,手动配置路由
    • 路由定位: 根据请求路径,Zuul 有自己一套定位服务规则以及路由表达式匹配
    • 反向代理:客户端请求到路由网关,网关手里后,目标发送请求,拿到相应后给到客户端
  • 应用场景:
    • 对外暴露
    • 权限校验
    • 服务聚合
    • 日志审计

17.网关和过滤器有什么区别

  • 网关对所有的服务请求进行分析过滤,过滤器是对于单个服务而言的

18.常用的网关框架

  • Nginxx、Zuul、Gateway

19.Zuul 和 Nginx区别

  • Zuul java 实现,主要是网关服务
  • Nginx C 实现,性能高于Zuul,可以做Zuul集群

20.如何设计一套API接口

  • API分类:开发API接口 和 内网API接口
    • 内网:局域网,为内部服务考虑
    • 外网:外部单位提供接口调用,遵循Oauth2.0权限
  • 考虑安全和幂等性

21.ZuulFilter 常用那些方法

  • Run():过滤器的具体业务逻辑
  • shouldFilter():判断过滤器是否有效
  • filterOrder():过滤器执行顺序
  • filterType():过滤器拦截位置

22.实现动态Zuul网关路由转发

  • 通过path配置拦截请求,通过ServicerId配置中心转发道服务列表,内部使用Ribbon实现本地负载均衡和转发

Ribbon

23.Ribbon的作用

  • 主要功能是提供客户端的软件负载均衡算法,默认是轮询算法。

24.Ribbon的原理

  • Ribbon会从注册中心获取到服务的信息,然后通过轮询算法,从中选择一台机器。

25.Ribbon和nginx的区别

  • nginx: 反向代理实现负载均衡,相当于从nginx服务器进行请求转发。
  • Ribbon: 客户端负载均衡,全程都是客户端操作。

Feign

26 作用

Feign集成了Ribbon,Feign 是一个声明web服务客户端,这使得编写web服务客户端更容易,远程调用更加简单。

27.SpringCloud有几种调用接口方式

Feign
RestTemplate

28.Ribbon和Feign调用服务的区别

Ribbon: 需要我们自己构建http请求,然后通过RestTemplate去发给其他服务,比较繁琐。
Feign: 不需要自己构建Http请求,直接接口调用就行。

Hystrix

29.说一说什么是服务雪崩

服务雪崩:多个服务相互调用时,A调B,B调C,C调D等等更多调用,那么如果中间调用需要很长时间,然后再去调用A,那么占用的资源就越来越多,导致系统崩溃。

30.Hystrix断路器是什么

防止服务雪崩的一个工具,具有服务降级、服务熔断(@HystrixCommand(fallbackMethod = “hystrixById”) //失败了调用的方法)、服务隔离、监控等防止雪崩的技术。

31.什么是服务降级、服务熔断、服务隔离

服务降级: 当出现请求超时、资源不足时(线程或者信号量),会进行服务降级,就是去返回fallback方法的结果。
服务熔断: 当失败率(网络故障或者超时造成)达到阈值自动触发降级,是一种特殊的降级。
服务隔离: 为隔离的服务开启一个独立的线程,这样在高并发情况下,也不会影响该服务。一般使用线程池实现(还有信号量方式实现)。

32.服务降级和服务熔断的区别

区别: 降级每个请求都会发送过去,而熔断不一定,达到失败率,请求就不会再去发送了。请求出错时熔断返回的是fallback数据,而熔断则是一段时间不会去访问服务提供者。
比如:
①降级:A调B,发送10个请求,即使每个请求都超时,也会去请求B。
②熔断:A调B,发送10个请求,失败率设置为50%,如果5个请求失败,此时失败率到了50%,那么后面的5个请求就不会走到B。

网关 Zuul 和 Gateway

33.什么是Zuul微服务网关

接收所有的请求,并且将不同的请求转发至不同的微服务模块。

34.Zuul的应用场景

①过滤器
②权限认证
③降级限流
④安全

35.Gateway

功能强大丰富,性能好,维护性好,实现异步,可以替代Zuul网关。

Spring Cloud Config

36.什么是Spring Cloud Config

集中管理配置文件,不需要每个服务编写配置文件,服务会向配置中心拉取配置。
实时刷新(需要spring cloud bus)。

Spring Cloud Alibaba Nacos

37.Nacos可以做什么?

注册中心和配置中心。

38.Eureka保证是AP,那么Nacos保证的是什么?默认是什么?

Nacos可以是AP也可以是CP。默认是AP

文章作者: stormling
文章链接: http://www.stormling.top/posts/19188.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 码农Stormling!
SpringCloud
cover of previous post
上一篇
面试系列(三)| 幂等性
幂等性​ HTTP/1.1 中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。 这里需要关注几个重点: 幂等不仅仅只是一次(或多次)请求对资源没有副作用(比如查询数据库操作,没有增删改,因此没有对数据库有任何影响)。 幂等还包括第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用。 幂等关注的是以后的多次请求是否对资源产生的副作用,而不关注结果。 网络超时等问题,不是幂等的讨论范围。 幂等性是系统服务对外一种承诺(而不是实现),承诺只要调用接口成功,外部多次调用对系统的影响是一致的。声明为幂等的服务会认为外部调用失败是常态,并且失败之后必然会有重试。 什么情况下需要幂等业务开发中,经常会遇到重复提交的情况,无论是由于网络问题无法收到请求结果而重新发起请求,或是前端的操作抖动而造成重复提交情况。 在交易系统,支付系统这种重复提交造成的问题有尤其明显,比如: 用户在 APP...
cover of next post
下一篇
面试系列(一)| SpringBoot 面试题
1.什么是 SpringBootSpring组件一站式解决方案,主要简化了 Spring 难度,简省了繁重的配置,提供了各种的启动器,是开发上手快 2.Spring Boot 优点 开箱即用,原理繁琐配置 内嵌服务器、安全管理、运行数据监控、运行状态检查、外部化配置 易上手开发效率高,有完善的第三方start库和官网 starter 总结:编码、配置、部署、监控 简单 2.SpringBoot 启动类注解?它是由那些注解组成?@SpringBootApplication @SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能。 @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项 @SpringBootApplication(exclude={DataSourceAutoConfiguration.class}) @ComponentScan:Spring组件扫描 3.yaml是什么用来表达数据序列化的参数 4.SpringBoot启动方式 main方法 命令行 java...

评论
ValineGitalk
avatar
stormling
文章
42
标签
25
分类
21
Follow Me
公告
欢迎大家来到Stormling博客
目录
  1. 1. 微服务基础
    1. 1.1. 1.什么是微服务架构
    2. 1.2. 2.为什么需要学习Spring Cloud
    3. 1.3. 3. Spring Cloud 是什么
    4. 1.4. 4. Spring Cloud的优缺点
    5. 1.5. 5. Spring Boot 和 Spring Cloud 区别?
    6. 1.6. 6.Spring Cloud 和 Spring Boot 版本对应关系?
    7. 1.7. 7.SpringCloud由什么组成
  2. 2. Eureka 篇
    1. 2.1. 8.服务注册和发现是什么意思?Spring Cloud 如何实现的?
    2. 2.2. 9.什么是Eureka
    3. 2.3. 10.Eureka 如何实现高可用
    4. 2.4. 11.Eureka 的自我保护机制
    5. 2.5. 12.DiscoveryClient 作用
    6. 2.6. 13.Eureka 和ZooKeeper 的区别
  3. 3. Zuul 篇
    1. 3.1. 14.什么是网关
    2. 3.2. 15.作用是什么
    3. 3.3. 16.什么是Spring Cloud Zuul (服务网关)
    4. 3.4. 17.网关和过滤器有什么区别
    5. 3.5. 18.常用的网关框架
    6. 3.6. 19.Zuul 和 Nginx区别
    7. 3.7. 20.如何设计一套API接口
    8. 3.8. 21.ZuulFilter 常用那些方法
    9. 3.9. 22.实现动态Zuul网关路由转发
  4. 4. Ribbon
    1. 4.1. 23.Ribbon的作用
    2. 4.2. 24.Ribbon的原理
    3. 4.3. 25.Ribbon和nginx的区别
  5. 5. Feign
    1. 5.1. 26 作用
    2. 5.2. 27.SpringCloud有几种调用接口方式
    3. 5.3. 28.Ribbon和Feign调用服务的区别
  6. 6. Hystrix
    1. 6.1. 29.说一说什么是服务雪崩
    2. 6.2. 30.Hystrix断路器是什么
    3. 6.3. 31.什么是服务降级、服务熔断、服务隔离
    4. 6.4. 32.服务降级和服务熔断的区别
  7. 7. 网关 Zuul 和 Gateway
    1. 7.1. 33.什么是Zuul微服务网关
    2. 7.2. 34.Zuul的应用场景
    3. 7.3. 35.Gateway
  8. 8. Spring Cloud Config
    1. 8.1. 36.什么是Spring Cloud Config
  9. 9. Spring Cloud Alibaba Nacos
    1. 9.1. 37.Nacos可以做什么?
    2. 9.2. 38.Eureka保证是AP,那么Nacos保证的是什么?默认是什么?
最新文章
面向八股文面试专场
面向八股文面试专场2025-01-22
【每日早报】-2025-01-21 - 星期二
【每日早报】-2025-01-21 - 星期二2025-01-21
规则引擎 Drools 8+ 快速入门
规则引擎 Drools 8+ 快速入门2024-12-11
数据库系列(二) | Mybatis Plus 3.0+快速入门
数据库系列(二) | Mybatis Plus 3.0+快速入门2024-12-09
分布式系列(二) | Redisson分布式锁
分布式系列(二) | Redisson分布式锁2024-12-05
©2019 - 2025 By stormling
码农Stormling程序员,关注公众号【码农Stormling】回复【面试】获取最全面试pdf
搜索
数据加载中