精华内容
下载资源
问答
  • SpringCloud最新2021面试题及答案,汇总版 1、 Spring Cloud和各子项目版本对应关系 2、 什么是客户证书? 3、 Spring Cloud OpenFeign 4、 在使用微服务架构时,您面临哪些挑战? 5、 springcloud核⼼组件及其作...

    SpringCloud最新2021年面试题及答案,汇总版

    1、 Spring Cloud和各子项目版本对应关系
    2、 什么是客户证书?
    3、 Spring Cloud OpenFeign
    4、 在使用微服务架构时,您面临哪些挑战?
    5、 springcloud核⼼组件及其作⽤,以及springcloud⼯作原理:
    6、 接⼝限流⽅法?
    7、 Spring Cloud Task

    此处,仅展示前7道,查看更多30道…

    SpringCloud最新2021年面试题大汇总,附答案

    1、 设计微服务的最佳实践是什么?
    2、 什么是REST / RESTful以及它的用途是什么?
    3、 什么是feigin?它的优点是什么?
    4、 负载平衡的意义什么?
    5、 服务网关的作用
    6、 服务降级底层是如何实现的?
    7、 微服务的端到端测试意味着什么?

    此处,仅展示前7道,查看更多30道…

    SpringCloud最新2021年面试题附答案解析,大汇总

    1、 什么是 Hystrix 断路器?我们需要它吗?
    2、 springcloud如何实现服务的注册?
    3、 微服务架构如何运作?
    4、 Web,RESTful API在微服务中的作用是什么?
    5、 什么是服务降级
    6、 什么是Eureka的自我保护模式,
    7、 什么是不同类型的双因素身份认证?

    此处,仅展示前7道,查看更多30道…

    SpringCloud最新2021年面试题,高级面试题及附答案解析

    1、 什么是有界上下文?
    2、 ZuulFilter常用有那些方法
    3、 Spring Cloud Gateway
    4、 Spring Cloud Netflix
    5、 负载均衡的意义是什么?
    6、 Spring Cloud OpenFeign
    7、 什么是耦合?

    此处,仅展示前7道,查看更多30道…

    SpringCloud最新面试题2021年,常见面试题及答案汇总

    1、 什么是Hystrix?它如何实现容错?
    2、 为什么我们需要微服务容器?
    3、 springcloud和dubbo有哪些区别
    4、 SpringCloud Config 可以实现实时刷新吗?
    5、 Zookeeper如何 保证CP
    6、 微服务之间如何独立通讯的?
    7、 什么是OAuth?

    此处,仅展示前7道,查看更多30道…

    SpringCloud最新面试题及答案附答案汇总

    1、 为什么人们会犹豫使用微服务?
    2、 Spring Cloud 是什么
    3、 为什么需要域驱动设计(DDD)?
    4、 Spring Cloud和SpringBoot版本对应关系
    5、 Spring Cloud抛弃了Dubbo 的RPC通信,采用的是基于HTTP的REST方式。
    6、 什么是SpringBoot?
    7、 微服务有什么特点?

    此处,仅展示前7道,查看更多30道…

    SpringCloud最新面试题,2021年面试题及答案汇总

    1、 什么是Spring引导的执行器?
    2、 什么是持续集成(CI)?
    3、 你对SpringBoot有什么了解?
    4、 Ribbon和Feign调用服务的区别
    5、 Spring Cloud和SpringBoot版本对应关系
    6、 微服务有哪些特点?
    7、 Ribbon是什么?

    此处,仅展示前7道,查看更多30道…

    展开全文
  • 1. Spring Cloud 基础 1.1 什么是Spring CloudSpring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载...

    推荐使用小程序阅读

    为了能让您更加方便的阅读
    本文所有的面试题目均已整理至小程序《面试手册
    可以通过微信扫描(或长按)下图的二维码享受更好的阅读体验!
    ah_xct


    文章目录


    最近梳理汇总了Java面试常遇到的面试题;并将其开发成小程序《面试手册》,方便大家阅读,可微信扫描文章开头的二维码使用;包含了Java基础并发JVM数据库SpringSpringMVCSpringBootSpringCloud设计模式MQLinuxDocker等多个类型,资料持续更新中;侵权联删。

    本人不才,如出现错误或者不准确的地方,望各位大神指正。

    分类 地址
    2021最新 Java基础面试题精选(附刷题小程序) https://lupengfei.blog.csdn.net/article/details/113404618
    2021最新 Java并发编程面试题精选(附刷题小程序) https://lupengfei.blog.csdn.net/article/details/113404925
    2021最新 Java虚拟机(JVM)精选(附刷题小程序) https://lupengfei.blog.csdn.net/article/details/113404971
    2021最新 Spring面试题精选(附刷题小程序) https://lupengfei.blog.csdn.net/article/details/113417060
    2021最新 SpringMVC面试题精选(附刷题小程序) https://lupengfei.blog.csdn.net/article/details/113417329
    2021最新 SpringBoot面试题精选(附刷题小程序) https://lupengfei.blog.csdn.net/article/details/113417545
    2021最新 Dubbo面试题精选(附刷题小程序) https://lupengfei.blog.csdn.net/article/details/114525995
    2021最新 SpringCloud面试题精选(附刷题小程序) https://lupengfei.blog.csdn.net/article/details/113428174
    2021最新 Redis常见面试题精选(附刷题小程序) https://lupengfei.blog.csdn.net/article/details/113416372
    2021最新 MySQL常见面试题精选(附刷题小程序) https://lupengfei.blog.csdn.net/article/details/113405031
    2021最新 MyBatis面试题精选(附刷题小程序) https://lupengfei.blog.csdn.net/article/details/114523271
    2021最新 RabbitMQ面试题精选(附刷题小程序) https://lupengfei.blog.csdn.net/article/details/114525479
    2021最新 Kafka面试题精选(附刷题小程序) https://lupengfei.blog.csdn.net/article/details/114001162
    2021最新 RocketMQ面试题精选(附刷题小程序) https://lupengfei.blog.csdn.net/article/details/114525762
    持续更新请关注👉👉👉 https://blog.lupf.cn/category/ms

    1. Spring Cloud 基础

    1.1 什么是微服务?

    单个轻量级服务一般为一个单独微服务,微服务讲究的是 专注某个功能的实现,比如登录系统只专注于用户登录方面功能的实现,讲究的是职责单一,开箱即用,可以独立运行。微服务架构系统是一个分布式的系统,按照业务进行划分服务单元模块,解决单个系统的不足,满足越来越复杂的业务需求。

    马丁福勒(Martin Fowler):就目前而言,对于微服务业界并没有一个统一的、标准的定义。但通常而言,微服务架构是一种架构模式或者说是架构风格,它提倡将单一应用程序划分成一组小的服务。每个服务运行在其独立的自己的进程中服务之间相互配合、相互协调,为用户提供最终价值。服务之间采用轻量级通信。每个服务都围绕具体业务进行构建,并能够独立部署到生产环境等。另外应尽量避免统一的、集中的服务管理机制。

    通俗的来讲:
    微服务就是一个独立的职责单一的服务应用程序。在 intellij idea 工具里面就是用maven开发的一个个独立的module,具体就是使用SpringBoot 开发的一个小的模块,处理单一专业的业务逻辑,一个模块只做一个事情。

    微服务强调的是服务大小,关注的是某一个点,具体解决某一个问题/落地对应的一个服务应用,可以看做是idea 里面一个 module。

    1.2 什么是微服务架构?

    理解什么是微服务,那么对于微服务架构基本上就已经理解了。

    微服务架构 就是 对微服务进行管理整合应用的。微服务架构 依赖于 微服务,是在微服务基础之上的。

    1.3 微服务的优缺点分别是什么?

    • 优点

      • 每一个服务足够内聚,代码容易理解

      • 开发效率提高,一个服务只做一件事

      • 微服务能够被小团队单独开发

      • 微服务是松耦合的,是有功能意义的服务

      • 可以用不同的语言开发,面向接口编程

      • 易于与第三方集成

      • 微服务只是业务逻辑的代码,不会和HTML,CSS或者其他界面组合

        开发中,两种开发模式

        • 前后端分离
        • 全栈工程师
      • 可以灵活搭配,连接公共库/连接独立库

    • 缺点

      • 分布式系统的负责性
      • 多服务运维难度,随着服务的增加,运维的压力也在增大
      • 系统部署依赖
      • 服务间通信成本
      • 数据一致性
      • 系统集成测试
      • 性能监控

    1.4 使用SpringBoot开发微服务面临那些问题?

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

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

    • 冗余
      分布式系统中的冗余问题。

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

    • 性能问题
      由于各种运营开销导致的性能问题。

    • 部署复杂性
      Devops 技能的要求。

    1.5 什么是Spring Cloud?

    Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册配置中心智能路由消息总线负载均衡断路器数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

    1.6 为什么要使用Spring Cloud?

    不论是商业应用还是用户应用,在业务初期都很简单,我们通常会把它实现为单体结构的应用。但是,随着业务逐渐发展,产品思想会变得越来越复杂,单体结构的应用也会越来越复杂。这就会给应用带来如下的几个问题:

    • 代码结构混乱
      业务复杂,导致代码量很大,管理会越来越困难。同时,这也会给业务的快速迭代带来巨大挑战;
    • 开发效率变低
      开发人员同时开发一套代码,很难避免代码冲突。开发过程会伴随着不断解决冲突的过程,这会严重的影响开发效率;
    • 排查解决问题成本高
      线上业务发现 bug,修复 bug 的过程可能很简单。但是,由于只有一套代码,需要重新编译、打包、上线,成本很高。

    由于单体结构的应用随着系统复杂度的增高,会暴露出各种各样的问题。近些年来,微服务架构逐渐取代了单体架构,且这种趋势将会越来越流行。Spring Cloud是目前最常用的微服务开发框架,已经在企业级开发中大量的应用。

    1.7 Spring Cloud 和dubbo区别?

    • 服务调用方式
      • dubbo是RPC
      • SpringCloud采用Rest Api
    • 注册中心
      • dubbo 是nacos、zookeeper
      • SpringCloud是eureka,也可以是nacos、zookeeper
    • 服务网关
      • dubbo本身没有实现,只能通过其他第三方技术整合,
      • SpringCloud有Zuul路由网关,作为路由服务器,进行消费者的请求分发,springcloud支持断路器,与git完美集成配置文件支持版本控制,事物总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素。

    1.8 Spring Cloud和Spring Boot的区别?

    • SpringBoot专注于快速方便的开发单个个体微服务。

    • SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务

    • SpringBoot可以离开SpringCloud独立使用开发项目, 但是SpringCloud离不开SpringBoot ,属于依赖的关系

    • SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。

    1.9 Spring Cloud的优缺点?

    优点:

    • 产出于Spring大家族,Spring在企业级开发框架中无人能敌,来头很大,可以保证后续的更新、完善
    • 组件丰富,功能齐全。Spring Cloud 为微服务架构提供了非常完整的支持。例如、配置管理、服务发现、断路器、微服务网关等;
    • Spring Cloud 社区活跃度很高,教程很丰富,遇到问题很容易找到解决方案
    • 服务拆分粒度更细,耦合度比较低,有利于资源重复利用,有利于提高开发效率
    • 可以更精准的制定优化服务方案,提高系统的可维护性
    • 减轻团队的成本,可以并行开发,不用关注其他人怎么开发,先关注自己的开发
    • 微服务可以是跨平台的,可以用任何一种语言开发
    • 适于互联网时代,产品迭代周期更短

    缺点:

    • 微服务过多,治理成本高,不利于维护系统
    • 分布式系统开发的成本高(容错,分布式事务等)对团队挑战大

    总的来说优点大过于缺点,目前看来Spring Cloud是一套非常完善的分布式框架,目前很多企业开始用微服务、Spring Cloud的优势是显而易见的。因此对于想研究微服务架构的同学来说,学习Spring Cloud是一个不错的选择。

    1.10 Spring Cloud发展前景?

    Spring Cloud对于中小型互联网公司来说是一种福音,因为这类公司往往没有实力或者没有足够的资金投入去开发自己的分布式系统基础设施,使用Spring Cloud一站式解决方案能在从容应对业务发展的同时大大减少开发成本。同时,随着近几年微服务架构和Docker容器概念的火爆,也会让Spring Cloud在未来越来越“云”化的软件开发风格中立有一席之地,尤其是在五花八门的分布式解决方案中提供了标准化的、全站式的技术方案,意义可能会堪比当年Servlet规范的诞生,有效推进服务端软件系统技术水平的进步。

    1.11 Spring Cloud整理架构是什么?

    2. Spring Cloud 技术栈

    2.1 你所知道的微服务技术栈有那些?

    维度(SpringCloud)
    服务开发:SpringBoot Spring SpringMVC
    服务配置与管理:Netfix公司的Archaiusm ,阿里的Diamond
    服务注册与发现:Eureka,Zookeeper
    服务调用: Rest RPC gRpc
    服务熔断器: Hystrix
    服务负载均衡: Ribbon Nginx
    服务接口调用: Fegin
    消息队列: Kafka Rabbitmq activemq
    服务配置中心管理: SpringCloud Config
    服务路由(API网关):Zuul GateWay
    事件消息总线:SpringCloud Bus

    2.2 Spring Cloud Config的作用?

    集中配置管理工具,分布式系统中统一的外部配置管理,默认使用Git来存储配置,可以支持客户端配置的刷新及加密、解密操作。

    在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件Spring Cloud Config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。

    使用:

    1. 添加pom依赖
    2. 配置文件添加相关配置
    3. 启动类添加注解@EnableConfigServer

    2.3 Spring Cloud Netflix的作用?

    Netflix OSS 开源组件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心组件。

    • Eureka:服务治理组件,包括服务端的注册中心和客户端的服务发现机制;
    • Ribbon:负载均衡的服务调用组件,具有多种负载均衡调用策略;
    • Hystrix:服务容错组件,实现了断路器模式,为依赖服务的出错和延迟提供了容错能力;
    • Feign:基于Ribbon和Hystrix的声明式服务调用组件;
    • Zuul:API网关组件,对请求提供路由及过滤功能。

    2.4 Spring Cloud Bus的作用?

    用于传播集群状态变化的消息总线,使用轻量级消息代理链接分布式系统中的节点,可以用来动态刷新集群中的服务配置。
    使用:

    1. 添加依赖
    2. 配置RabbitMQ

    2.5 Spring Cloud Consul的作用?

    基于Hashicorp Consul的服务治理组件。

    2.6 Spring Cloud Security的作用?

    安全工具包,对Zuul代理中的负载均衡OAuth2客户端及登录认证进行支持。

    2.7 Spring Cloud Sleuth的作用?

    Spring Cloud应用程序的分布式请求链路跟踪,支持使用Zipkin、HTrace和基于日志(例如ELK)的跟踪。

    2.8 Spring Cloud Stream的作用?

    轻量级事件驱动微服务框架,可以使用简单的声明式模型来发送及接收消息,主要实现为Apache Kafka及RabbitMQ。

    2.9 Spring Cloud Task的作用?

    用于快速构建短暂、有限数据处理任务的微服务框架,用于向应用中添加功能性和非功能性的特性。

    2.10 Spring Cloud Zookeeper的作用?

    基于Apache Zookeeper的服务治理组件。

    2.11 Spring Cloud Gateway的作用?

    Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。

    使用了一个RouteLocatorBuilder的bean去创建路由,除了创建路由RouteLocatorBuilder可以让你添加各种predicates和filters,predicates断言的意思,顾名思义就是根据具体的请求的规则,由具体的route去处理,filters是各种过滤器,用来对请求做各种判断和修改。

    2.12 Spring Cloud OpenFeign的作用?

    基于Ribbon和Hystrix的声明式服务调用组件,可以动态创建基于Spring MVC注解的接口实现用于服务调用,在Spring Cloud 2.0中已经取代Feign成为了一等公民。

    3. 服务注册与发现

    3.1 什么是服务注册和发现?Spring Cloud 如何实现?

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

    Spring Cloud通过Eureka来实现服务注册与发现;由于所有服务都在 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找,因此无需处理服务地点的任何更改和处理。

    3.2 Eureka自我保护机制是什么?

    当Eureka Server 节点在短时间内丢失了过多实例的连接时(比如网络故障或频繁启动关闭客户端)节点会进入自我保护模式,保护注册信息,不再删除注册数据,故障恢复时,自动退出自我保护模式。

    3.3 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只是一个进程

    4. 服务通讯、负载、熔断、降级

    4.1 微服务之间是如何独立通讯?各有什么优缺点?

    • 远程过程调用(Remote Procedure Invocation):
      也就是我们常说的服务的注册与发现,直接通过远程过程调用来访问别的service。

      • 优点:
        简单,常见,因为没有中间件代理,系统更简单

      • 缺点:
        只支持请求/响应的模式,不支持别的,比如通知、请求/异步响应、发布/订阅、发布/异步响应

        降低了可用性,因为客户端和服务端在请求过程中必须都是可用的

    • 消息:
      使用异步消息来做服务间通信。服务间通过消息管道来交换消息,从而通信。

      • 优点:

        • 把客户端和服务端解耦,更松耦合
        • 提高可用性,因为消息中间件缓存了消息,直到消费者可以消费
        • 支持很多通信机制比如通知、请求/异步响应、发布/订阅、发布/异步响应
      • 缺点:
        消息中间件有额外的复杂

    4.2 Rest和RPC有什么区别?

    RPC最主要的缺陷就是服务提供方和调用方式之间依赖太强,我们需要为每一个微服务进行接口的定义,并通过持续继承发布,需要严格的版本控制才不会出现服务提供和调用之间因为版本不同而产生的冲突。

    而REST是轻量级的接口,服务的提供和调用不存在代码之间的耦合,只是通过一个约定进行规范,但也有可能出现文档和接口不一致而导致的服务集成问题,但可以通过swagger工具整合,使代码和文档一体化得以解决,所以REST在分布式环境下比RPC更加灵活。
    这也是为什么当当网的DubboX在对Dubbo的增强中增加了对REST的支持的原因。

    4.3 什么是Ribbon?

    Ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。feign默认集成了ribbon

    4.4 什么是 Netflix Feign?它的优点是什么?

    Feign 是受到 Retrofit,JAXRS-2.0 和 WebSocket 启发的 java 客户端联编程序。

    Feign 的第一个目标是将约束分母的复杂性统一到 http apis,而不考虑其稳定性。

    在 employee-consumer 的例子中,我们使用了 employee-producer 使用 REST模板公开的 REST 服务。

    但是我们必须编写大量代码才能执行以下步骤

    1. 使用功能区进行负载平衡。

    2. 获取服务实例,然后获取基本 URL。

    3. 利用 REST 模板来使用服务。 前面的代码如下

    @Controller
    public class ConsumerControllerClient {
    @Autowired
    private LoadBalancerClient loadBalancer;
    public void getEmployee() throws RestClientException, IOException {
    	ServiceInstance serviceInstance=loadBalancer.choose("employee-producer");
    	System.out.println(serviceInstance.getUri());
    	String baseUrl=serviceInstance.getUri().toString();
    	baseUrl=baseUrl+"/employee";
    	RestTemplate restTemplate = new RestTemplate();
    	ResponseEntity<String> response=null;
    	try{
    		response=restTemplate.exchange(baseUrl,
    					HttpMethod.GET, getHeaders(),String.class);
    	}
    	catch (Exception ex)
    		{
    		System.out.println(ex);
    	}
    	System.out.println(response.getBody());
    }
    

    之前的代码,有像 NullPointer 这样的例外的机会,并不是最优的。我们将看到如何使用 Netflix Feign 使呼叫变得更加轻松和清洁。如果 Netflix Ribbon 依赖关系也在类路径中,那么 Feign 默认也会负责负载平衡。

    4.5 Ribbon和Feign的区别?

    1. Ribbon都是调用其他服务的,但方式不同。
    2. 启动类注解不同,Ribbon是@RibbonClient feign的是@EnableFeignClients
    3. 服务指定的位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。
    4. 调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。Feign需要将调用的方法定义成抽象方法即可。

    4.6 负载均衡的意义什么?

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

    4.7 什么是服务熔断?什么是服务降级?

    在复杂的分布式系统中,微服务之间的相互调用,有可能出现各种各样的原因导致服务的阻塞,在高并发场景下,服务的阻塞意味着线程的阻塞,导致当前线程不可用,服务器的线程全部阻塞,导致服务器崩溃,由于服务之间的调用关系是同步的,会对整个微服务系统造成服务雪崩

    为了解决某个微服务的调用响应时间过长或者不可用进而占用越来越多的系统资源引起雪崩效应就需要进行服务熔断和服务降级处理。

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

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

    4.8 Hystrix相关核心注解有哪几个?

    • @EnableHystrix:
      开启熔断
    • @HystrixCommand(fallbackMethod=”XXX”):
      声明一个失败回滚处理函数XXX,当被注解的方法执行超时(默认是1000毫秒),就会执行fallback函数,返回错误提示。

    4.9 Spring Cloud断路器的作用?

    当一个服务调用另一个服务由于网络原因或自身原因出现问题,调用者就会等待被调用者的响应 当更多的服务请求到这些资源导致更多的请求等待,发生连锁效应(雪崩效应)

    断路器有完全打开状态:一段时间内 达到一定的次数无法调用 并且多次监测没有恢复的迹象 断路器完全打开 那么下次请求就不会请求到该服务

    半开:短时间内 有恢复迹象 断路器会将部分请求发给该服务,正常调用时 断路器关闭

    关闭:当服务一直处于正常状态 能正常调用

    4.10 什么是 Hystrix?它如何实现容错?

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

    通常对于使用微服务架构开发的系统,涉及到许多微服务。这些微服务彼此协作。

    思考以下微服务

    img

    假设如果上图中的微服务 9 失败了,那么使用传统方法我们将传播一个异常。但这仍然会导致整个系统崩溃。

    随着微服务数量的增加,这个问题变得更加复杂。微服务的数量可以高达 1000.这是 hystrix 出现的地方 我们将使用 Hystrix 在这种情况下的 Fallback 方法功能。我们有两个服务 employee-consumer 使用由 employee-consumer 公开的服务。

    简化图如下所示

    img

    现在假设由于某种原因,employee-producer 公开的服务会抛出异常。我们在这种情况下使用 Hystrix 定义了一个回退方法。这种后备方法应该具有与公开服务相同的返回类型。如果暴露服务中出现异常,则回退方法将返回一些值。


    微信扫码关注公众号,回复【资料】获取更多粉丝福利、学习、面试资料。

    展开全文
  • 5. SpringBoot和SpringCloud的区别? 6. Spring Cloud和SpringBoot版本对应关系 7. SpringCloud由什么组成 8. 使用 Spring Boot 开发分布式微服务时,我们面临什么问题 9. Spring Cloud 和dubbo区别? 10. 服务...

    目录

    前言

    一、 什么是微服务架构

    1. 什么是微服务架构

    2. 为什么需要学习Spring Cloud

    3. Spring Cloud 是什么

    4. SpringCloud的优缺点

    5. SpringBoot和SpringCloud的区别?

    6. Spring Cloud和SpringBoot版本对应关系

    7. SpringCloud由什么组成

    8. 使用 Spring Boot 开发分布式微服务时,我们面临什么问题

    9. Spring Cloud 和dubbo区别?

    二、Eureka

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

    11. 什么是Eureka

    12. Eureka怎么实现高可用

    13. 什么是Eureka的自我保护模式,

    14. DiscoveryClient的作用

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

    三、Zuul

    16. 什么是网关?

    17. 网关的作用是什么

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

    19. 网关与过滤器有什么区别

    20. 常用网关框架有那些?

    21. Zuul与Nginx有什么区别?

    22. 既然Nginx可以实现网关?为什么还需要使用Zuul框架

    23. 如何设计一套API接口

    24. ZuulFilter常用有那些方法

    25. 如何实现动态Zuul网关路由转发

    26. Zuul网关如何搭建集群

    四、Ribbon

    27. 负载平衡的意义什么?

    28. Ribbon是什么?

    29. Nginx与Ribbon的区别

    30. Ribbon底层实现原理

    @LoadBalanced注解的作用

    五、Hystrix

    31. 什么是断路器

    32. 什么是 Hystrix?

    33. 谈谈服务雪崩效应

    34. 在微服务中,如何保护服务?

    35. 服务雪崩效应产生的原因

    36. 谈谈服务降级、熔断、服务隔离

    37. 服务降级底层是如何实现的?

    六、Feign

    38. 什么是Feign?

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

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

    七、Bus

    41. 什么是 Spring Cloud Bus?

    八、Config

    42. 什么是Spring Cloud Config?

    43. 分布式配置中心有那些框架?

    44. 分布式配置中心的作用?

    45. SpringCloud Config 可以实现实时刷新吗?

    九、Gateway

    46. 什么是Spring Cloud Gateway?

    十、 SpringCloud主要项目

    47. SpringCloud主要项目

    Spring Cloud Config

    Spring Cloud Netflix(重点,这些组件用的最多)

    Spring Cloud Bus

    Spring Cloud Consul

    Spring Cloud Security

    Spring Cloud Sleuth

    Spring Cloud Stream

    Spring Cloud Task

    Spring Cloud Zookeeper

    Spring Cloud Gateway

    Spring Cloud OpenFeign

    Spring Cloud的版本关系

    48. Spring Cloud和SpringBoot版本对应关系

    49. Spring Cloud和各子项目版本对应关系

    最后


    前言

    Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。Spring Cloud 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

    小编分享的这份金三银四Java后端开发面试总结包含了JavaOOP、Java集合容器、Java异常、并发编程、Java反射、Java序列化、JVM、Redis、Spring MVC、MyBatis、MySQL数据库、消息中间件MQ、Dubbo、Linux、ZooKeeper、 分布式&数据结构与算法等26个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝靠这份PDF拿下众多大厂的offer,今天在这里总结分享给到大家!【持续更新中!】

    完整版Java面试题地址:2021最新面试题合集集锦

    序号 专题 内容 链接地址
    1 中间件 【金三银四】Java中间件面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/114002362
    2 微服务 【金三银四】Java微服务面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/113923549
    3 并发编程 【金三银四】Java并发编程面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/113895576
    4  Java基础 【金三银四】Java基础知识面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115146056
    5 Spring Boot 【金三银四】Spring Boot面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115186811
    6  Redis 【金三银四】Redis面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115188010
    7  Spring MVC 【金三银四】Spring MVC面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115220638
    8 Spring Cloud 【金三银四】Spring Cloud面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115220987
    9 MySQL优化 【金三银四】MySQL优化面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115254620
    10 JVM 【金三银四】JVM性能调优面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115283079
    11 Linux 【金三银四】Linux面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115283583
    12 Mybatis 【金三银四】Mybatis面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115285732
    13 网络编程 【金三银四】TCP,UDP,Socket,Http网络编程面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115464896
    14 设计模式 【金三银四】设计模式面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115466449
    15 大数据 金三银四】大数据面试题100道(2021最新版) https://blog.csdn.net/SQY0809/article/details/115484939
    16 Tomcat 【金三银四】Tomcat面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115486648
    17 多线程 【金三银四】多线程面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115487212
    18 Nginx 【金三银四】Nginx_BIO_NIO_AIO面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115488446
    19 memcache 【金三银四】memcache面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115494213
    20 java异常 【金三银四】java异常面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115530401
    21 Java虚拟机 【金三银四】Java虚拟机面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115532365
    22 Java集合 【金三银四】Java集合面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115599284
    23 Git常用命令 【金三银四】Git常用命令(2021最新版) https://blog.csdn.net/SQY0809/article/details/115602390
    24 Elasticsearch 【金三银四】Elasticsearch面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115604293
    25 Dubbo 【金三银四】Dubbo面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115605560

    一、 什么是微服务架构

    1. 什么是微服务架构

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

    2. 为什么需要学习Spring Cloud

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

    3. Spring Cloud 是什么

    • Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
    • Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

    4. SpringCloud的优缺点

    优点:

    1.耦合度比较低。不会影响其他模块的开发。

    2.减轻团队的成本,可以并行开发,不用关注其他人怎么开发,先关注自己的开发。

    3.配置比较简单,基本用注解就能实现,不用使用过多的配置文件。

    4.微服务跨平台的,可以用任何一种语言开发。

    5.每个微服务可以有自己的独立的数据库也有用公共的数据库。

    6.直接写后端的代码,不用关注前端怎么开发,直接写自己的后端代码即可,然后暴露接口,通过组件进行服务通信。

    缺点:

    1.部署比较麻烦,给运维工程师带来一定的麻烦。

    2.针对数据的管理比麻烦,因为微服务可以每个微服务使用一个数据库。

    3.系统集成测试比较麻烦

    4.性能的监控比较麻烦。【最好开发一个大屏监控系统】

    • 总的来说优点大过于缺点,目前看来Spring Cloud是一套非常完善的分布式框架,目前很多企业开始用微服务、Spring Cloud的优势是显而易见的。因此对于想研究微服务架构的同学来说,学习Spring Cloud是一个不错的选择。

    5. SpringBoot和SpringCloud的区别?

    • SpringBoot专注于快速方便的开发单个个体微服务。
    • SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,
    • 为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务
    • SpringBoot可以离开SpringCloud独立使用开发项目, 但是SpringCloud离不开SpringBoot ,属于依赖的关系
    • SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。

    6. Spring Cloud和SpringBoot版本对应关系

    7. SpringCloud由什么组成

    • 这就有很多了,我讲几个开发中最重要的
    • Spring Cloud Eureka:服务注册与发现
    • Spring Cloud Zuul:服务网关
    • Spring Cloud Ribbon:客户端负载均衡
    • Spring Cloud Feign:声明性的Web服务客户端
    • Spring Cloud Hystrix:断路器
    • Spring Cloud Confifig:分布式统一配置管理
    • 20几个框架,开源一直在更新

    8. 使用 Spring Boot 开发分布式微服务时,我们面临什么问题

    • 1)与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。
    • 2)服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。
    • 3)冗余-分布式系统中的冗余问题。
    • 4)负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布。
    • 5)性能-问题 由于各种运营开销导致的性能问题。

    9. Spring Cloud 和dubbo区别?

    • 1)服务调用方式:dubboRPC springcloud Rest Api
    • 2)注册中心:dubbo zookeeper springcloudeureka,也可以是zookeeper
    • 3)服务网关,dubbo本身没有实现,只能通过其他第三方技术整合,springcloudZuul路由网关,作为路由服务器,进行消费者的请求分发,springcloud支持断路器,与git完美集成配置文件支持版本控制,事物总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素。

    二、Eureka

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

    11. 什么是Eureka

    • Eureka作为SpringCloud的服务注册功能服务器,他是服务注册中心,系统中的其他服务使用Eureka的客户端将其连接到Eureka Service中,并且保持心跳,这样工作人员可以通过EurekaService来监控各个微服务是否运行正常。

    12. Eureka怎么实现高可用

    • 集群吧,注册多台Eureka,然后把SpringCloud服务互相注册,客户端从Eureka获取信息时,按照Eureka的顺序来访问。

    13. 什么是Eureka的自我保护模式,

    • 默认情况下,如果Eureka Service在一定时间内没有接收到某个微服务的心跳,Eureka Service会进入自我保护模式,在该模式下Eureka Service会保护服务注册表中的信息,不在删除注册表中的数据,当网络故障恢复后,Eureka Servic 节点会自动退出自我保护模式

    14. DiscoveryClient的作用

    • 可以从注册中心中根据服务别名获取注册的服务器信息。

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

    1. ZooKeeper中的节点服务挂了就要选举 在选举期间注册服务瘫痪,虽然服务最终会恢复,但是选举期间不可用的, 选举就是改微服务做了集群,必须有一台主其他的都是从

    2. Eureka各个节点是平等关系,服务器挂了没关系,只要有一台Eureka就可以保证服务可用,数据都是最新的。 如果查询到的数据并不是最新的,就是因为Eureka的自我保护模式导致的

    3. Eureka本质上是一个工程,ZooKeeper只是一个进程

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

    5. ZooKeeper保证的是CPEureka保证的是AP

    CAP C:一致性>Consistency; 取舍:(强一致性、单调一致性、会话一致性、最终一致性、弱一致性) A:可用性>Availability; P:分区容错性>Partition tolerance;

    三、Zuul

    16. 什么是网关?

    • 网关相当于一个网络服务架构的入口,所有网络请求必须通过网关转发到具体的服务。

    17. 网关的作用是什么

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

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

    19. 网关与过滤器有什么区别

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

    20. 常用网关框架有那些?

    • NginxZuulGateway

    21. Zuul与Nginx有什么区别?

    • Zuuljava语言实现的,主要为java服务提供网关服务,尤其在微服务架构中可以更加灵活的对网关进行操作。Nginx是使用C语言实现,性能高于Zuul,但是实现自定义操作需要熟悉lua语言,对程序员要求较高,可以使用NginxZuul集群。

    22. 既然Nginx可以实现网关?为什么还需要使用Zuul框架

    • ZuulSpringCloud集成的网关,使用Java语言编写,可以对SpringCloud架构提供更灵活的服务。

    23. 如何设计一套API接口

    • 考虑到API接口的分类可以将API接口分为开发API接口和内网API接口,内网API接口用于局域网,为内部服务器提供服务。开放API接口用于对外部合作单位提供接口调用,需要遵循Oauth2.0权限认证协议。同时还需要考虑安全性、幂等性等问题。

    24. ZuulFilter常用有那些方法

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

    25. 如何实现动态Zuul网关路由转发

    • 通过path配置拦截请求,通过ServiceId到配置中心获取转发的服务列表,Zuul内部使用Ribbon实现本地负载均衡和转发。

    26. Zuul网关如何搭建集群

    • 使用Nginxupstream设置Zuul服务集群,通过location拦截请求并转发到upstream,默认使用轮询机制对Zuul集群发送请求。

    四、Ribbon

    27. 负载平衡的意义什么?

    28. Ribbon是什么?

    29. Nginx与Ribbon的区别

    30. Ribbon底层实现原理

    • Ribbon使用discoveryClient从注册中心读取目标服务信息,对同一接口请求进行计数,使用%取余算法获取目标服务集群索引,返回获取到的目标服务信息。

    @LoadBalanced注解的作用

    • 开启客户端负载均衡。

    五、Hystrix

    31. 什么是断路器

    32. 什么是 Hystrix?

    33. 谈谈服务雪崩效应

    34. 在微服务中,如何保护服务?

    35. 服务雪崩效应产生的原因

    • 因为Tomcat默认情况下只有一个线程池来维护客户端发送的所有的请求,这时候某一接口在某一时刻被大量访问就会占据tomcat线程池中的所有线程,其他请求处于等待状态,无法连接到服务接口。

    36. 谈谈服务降级、熔断、服务隔离

    37. 服务降级底层是如何实现的?

    • Hystrix实现服务降级的功能是通过重写HystrixCommand中的getFallback()方法,当Hystrixrun方法或construct执行发生错误时转而执行getFallback()方法。

    六、Feign

    38. 什么是Feign?

    • Feign 是一个声明web服务客户端,这使得编写web服务客户端更容易
    • 他将我们需要调用的服务方法定义成抽象方法保存在本地就可以了,不需要自己构建Http请求了,直接调用接口就行了,不过要注意,调用方法要和本地抽象方法的签名完全一致。

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

    • Feign
    • RestTemplate

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

    七、Bus

    41. 什么是 Spring Cloud Bus?

    八、Config

    42. 什么是Spring Cloud Config?

    43. 分布式配置中心有那些框架?

    • Apollozookeeperspringcloud confifig

    44. 分布式配置中心的作用?

    • 动态变更项目配置信息而不必重新部署项目。

    45. SpringCloud Config 可以实现实时刷新吗?

    • springcloud confifig实时刷新采用SpringCloud Bus消息总线。

    九、Gateway

    46. 什么是Spring Cloud Gateway?

    十、 SpringCloud主要项目

    47. SpringCloud主要项目

    • Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架"Spring Boot"的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如Spring CloudStream扮演的就是kafka, ActiveMQ这样的角色。

    Spring Cloud Config

    Spring Cloud Netflix(重点,这些组件用的最多)

    Spring Cloud Bus

    Spring Cloud Consul

    Spring Cloud Security

    Spring Cloud Sleuth

    Spring Cloud Stream

    • 轻量级事件驱动微服务框架,可以使用简单的声明式模型来发送及接收消息,主要实现为Apache Kafka及RabbitMQ

    Spring Cloud Task

    • Spring Cloud Task的目标是为Spring Boot应用程序提供创建短运行期微服务的功能。在Spring Cloud Task中,我们可以灵活地动态运行任何任务,按需分配资源并在任务完成后检索结果。 Tasks是Spring Cloud Data Flow中的一个基础项目,允许用户将几乎任何Spring Boot应用程序作为一个短期任务执行。

    Spring Cloud Zookeeper

    • SpringCloud支持三种注册方式Eureka Consul(go语言编写)zookeeper
    • Spring Cloud Zookeeper是基于Apache Zookeeper的服务治理组件。

    Spring Cloud Gateway

    Spring Cloud OpenFeign

    • Feign是一个声明性的Web服务客户端。它使编写Web服务客户端变得更容易。要使用Feign,我们可以将调用的服务方法定义成抽象方法保存在本地添加一点点注解就可以了,不需要自己构建Http请求了,直接调用接口就行了,不过要注意,调用方法要和本地抽象方法的签名完全一致。

    Spring Cloud的版本关系

    48. Spring Cloud和SpringBoot版本对应关系

    49. Spring Cloud和各子项目版本对应关系

    面试题答案解析完整文档:【Spring Cloud面试题【附答案解析】

    最后

    小编分享的文章到这里就结束了,整理不易,欢迎大家一起交流,喜欢小编分享的文章记得关注我点赞哟,感谢支持!

    展开全文
  • 文章目录1、什么是Spring Cloud?2、使用Spring Cloud有什么优势?...Spring Cloud如何实现?4、负载平衡的意义什么?...9、SpringBoot和SpringCloud的区别?10、Spring Cloud和SpringBoot版本对应关系11、Spri

    文章目录

    最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、SpringCloud、SpringBoot、RabbitMQ、Dubbo、MyBatis、ZooKeeper、数据结构、算法、Elasticsearch、Kafka、微服务、Linux等等。可以分享给大家学习。【持续更新中】

    完整版Java面试题地址:【2021最新版】Java面试真题汇总

    序号 内容 地址链接
    1 【2021最新版】JavaOOP面试题总结 https://blog.csdn.net/m0_48795607/article/details/115288673
    2 【2021最新版】Java基础面试题总结 https://blog.csdn.net/m0_48795607/article/details/115485109
    3 【2021最新版】多线程&并发面试题总结 https://blog.csdn.net/m0_48795607/article/details/115489616
    4 【2021最新版】JVM面试题总结 https://blog.csdn.net/m0_48795607/article/details/115555086
    5 【2021最新版】Mysql面试题总结 https://blog.csdn.net/m0_48795607/article/details/115561030
    6 【2021最新版】Redis面试题总结 https://blog.csdn.net/m0_48795607/article/details/115642129
    7 【2021最新版】Memcached面试题总结 https://blog.csdn.net/m0_48795607/article/details/115664662
    8 【2021最新版】MongoDB面试题总结 https://blog.csdn.net/m0_48795607/article/details/115672336
    9 【2021最新版】Spring面试题总结 https://blog.csdn.net/m0_48795607/article/details/115738909
    10 【2021最新版】Spring Boot面试题总结 https://blog.csdn.net/m0_48795607/article/details/115771307
    11 【2021最新版】RabbitMQ面试题总结 https://blog.csdn.net/m0_48795607/article/details/116064045
    12 【2021最新版】Dubbo面试题总结 https://blog.csdn.net/m0_48795607/article/details/116237861
    13 【2021最新版】MyBatis面试题总结 https://blog.csdn.net/m0_48795607/article/details/116427170
    14 【2021最新版】ZooKeeper面试题总结 https://blog.csdn.net/m0_48795607/article/details/116458096
    15 【2021最新版】数据结构面试题总结 https://blog.csdn.net/m0_48795607/article/details/116461620
    16 【2021最新版】算法面试题总结 https://blog.csdn.net/m0_48795607/article/details/116461620
    17 【2021最新版】Elasticsearch面试题总结 https://blog.csdn.net/m0_48795607/article/details/116656094
    18 【2021最新版】Kafka面试题总结 https://blog.csdn.net/m0_48795607/article/details/116659584
    19 【2021最新版】微服务面试题总结 https://blog.csdn.net/m0_48795607/article/details/116662109
    20 【2021最新版】Linux面试题总结 https://blog.csdn.net/m0_48795607/article/details/116798880

    1、什么是Spring Cloud?

    答:

    Spring cloud 流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。

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

    答:

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

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

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

    3、冗余-分布式系统中的冗余问题。

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

    5、性能-问题 由于各种运营开销导致的性能问题。

    6、部署复杂性-Devops 技能的要求。

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

    答:

    当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有
    些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。 Eureka 服务注册和发现可以在这种情况下提供帮助。由
    于所有服务都在 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找,因此无需处理服务地点的任何更改和处理。

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

    答:

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

    5、什么是Hystrix?它如何实现容错?

    答:

    Hystrix 是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的
    分布式系统中实现弹性。通常对于使用微服务架构开发的系统,涉及到许多微服务。这些微服务彼此协作。思考以下微服务

    假设如果上图中的微服务 9 失败了,那么使用传统方法我们将传播一个异常。但这仍然会导致整个系统崩溃。 随着微服务数量的增加,这个问题变得更加复杂。微服务的数量可以高达 1000.这是 hystrix 出现的地方 我们将使用 Hystrix 在这种情况下的 Fallback 方法功能。我们有两个服务 employee-consumer 使用由 employee-consumer 公开的服务。简化图如下所示

    6、什么是Hystrix 断路器?我们需要它吗?

    答:

    由于某些原因,employee-consumer公开服务会引发异常。在这种情况下使用Hystrix我们定义了一个回退方法。如果在公开服务中发生异常,则回退方法返回一些默认值。

    如果 firstPage method() 中的异常继续发生,则Hystrix 电路将中断,并且员工使用者将一起跳过firtsPage方法,并直接调用回退方法。

    断路器的目的是给第一页方法或第一页方法可能调用的其他方法留出时间,并导致异常恢复。可能发生的情况是,在负载较小的情况下,导致异常的问题有更好的恢复机会 。

    7、什么是Netflix Feign?它的优点是什么?

    答:

    Feign是受到Retrofit,JAXRS-2.0和WebSocket 启发的 java 客户端联编程序。Feign的第一个目标是将约束分母的复杂性一到 httpapis,而不考虑其稳定性。在 employee-consumer 的例子中,我们使用了 employee-producer使用REST模板公开的REST服务。

    但是我们必须编写大量代码才能执行以下步骤

    1、使用功能区进行负载平衡。

    2、获取服务实例,然后获取基本URL。

    3、利用REST模板来使用服务。 前面的代码如下:

    之前的代码,有像NullPointer这样的例外的机会,并不是最优的。我们将看到如何使用Netflix Feign使呼叫变得更加轻松和清洁。如果Netflix Ribbon依赖关系也在类路径中,那么Feign默认也会负责负载平衡。

    8、什么是Spring Cloud Bus?我们需要它吗?

    答:

    考虑以下情况:我们有多个应用程序使用Spring Cloud Config读取属性,而Spring Cloud Config从GIT读取这些属性。
    下面的例子中多个员工生产者模块从Employee Config Module获取Eureka注册的财产

    如果假设GIT中的Eureka注册属性更改为指向另一台Eureka服务器,会发生什么情况。在这种情况下,我们将不得不重新启动服务以获取更新的属性。还有另一种使用执行器端点/刷新的方式。但是我们将不得不为每个模块单独调用这个url。例如,如果EmployeeProducer1部署在端口8080上,则调用http:// localhost:8080/refresh。同样对于Employee Producer2 http://localhost:8081/refresh等等。这又很麻烦。这就是Spring Cloud Bus发挥作用的地方。

    Spring Cloud Bus提供了跨多个实例刷新配置的功能。因此,在上面的示例中,如果我们刷新Employee Producer1,则会自动刷新所有其他必需的模块。如果我们有多个微服务启动并运行,这特别有用。这是通过将所有微服务连接到单个消息代理来实现的。无论何时刷新实例,此事件都会订阅到侦听此代理的所有微服务,并且它们也会刷新。可以通过使用端点/总线/刷新来实现对任何单个实例的刷新。

    9、SpringBoot和SpringCloud的区别?

    答:

    SpringBoot专注于快速方便的开发单个个体微服务。

    SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务SpringBoot可以离开SpringCloud独立使用开发项目, 但是SpringCloud离不开SpringBoot ,属于依赖的关系SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。

    10、Spring Cloud和SpringBoot版本对应关系

    答:

    11、SpringCloud由什么组成

    答:

    12、使用 Spring Boot开发分布式微服务时,我们面临什么问题?

    答:
    在这里插入图片描述

    13、Spring Cloud和dubbo区别?

    答:

    Eureka

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

    答:

    15、什么是Eureka?

    答:
    在这里插入图片描述

    16、Eureka怎么实现高可用

    答:
    在这里插入图片描述

    17、什么是Eureka的自我保护模式?

    答:
    在这里插入图片描述

    18、DiscoveryClient的作用

    答:
    在这里插入图片描述

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

    答:

    1. ZooKeeper中的节点服务挂了就要选举 在选举期间注册服务瘫痪,虽然服务最终会恢复,但是选举期间不可用的, 选举就是改微服务做了集群,必须有一台主其他的都是从

    2. Eureka各个节点是平等关系,服务器挂了没关系,只要有一台Eureka就可以保证服务可用,数据都是最新的。 如果查询到的数据并不是最新的,就是因为Eureka的自我保护模式导致的

    3. Eureka本质上是一个工程,而ZooKeeper只是一个进程

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

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

    CAP:

    C:一致性>Consistency; 取舍:(强一致性、单调一致性、会话一致性、最终一致性、弱一致性)

    A:可用性>Availability;

    P:分区容错性>Partition tolerance;

    Zuul

    1、什么是网关?

    答:
    在这里插入图片描述

    2、网关的作用是什么?

    答:

    3、什么是Spring Cloud Zuul(服务网关)

    答:
    在这里插入图片描述

    4、网关与过滤器有什么区别?

    答:
    在这里插入图片描述

    5、常用网关框架有那些?

    答:
    在这里插入图片描述

    6、Zuul与Nginx有什么区别?

    答:
    在这里插入图片描述

    7、既然Nginx可以实现网关?为什么还需要使用Zuul框架

    答:
    在这里插入图片描述

    8、如何设计一套API接口?

    答:
    在这里插入图片描述

    9、ZuulFilter常用有那些方法?

    答:
    在这里插入图片描述

    10、如何实现动态Zuul网关路由转发?

    答:
    在这里插入图片描述

    11、Zuul网关如何搭建集群?

    答:
    在这里插入图片描述

    Ribbon

    1、负载平衡的意义什么?

    答:
    在这里插入图片描述

    2、Ribbon是什么?

    答:
    在这里插入图片描述

    3、Nginx与Ribbon的区别?

    答:
    在这里插入图片描述

    4、Ribbon底层实现原理?

    答:
    在这里插入图片描述
    @LoadBalanced注解的作用

    开启客户端负载均衡。

    Hystrix

    1、什么是断路器?

    答:
    在这里插入图片描述

    2、什么是Hystrix?

    答:
    在这里插入图片描述

    3、谈谈服务雪崩效应?

    答:
    在这里插入图片描述

    4、在微服务中,如何保护服务?

    在这里插入图片描述

    5、服务雪崩效应产生的原因

    答:
    在这里插入图片描述

    6、谈谈服务降级、熔断、服务隔离

    答:
    在这里插入图片描述

    7、服务降级底层是如何实现的?

    答:
    在这里插入图片描述

    Feign

    1、什么是Feign?

    答:
    在这里插入图片描述

    2、SpringCloud有几种调用接口方式?

    答:
    在这里插入图片描述

    3、Ribbon和Feign调用服务的区别?

    答:
    在这里插入图片描述

    Bus

    1、什么是 Spring Cloud Bus?

    答:
    在这里插入图片描述

    Confifig

    1、什么是Spring Cloud Confifig?

    答:
    在这里插入图片描述

    2、分布式配置中心有那些框架?

    答:
    在这里插入图片描述

    3、分布式配置中心的作用?

    答:
    在这里插入图片描述

    4、SpringCloud Confifig 可以实现实时刷新吗?

    答:
    在这里插入图片描述

    Gateway

    1、什么是Spring Cloud Gateway?

    答:

    2、SpringCloud主要项目

    答:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    Spring Cloud Sleuth

    在微服务中,通常根据业务模块分服务,项目中前端发起一个请求,后端可能跨几个服务调用才能完成这个请求(如下图)。

    如果系统越来越庞大,服务之间的调用与被调用关系就会变得很复杂,假如一个请求中需要跨几个服务调用,其中一个服务由于网络延迟等原因挂掉了,那么这时候我们需要分析具体哪一个服务出问题了就会显得很困难。Spring Cloud Sleuth服务链路跟踪功能就可以帮助我们快速的发现错误根源以及监控分析每条请求链路上的性能等等。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3、Spring Cloud和SpringBoot版本对应关系

    答:

    4、Spring Cloud和各子项目版本对应关系

    答:

    总结

    该面试题答案解析完整文档获取方式:Spring Cloud面试题总结

    展开全文
  • 2021最新版SpringCloud高频面试题分享

    千次阅读 2021-04-27 09:20:54
    2021最新版SpringCloud高频面试题分享
  • 13 简单说一下Springcloud Netflix hystrix Hystrix是国外知名的视频网站Netflix所开源的非常流行的高可用架构框架。Hystrix能够完美的解决分布式系统架构中打造高可用服务面临的一系列技术难题。 Hystrix “豪猪...
  • 最近面试的小伙伴很多,对此我整理了一份Java面试题手册:基础知识、JavaOOP、Java集合/泛型面试题、Java异常面试题、Java中的IO与NIO面试题、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis...
  • 内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、SpringBoot、SpringCloud、RabbitMQ、Kafka、Linux等技术栈。 完整版Java面试题地址:JAVA后端面试题整合 1、什么是 ...
  • 今年的金三银四已经过去一大半了,在这其中参与过不少面试2021都说工作不好找,这也是对开发人员的要求变向的提高了。 之前在Github上收获15K+star的Java核心神技(这参数,质量多高就不用我多说了吧)非常全面,...
  • 内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、SpringBoot、SpringCloud、RabbitMQ、Kafka、Linux等技术栈。 完整版Java面试题地址:JAVA后端面试题整合 1、您对...
  • 3. SpringBoot与SpringCloud 区别 4. Spring Boot 有哪些优点? 5. Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的? 6. Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个? 7. SpringBoot ...
  • 所以这里整理了一份阿里、美团、滴滴、头条等大厂面试大全其中概括的知识点有:Java基础、spring、springmvc、springboot、springcloud、JVM、Tomcat、dubbo、netty、zookeeper共有500+道面试题 面试题整理十分全面...
  • 集合、JVM、多线程、并发编程、设计模式、SpringBoot、SpringCloud、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat、Python、HTML、...
  • 面试,难还是不难?最终结果好还是不好?取决于面试者的底蕴(气场+技能)、心态和认知以及沟通技巧。而一些主流的大型互联网公司面试更是需要你在面试时展现出自己的能力,从而获得面试官的欣赏和肯定。 而程序员...
  • 本文收集整理了各大厂常见面试题N道,你想要的这里都有内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、SpringSpring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈...
  • 说了这么多,下面进入我们本文的主题,我们这份面试题,包含的内容了十九了模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、...
  • 写在前面: 我是 「扬帆向阳」,这个昵称来源于我的名字以及我对知识的渴望。我热爱技术、热爱开源、热爱编程。...微服务解决方案选型:1.2 常见面试题2. 微服务概述2.1 什么是微服务?2.2 微服务与微服务架构概念..
  • 这本面试手册包含了Java基础、Java集合、JVM、SpringSpring Boot、Spring Cloud、Mysql、Redis、RabbitMQ、Dubbo、Netty、分布式及架构设计等方面的技术点。内容难度参差,满足初中高级Java工程师的面试需求。
  • 2021java面试题

    2021-01-27 18:04:14
    用了springcloud哪些组件? 1.mybatis事务隔离级别 mybatis有四种事务隔离级别(层级递减): Serializable (串行化):最严格的级别,事务串行执行,资源消耗最大; Repeatable Read(可重复读) :保证了一个事务...
  • Alibaba作为国内互联网行业的“老大”,一直以来也是很多“数码宝贝”梦寐以求的公司,我个人是做Java开发的,阿里这些年也开发了很多屌炸天的开源项目,像什么Spring Cloud Alibaba,开源Java诊断工具Arthas,...
  • 这本面试手册包含了Java基础、Java集合、JVM、SpringSpring Boot、Spring Cloud、Mysql、Redis、RabbitMQ、Dubbo、Netty、分布式及架构设计等方面的技术点。内容难度参差,满足初中高级Java工程师的面试需求。
  • Java终极面试题合集,这只是一部分...消息中间件、Dubbo、JVM、Kafka、Linux、MongoDB、MyBatis、MySQL、Netty、Nginx、Redis、Spring、SpringBoot、SpringCloud、SpringMVC、Zookeeper、并发编程、多线程、集合框架、
  • 面试题包括以下十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、...
  • 随着技术的发展,Spring 从往日的 IoC 框架,已发展成 Cloud Native 基础设施,衍生出大量 Spring 技术栈,如大家熟知的 Spring Boot、Spring CloudSpring Security 等。 我相信很多程序员不管是在面试中,还是...
  • 1.1,高频面试题 Java基础 计算机网络 操作系统 Linux 塞尔维尔特 春天 春云 冬眠 撑杆 Mybatis MySQL 雷迪斯 Nginx的 动物园管理员 智商 工具篇 项目深度 原始码 ...... 1.2,牛客网总结题 75道牛客网真题 1.3,...
  • 这本面试手册共214页,包含了Java基础、Java集合、JVM、SpringSpring Boot、Spring Cloud、Mysql...Java面试题大全(备战2021)就像学生时期做阅读题,先看题目,再去阅读,这样学习事半功倍,适合系统的学习java知识
  • 这几年在Java工程师招聘时,会看到很多人的简历都写着使用了Spring Cloud做微服务实现,使用Docker做自动化部署,并且也会把这些做为自己的亮点。而比较有趣的这其中以小公司出来的人为绝大多数,大的公司出来的人...
  • Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由...其中包括了Spring、SpringBoot、SpringCloud、SpringMVC四个实战文档,以及Spring面试文档,都是经过BAT实战精选过的重
  • 一、Spring Cloud微服务概念定义 提起微服务,不得不提 Spring Cloud 全家桶系列,Spring Cloud 是一个服务治理平台,是若干个框架的集合,提供了全套的分布式系统解决方案。包含了:服务注册与发现、配置中心、服务...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 221
精华内容 88
关键字:

springcloud面试题2021

spring 订阅