精华内容
下载资源
问答
  • Spring Cloud面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 17:51:59
    文章目录为什么需要学习Spring Cloud什么是Spring Cloud设计目标与优缺点设计目标优缺点Spring Cloud发展前景整体架构主要项目Spring Cloud ConfigSpring Cloud NetflixSpring Cloud BusSpring Cloud ConsulSpring ...

    大家好,我是CSDN的博主ThinkWon,“2020博客之星年度总评选"开始啦,希望大家帮我投票,每天都可以投多票哦,点击下方链接,然后点击"最大”,再点击"投TA一票"就可以啦!
    投票链接:https://bss.csdn.net/m/topic/blog_star2020/detail?username=thinkwon
    在技术的世界里,ThinkWon将一路与你相伴!创作出更多更高质量的文章!2020为努力奋斗的你点赞👍,️新的一年,祝各位大牛牛气冲天,牛年大吉!😊😊

    Java面试总结汇总,整理了包括Java基础知识,集合容器,并发编程,JVM,常用开源框架Spring,MyBatis,数据库,中间件等,包含了作为一个Java工程师在面试中需要用到或者可能用到的绝大部分知识。欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。文章持续更新中…

    序号 内容 链接地址
    1 Java基础知识面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104390612
    2 Java集合容器面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104588551
    3 Java异常面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104390689
    4 并发编程面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104863992
    5 JVM面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104390752
    6 Spring面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104397516
    7 Spring MVC面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104397427
    8 Spring Boot面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104397299
    9 Spring Cloud面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104397367
    10 MyBatis面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/101292950
    11 Redis面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/103522351
    12 MySQL数据库面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104778621
    13 消息中间件MQ与RabbitMQ面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104588612
    14 Dubbo面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104390006
    15 Linux面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104588679
    16 Tomcat面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104397665
    17 ZooKeeper面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104397719
    18 Netty面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/104391081
    19 架构设计&分布式&数据结构与算法面试题(2020最新版) https://thinkwon.blog.csdn.net/article/details/105870730

    为什么需要学习Spring Cloud

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

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

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

    什么是Spring Cloud

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

    设计目标与优缺点

    设计目标

    协调各个微服务,简化分布式系统开发

    优缺点

    微服务的框架那么多比如:dubbo、Kubernetes,为什么就要使用Spring Cloud的呢?

    优点:

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

    缺点:

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

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

    Spring Cloud发展前景

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

    整体架构

    主要项目

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

    Spring Cloud Config

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

    Spring Cloud Netflix

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

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

    Spring Cloud Bus

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

    Spring Cloud Consul

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

    Spring Cloud Security

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

    Spring Cloud Sleuth

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

    Spring Cloud Stream

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

    Spring Cloud Task

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

    Spring Cloud Zookeeper

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

    Spring Cloud Gateway

    API网关组件,对请求提供路由及过滤功能。

    Spring Cloud OpenFeign

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

    Spring Cloud的版本关系

    Spring Cloud是一个由许多子项目组成的综合项目,各子项目有不同的发布节奏。 为了管理Spring Cloud与各子项目的版本依赖关系,发布了一个清单,其中包括了某个Spring Cloud版本对应的子项目版本。 为了避免Spring Cloud版本号与子项目版本号混淆,Spring Cloud版本采用了名称而非版本号的命名,这些版本的名字采用了伦敦地铁站的名字,根据字母表的顺序来对应版本时间顺序,例如Angel是第一个版本,Brixton是第二个版本。 当Spring Cloud的发布内容积累到临界点或者一个重大BUG被解决后,会发布一个"service releases"版本,简称SRX版本,比如Greenwich.SR2就是Spring Cloud发布的Greenwich版本的第2个SRX版本。目前Spring Cloud的最新版本是Hoxton。

    Spring Cloud和SpringBoot版本对应关系

    Spring Cloud Version SpringBoot Version
    Hoxton 2.2.x
    Greenwich 2.1.x
    Finchley 2.0.x
    Edgware 1.5.x
    Dalston 1.5.x

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

    Component Edgware.SR6 Greenwich.SR2
    spring-cloud-bus 1.3.4.RELEASE 2.1.2.RELEASE
    spring-cloud-commons 1.3.6.RELEASE 2.1.2.RELEASE
    spring-cloud-config 1.4.7.RELEASE 2.1.3.RELEASE
    spring-cloud-netflix 1.4.7.RELEASE 2.1.2.RELEASE
    spring-cloud-security 1.2.4.RELEASE 2.1.3.RELEASE
    spring-cloud-consul 1.3.6.RELEASE 2.1.2.RELEASE
    spring-cloud-sleuth 1.3.6.RELEASE 2.1.1.RELEASE
    spring-cloud-stream Ditmars.SR5 Fishtown.SR3
    spring-cloud-zookeeper 1.2.3.RELEASE 2.1.2.RELEASE
    spring-boot 1.5.21.RELEASE 2.1.5.RELEASE
    spring-cloud-task 1.2.4.RELEASE 2.1.2.RELEASE
    spring-cloud-gateway 1.0.3.RELEASE 2.1.2.RELEASE
    spring-cloud-openfeign 暂无 2.1.2.RELEASE

    注意:Hoxton版本是基于SpringBoot 2.2.x版本构建的,不适用于1.5.x版本。随着2019年8月SpringBoot 1.5.x版本停止维护,Edgware版本也将停止维护。

    SpringBoot和SpringCloud的区别?

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

    SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,

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

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

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

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

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

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

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

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

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

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

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

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

    Spring Cloud 和dubbo区别?

    (1)服务调用方式 dubbo是RPC springcloud Rest Api

    (2)注册中心,dubbo 是zookeeper springcloud是eureka,也可以是zookeeper

    (3)服务网关,dubbo本身没有实现,只能通过其他第三方技术整合,springcloud有Zuul路由网关,作为路由服务器,进行消费者的请求分发,springcloud支持断路器,与git完美集成配置文件支持版本控制,事物总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素。

    负载平衡的意义什么?

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

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

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

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

    思考以下微服务

    img

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

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

    简化图如下所示

    img

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

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

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

    img

    如果 firstPage method() 中的异常继续发生,则 Hystrix 电路将中断,并且员工使用者将一起跳过 firtsPage 方法,并直接调用回退方法。 断路器的目的是给第一页方法或第一页方法可能调用的其他方法留出时间,并导致异常恢复。可能发生的情况是,在负载较小的情况下,导致异常的问题有更好的恢复机会 。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nMSJX6ml-1582105816943)(https://user-gold-cdn.xitu.io/2019/12/30/16f55fbfd4e33ae7?imageView2/0/w/1280/h/960/format/webp/ignore-error/1)]

    什么是 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 默认也会负责负载平衡。

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

    考虑以下情况:我们有多个应用程序使用 Spring Cloud Config 读取属性,而Spring Cloud Config 从 GIT 读取这些属性。

    下面的例子中多个员工生产者模块从 Employee Config Module 获取 Eureka 注册的财产。

    img

    如果假设 GIT 中的 Eureka 注册属性更改为指向另一台 Eureka 服务器,会发生什么情况。在这种情况下,我们将不得不重新启动服务以获取更新的属性。

    还有另一种使用执行器端点/刷新的方式。但是我们将不得不为每个模块单独调用这个 url。例如,如果 Employee Producer1 部署在端口 8080 上,则调用 http:// localhost:8080 / refresh。同样对于 Employee Producer2 http://localhost:8081 / refresh 等等。这又很麻烦。这就是 Spring Cloud Bus 发挥作用的地方。

    img

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

    Spring Cloud断路器的作用

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

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

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

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

    什么是Spring Cloud Config?

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

    使用:

    (1)添加pom依赖

    (2)配置文件添加相关配置

    (3)启动类添加注解@EnableConfigServer

    什么是Spring Cloud Gateway?

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

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

    展开全文
  • Spring Cloud面试题

    万次阅读 多人点赞 2019-06-03 21:09:53
    开篇前,先让大家看几个常见的Spring Cloud面试题,看完我这个博客后,你再回来看这些问题,我相信你肯定能够对答如流的哦。如果下面的面试题你能说出来,你不用看我这篇博客,如果很多不清楚,看完我这篇博客后,我...

    前言,随着分布式的时代到来,现在微服务越来越火了,Spring Cloud已经成为一个面试必问的考点,下面我们就Cloud这一些列的组件来一个入门到面试的过程。开篇前,先让大家看几个常见的Spring Cloud面试题,看完我这个博客后,你再回来看这些问题,我相信你肯定能够对答如流的哦。如果下面的面试题你能说出来,你不用看我这篇博客,如果很多不清楚,看完我这篇博客后,我相信你会对这些问题有一个深刻的认识的。

    1.微服务概述

    1.1是什么

    1.2微服务与微服务架构

    1.3微服务的优缺点

    2.Eureka的服务注册与发现

    2.1是什么

    2.2原理讲解

    2.3构建步骤

    2.4集群配置

    2.5和zookeeper的对比

    3.Ribbon

    3.1是什么

    4.feign

    4.1是什么

    4.2能干什么

    5.hystrix

    5.1服务雪崩

    5.2是什么

    5.3什么是服务熔断

    5.4服务的降级

    6.zuul路由网关

    7.SpringCloud config

    7.1分布式的配置问题

    7.2是什么

    展开全文
  • 我也一样,我在网上找了很多面试题来看,最近又赶上跳槽的高峰期,好多粉丝,都问我要有没有最新面试题,索性,我就把我看过的和我面试中的真题,及答案都整理好,整理了《第2版:互联网大厂面试题》并分类92份 PDF...

    最近我一直在面试高级工程师,不管初级,高级,程序员,我想面试前,大家刷题一定是是少不了吧。

    我也一样,我在网上找了很多面试题来看,最近又赶上跳槽的高峰期,好多粉丝,都问我要有没有最新面试题,索性,我就把我看过的和我面试中的真题,及答案都整理好,整理了《第2版:互联网大厂面试题》并分类92份 PDF,累计 3625页 我会持续更新中,马上就出第三版,涵盖大厂算法会更多!

    其他答案已经在公众号更新

    关注公众号:搜云库技术团队,回复:面试题,即可获取全部

    第2版:题库非常全面

    包括 Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat、Python、HTML、CSS、Vue、React、JavaScript、Android 大数据、阿里巴巴等大厂面试题等、等技术栈!

    什么是微服务架构

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

    为什么需要学习Spring Cloud

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

    Spring Cloud 是什么

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

    SpringCloud的优缺点

    优点:

      1.耦合度比较低。不会影响其他模块的开发。
    
      2.减轻团队的成本,可以并行开发,不用关注其他人怎么开发,先关注自己的开发。
    
      3.配置比较简单,基本用注解就能实现,不用使用过多的配置文件。
    
      4.微服务跨平台的,可以用任何一种语言开发。
    
      5.每个微服务可以有自己的独立的数据库也有用公共的数据库。
    
      6.直接写后端的代码,不用关注前端怎么开发,直接写自己的后端代码即可,然后暴露接口,通过组件进行服务通信。
    
    

    缺点:

     1.部署比较麻烦,给运维工程师带来一定的麻烦。
    
     2.针对数据的管理比麻烦,因为微服务可以每个微服务使用一个数据库。
    
     3.系统集成测试比较麻烦
    
     4.性能的监控比较麻烦。【最好开发一个大屏监控系统】
    
    
    • 总的来说优点大过于缺点,目前看来Spring Cloud是一套非常完善的分布式框架,目前很多企业开始用微服务、Spring Cloud的优势是显而易见的。因此对于想研究微服务架构的同学来说,学习Spring Cloud是一个不错的选择。

    SpringBoot和SpringCloud的区别?

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

    Spring Cloud和SpringBoot版本对应关系

    Spring Cloud Version SpringBoot Version
    Hoxton 2.2.x
    Greenwich 2.1.x
    Finchley 2.0.x
    Edgware 1.5.x
    Dalston 1.5.x

    SpringCloud由什么组成

    • 这就有很多了,我讲几个开发中最重要的

      • Spring Cloud Eureka:服务注册与发现
      • Spring Cloud Zuul:服务网关
      • Spring Cloud Ribbon:客户端负载均衡
      • Spring Cloud Feign:声明性的Web服务客户端
      • Spring Cloud Hystrix:断路器
      • Spring Cloud Config:分布式统一配置管理
      • 等20几个框架,开源一直在更新

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

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

    Spring Cloud 和dubbo区别?

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

    Eureka

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

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

    什么是Eureka

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

    Eureka怎么实现高可用

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

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

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

    DiscoveryClient的作用

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

    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

    什么是网关?

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

    网关的作用是什么

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

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

    • Zuul是对SpringCloud提供的成熟对的路由方案,他会根据请求的路径不同,网关会定位到指定的微服务,并代理请求到不同的微服务接口,他对外隐蔽了微服务的真正接口地址。 三个重要概念:动态路由表,路由定位,反向代理:

      • 动态路由表:Zuul支持Eureka路由,手动配置路由,这俩种都支持自动更新
      • 路由定位:根据请求路径,Zuul有自己的一套定位服务规则以及路由表达式匹配
      • 反向代理:客户端请求到路由网关,网关受理之后,在对目标发送请求,拿到响应之后在 给客户端
    • 它可以和Eureka,Ribbon,Hystrix等组件配合使用,

    • Zuul的应用场景:

      • 对外暴露,权限校验,服务聚合,日志审计等

    网关与过滤器有什么区别

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

    常用网关框架有那些?

    • Nginx、Zuul、Gateway

    Zuul与Nginx有什么区别?

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

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

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

    如何设计一套API接口

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

    ZuulFilter常用有那些方法

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

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

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

    Zuul网关如何搭建集群

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

    Ribbon

    负载平衡的意义什么?

    • 简单来说: 先将集群,集群就是把一个的事情交给多个人去做,假如要做1000个产品给一个人做要10天,我叫10个人做就是一天,这就是集群,负载均衡的话就是用来控制集群,他把做的最多的人让他慢慢做休息会,把做的最少的人让他加量让他做多点。
    • 在计算中,负载平衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程。

    Ribbon是什么?

    • Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法
    • Ribbon客户端组件提供一系列完善的配置项,如连接超时,重试等。简单的说,就是在配置文件中列出后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。(有点类似Nginx)

    Nginx与Ribbon的区别

    • Nginx是反向代理同时可以实现负载均衡,nginx拦截客户端请求采用负载均衡策略根据upstream配置进行转发,相当于请求通过nginx服务器进行转发。Ribbon是客户端负载均衡,从注册中心读取目标服务器信息,然后客户端采用轮询策略对服务直接访问,全程在客户端操作。

    Ribbon底层实现原理

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

    @LoadBalanced注解的作用

    开启客户端负载均衡。

    Hystrix

    什么是断路器

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

    • 断路器有三种状态

      • 打开状态:一段时间内 达到一定的次数无法调用 并且多次监测没有恢复的迹象 断路器完全打开 那么下次请求就不会请求到该服务
      • 半开状态:短时间内 有恢复迹象 断路器会将部分请求发给该服务,正常调用时 断路器关闭
      • 关闭状态:当服务一直处于正常状态 能正常调用

    什么是 Hystrix?

    • 在分布式系统,我们一定会依赖各种服务,那么这些个服务一定会出现失败的情况,就会导致雪崩,Hystrix就是这样的一个工具,防雪崩利器,它具有服务降级,服务熔断,服务隔离,监控等一些防止雪崩的技术。

    • Hystrix有四种防雪崩方式:

      • 服务降级:接口调用失败就调用本地的方法返回一个空
      • 服务熔断:接口调用失败就会进入调用接口提前定义好的一个熔断的方法,返回错误信息
      • 服务隔离:隔离服务之间相互影响
      • 服务监控:在服务发生调用时,会将每秒请求数、成功请求数等运行指标记录下来。

    谈谈服务雪崩效应

    • 雪崩效应是在大型互联网项目中,当某个服务发生宕机时,调用这个服务的其他服务也会发生宕机,大型项目的微服务之间的调用是互通的,这样就会将服务的不可用逐步扩大到各个其他服务中,从而使整个项目的服务宕机崩溃.发生雪崩效应的原因有以下几点
    • 单个服务的代码存在bug. 2请求访问量激增导致服务发生崩溃(如大型商城的枪红包,秒杀功能). 3.服务器的硬件故障也会导致部分服务不可用.

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

    • 一般使用使用Hystrix框架,实现服务隔离来避免出现服务的雪崩效应,从而达到保护服务的效果。当微服务中,高并发的数据库访问量导致服务线程阻塞,使单个服务宕机,服务的不可用会蔓延到其他服务,引起整体服务灾难性后果,使用服务降级能有效为不同的服务分配资源,一旦服务不可用则返回友好提示,不占用其他服务资源,从而避免单个服务崩溃引发整体服务的不可用.

    服务雪崩效应产生的原因

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

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

    • 服务降级:当客户端请求服务器端的时候,防止客户端一直等待,不会处理业务逻辑代码,直接返回一个友好的提示给客户端。
    • 服务熔断是在服务降级的基础上更直接的一种保护方式,当在一个统计时间范围内的请求失败数量达到设定值(requestVolumeThreshold)或当前的请求错误率达到设定的错误率阈值(errorThresholdPercentage)时开启断路,之后的请求直接走fallback方法,在设定时间(sleepWindowInMilliseconds)后尝试恢复。
    • 服务隔离就是Hystrix为隔离的服务开启一个独立的线程池,这样在高并发的情况下不会影响其他服务。服务隔离有线程池和信号量两种实现方式,一般使用线程池方式。

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

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

    其他答案已经在公众号更新

    关注公众号:搜云库技术团队,回复:面试题,即可获取全部

    展开全文
  • 微服务面试题 一、Spring Cloud有哪些特点? Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建...


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

    特点:

    1、约定优于配置。

    2、适用于各种环境。开发、部署PC Server或各种云环境如阿里云、AWS等。

    3、隐藏了组件的复杂性,并提供声明式、无xml的配置方式。

    4、开箱即用快速启动。

    5、轻量级组件。

    6、组件丰富:Eureka、ribbon、Hystrix、config、bus、zuul。

    7、选型中立,例如spring cloud支持Eureka、consul、zookeeper。

     

    二、CAP与Base理论
    CAP是一个已经经过证实的理论:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。

     

    BASE理论是对CAP理论的延伸,思想是即使无法做到强一致性(CAP的一致性就是强一致性),但可以采用适当的采取弱一致性,即最终一致性。

    BASE是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency)。

     

    三、Spring cloud与Dubbo的区别
    (1)服务调用方式 dubbo是RPC springcloud Rest Api;

    (2)注册中心,dubbo 是zookeeper springcloud是eureka,也可以是zookeeper、consul;

    (3)服务网关,dubbo本身没有实现,只能通过其他第三方技术整合,springcloud有Zuul路由网关,作为路由服务器,进行消费者的请求分发,springcloud支持断路器,与git完美集成配置文件支持版本控制,事物总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素。

    四、Spring Boot与 Spring cloud之间的关系
    1、SpringBoot专注于快速、方便的开发单个微服务个体,SpringCloud关注全局的服务治理框架。

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

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

     

    五、负载均衡的意义
    负载均衡可以改善跨计算机、计算机集群、网络连接、中央处理单元或磁盘驱动等多种计算资源的工作负载分布。负载均衡意在优化资源分配,最大化吞吐量,最小化响应时间并避免任一资源的过载。负载均衡通常会涉及专用硬件或软件,例如F5、nginx、ribbon。

     

    六、什么是Hystrix,如何做的容错
    服务隔离:如果整个系统雪崩是由于一个接口导致的,由于这一个接口响应不及时导致问题,那么我们就有必要对这个接口进行隔离,就是只允许这个接口最多能接受多少的并发,做了这样的限制后,该接口的主机就会空余线程出来接收其他的情况,不会被哪个坏了的接口占用满。Hystrix 就是一个不错的服务隔离框架。

     

    服务雪崩:雪崩是系统中的蝴蝶效应导致其发生的原因多种多样,有不合理的容量设计,或者是高并发下某一个方法响应变慢,亦或是某台机器的资源耗尽。从源头上我们无法完全杜绝雪崩源头的发生,但是雪崩的根本原因来源于服务之间的强依赖,所以我们可以提前评估。当整个微服务系统中,有一个节点出现异常情况,就有可能在高并发的情况下出现雪崩,导致调用它的上游系统出现响应延迟,响应延迟就会导致 tomcat 连接本耗尽,导致该服务节点不能正常的接收到正常的情况,这就是服务雪崩行为。

     

    Hystrix两种隔离策略:线程池隔离THREAD 、信号量SEMAPHORE隔离。

     

    熔断发生的三个必要条件:

    1、有一个统计的时间周期,滚动窗口

    相应的配置属性metrics.rollingStats.timeInMilliseconds 默认 10000 毫秒

    2、请求次数必须达到一定数量

    相应的配置属性 circuitBreaker.requestVolumeThreshold默认 20 次

    3、失败率达到默认失败率

    相应的配置属性 circuitBreaker.errorThresholdPercentage 默认 50%

     

    用到的注解:

    @EnableCircuitBreaker

    @HystrixCommand(fallbackMethod="queryOrderByIdFallback",commandKey = "queryOrderById",groupKey = "querygroup-one",commandProperties = { @HystrixProperty(name ="execution.isolation.strategy", value="THREAD")},threadPoolKey = "queryOrderByIdhystrixJackpool")

     

    Hystrix有哪几种状态:开启、关闭、半开启。

     

     

    参考文档:https://www.toutiao.com/i6805112656714793475/

     

    七、介绍一下Eureka
     

     

     

    用到的注解:

    @EnableEurekaServer // 注册服务中心

    @EnableEurekaClient // 服务提供端

     

    服务注册与续约:首先服务注册到eureka server上,注册之后服务提供者会维护一个心跳,用来告诉eureka server “我还OK”,也就是续约Renew,心跳默认三十秒检测一次。

    服务剔除:当服务实例正常下线时,服务实例会告诉eureka server “我要下线了”,将服务状态改为 down。有时服务会出现非正常下线,eureka server 在启动时会去创建一个定时任务检测服务提供者,剔除服务,检测时间默认90秒。

    自我保护:eureka server 会去将心跳在15分钟内是否低于85%,如果出现eureka会将他们保护起来,让这些实例不会过期,这样客户端就很容易拿到不存在的实例,这就需要容错机制,客户端重试、断路器等机制。

     

    zone与region:

    1、机房隔离

    2、Ribbon默认优先访问一个zone中的服务实例

     

    八、介绍一下Ribbon
    spring Cloud Ribbon 是一个客户端的负载均衡器,它提供对大量的HTTP和TCP客户端的访问控制。

    客户端负载均衡即是当浏览器向后台发出请求的时候,客户端会向 Eureka Server 读取注册到服务器的可用服务信息列表,然后根据设定的负载均衡策略(没有设置即用默认的),抉择出向哪台服务器发送请求。

     

    重要注解:@Loadbalanced 注解修饰RestTemplate

     

    负载均衡策略:线性轮询、随机、重试机制。

     

    Ribbon内部有一个chooseServer()方法用于选择服务。

     

    九、聊聊Feign
    Feign使代码变得整洁,内部封装了Ribbon的负载以及Hystrix。但是性能会比较差,建议复杂业务不要使用。

     

     

    十、为什么使用Spring Cloud Bus
    Spring Cloud Bus 提供了跨多个实例刷新配置的功能

     

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

    使用:

    (1)添加pom依赖

    (2)配置文件添加相关配置

    (3)启动类添加注解@EnableConfigServer

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

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

    1、什么是微服务?

    2、微服务之间是如何通讯的?

    3、springcloud 与dubbo有哪些区别?

    4、请谈谈对SpringBoot 和SpringCloud的理解

    5、分布式系统面临的问题

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

    7、微服务的优缺点分别是什么?说下你在项目开发中碰到的坑?

    8、你所知道的微服务技术栈有哪些?请列举一二

    9、什么是 Eureka服务注册与发现

    10、Eureka的基本架构是什么?

    11、作为服务注册中心,Eureka比Zookeeper好在哪里?

    12、什么是 Ribbon负载均衡

    13、Ribbon负载均衡能干嘛?

    14、什么是 Feign 负载均衡

    15、Feign 能干什么

    16、什么是 Hystrix断路器

    17、Hystrix断路器能干嘛?

    18、什么是 zuul路由网关

    19、什么是SpringCloud Config分布式配置中心

    20、分布式配置中心能干嘛?

     

    1、什么是微服务?
    微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。 

    服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。

    另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据存储。

    从技术维度来说:

    微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事,从技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行单独启动或销毁,拥有自己独立的数据库。

     

    2、微服务之间是如何通讯的?
    第一种:远程过程调用(Remote Procedure Invocation)

    直接通过远程过程调用来访问别的service。

    示例:REST、gRPC、Apache、Thrift

    优点:简单,常见。因为没有中间件代理,系统更简单
    缺点:只支持请求/响应的模式,不支持别的,比如通知、请求/异步响应、发布/订阅、发布/异步响应;降低了可用性,因为客户端和服务端在请求过程中必须都是可用的
    第二种:消息

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

    示例:Apache Kafka、RabbitMQ

     

    3、springcloud 与dubbo有哪些区别?
    相同点:SpringCloud 和Dubbo可以实现RPC远程调用框架,可以实现服务治理。

    不同点:SpringCloud是一套目前比较网站微服务框架了,整合了分布式常用解决方案遇到了问题注册中心Eureka、负载均衡器Ribbon ,客户端调用工具Rest和Feign,分布式配置中心Config,服务保护Hystrix,网关Zuul Gateway ,服务链路Zipkin,消息总线Bus等。

    优点:把客户端和服务端解耦,更松耦合 提高可用性,因为消息中间件缓存了消息,直到消费者可以消费,支持很多通信机制比如通知、请求/异步响应、发布/订阅、发布/异步响应
    缺点:消息中间件有额外的复杂性
    dubbo内部实现功能没有SpringCloud强大(全家桶),只是实现服务治理,缺少分布式配置中心、网关、链路、总线等,如果需要用到这些组件,需要整合其他框架。

    表 Spring Cloud与Dubbo功能对比

     

    4、请谈谈对SpringBoot 和SpringCloud的理解
    SpringBoot专注于快速方便的开发单个个体微服务。

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

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

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

    Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖的关系。

     

    5、分布式系统面临的问题
    复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。

    服务雪崩:多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”.

    对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障。这些都表示需要对故障和延迟进行隔离和管理,以便单个依赖关系的失败,不能取消整个应用程序或系统。

    一般情况对于服务依赖的保护主要有以下三种解决方案:

    熔断模式:这种模式主要是参考电路熔断,如果一条线路电压过高,保险丝会熔断,防止火灾。放到我们的系统中,如果某个目标服务调用慢或者有大量超时,此时,熔断该服务的调用,对于后续调用请求,不在继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用。

    隔离模式:这种模式就像对系统请求按类型划分成一个个小岛的一样,当某个小岛被火少光了,不会影响到其他的小岛。例如可以对不同类型的请求使用线程池来资源隔离,每种类型的请求互不影响,如果一种类型的请求线程资源耗尽,则对后续的该类型请求直接返回,不再调用后续资源。这种模式使用场景非常多,例如将一个服务拆开,对于重要的服务使用单独服务器来部署,再或者公司最近推广的多中心。

    限流模式:上述的熔断模式和隔离模式都属于出错后的容错处理机制,而限流模式则可以称为预防模式。限流模式主要是提前对各个类型的请求设置最高的QPS阈值,若高于设置的阈值则对该请求直接返回,不再调用后续资源。这种模式不能解决服务依赖的问题,只能解决系统整体资源分配问题,因为没有被限流的请求依然有可能造成雪崩效应。

     

    6、什么是服务熔断,什么是服务降级
    服务熔断:熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回”错误”的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。

    在SpringCloud框架里熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败就会启动熔断机制。熔断机制的注解是@HystrixCommand。

    Hystrix服务降级:其实就是线程池中单个线程障处理,防止单个线程请求时间太长,导致资源长期被占有而得不到释放,从而导致线程池被快速占用完,导致服务崩溃。

    Hystrix能解决如下问题:

    请求超时降级,线程资源不足降级,降级之后可以返回自定义数据

    线程池隔离降级,分布式服务可以针对不同的服务使用不同的线程池,从而互不影响

    自动触发降级与恢复

    实现请求缓存和请求合并

     

    7、微服务的优缺点分别是什么?说下你在项目开发中碰到的坑?
    优点

    每个服务足够内聚,足够小,代码容易理解这样能聚焦一个指定的业务功能或业务需求

    开发简单、开发效率提高,一个服务可能就是专一的只干一件事。

    微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成。

    微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。

    微服务能使用不同的语言开发。

    易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如Jenkins, Hudson, bamboo 。

    微服务易于被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。

    微服务允许你利用融合最新技术。

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

    每个微服务都有自己的存储能力,可以有自己的数据库。也可以有统一数据库。

    缺点

    开发人员要处理分布式系统的复杂性

    多服务运维难度,随着服务的增加,运维的压力也在增大

    系统部署依赖

    服务间通信成本

    数据一致性

    系统集成测试

    性能监控……

     

    8、你所知道的微服务技术栈有哪些?请列举一二
    服务开发
    Springboot、Spring、SpringMVC

    服务配置与管理
    Netflix公司的Archaius、阿里的Diamond等

    服务注册与发现
    Eureka、Consul、Zookeeper等

    服务调用
    Rest、RPC、gRPC

    服务熔断器
    Hystrix、Envoy等

    负载均衡
    Ribbon、Nginx等

    服务接口调用(客户端调用服务的简化工具)
    Feign等

    消息队列
    Kafka、RabbitMQ、ActiveMQ等

    服务配置中心管理
    SpringCloudConfig、Chef等

    服务路由(API网关)
    Zuul等

    服务监控
    Zabbix、Nagios、Metrics、Spectator等

    全链路追踪
    Zipkin,Brave、Dapper等

    服务部署
    Docker、OpenStack、Kubernetes等

    数据流操作开发包
    SpringCloud Stream(封装与Redis,Rabbit、Kafka等发送接收消息)

    事件消息总线
    Spring Cloud Bus

     

    9、什么是 Eureka服务注册与发现
    Eureka是Netflix的一个子模块,也是核心模块之一。

    Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。

    服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。功能类似于dubbo的注册中心,比如Zookeeper。

     

    10、Eureka的基本架构是什么?
    Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper)。

    Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。

    而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。

    SpringCloud 的一些其他模块(比如Zuul)就可以通过 Eureka Server 来发现系统中的其他微服务,并执行相关的逻辑。

    Eureka包含两个组件:Eureka Server 和 Eureka Client

    Eureka Server提供服务注册服务

    各个节点启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到

    EurekaClient是一个Java客户端

    用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。

    如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)

    11、作为服务注册中心,Eureka比Zookeeper好在哪里?
    著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性P在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。

    因此,Zookeeper 保证的是CP, Eureka 则是AP。

    Zookeeper保证CP

    当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接受服务直接down掉不可用。

    也就是说,服务注册功能对可用性的要求要高于一致性。但是zk会出现这样一种情况,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举。

    问题在于,选举leader的时间太长,30~120s,且选举期间整个zk集群都是不可用的,这就导致在选举期间注册服务瘫痪。

    在云部署的环境下,因网络问题使得zk集群失去master节点是较大概率会发生的事,虽然服务能够最终恢复,但是漫长的选举时间导致的注册长期不可用是不能容忍的。

    Eureka保证AP

    Eureka看明白了这一点,因此在设计时就优先保证可用性。

    Eureka各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。

    而Eureka的客户端在向某个Eureka注册或时如果发现连接失败,则会自动切换至其它节点,只要有一台Eureka还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证强一致性)。

    除此之外,Eureka还有一种自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,此时会出现以下几种情况:

    Eureka不再从注册列表中移除因为长时间没收到心跳而应该过期的服务

    Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上(即保证当前节点依然可用)

    当网络稳定时,当前实例新的注册信息会被同步到其它节点中

    因此, Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像zookeeper那样使整个注册服务瘫痪。

     

    12、什么是 Ribbon负载均衡
    Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。

    简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。

    Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。

     

    13、Ribbon负载均衡能干嘛?
    LB(负载均衡
    LB,即负载均衡(Load Balance),在微服务或分布式集群中经常用的一种应用。
    负载均衡简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA。
    常见的负载均衡有软件Nginx,LVS,硬件 F5等。
    相应的在中间件,例如:dubbo和SpringCloud中均给我们提供了负载均衡,SpringCloud的负载均衡算法可以自定义。

    集中式LB
    即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某种策略转发至服务的提供方;

    进程内LB
    将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。

    注意:Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址。

     

    14、什么是 Feign 负载均衡
    Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。

    Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

    Feign是一个声明式的Web服务客户端,使得编写Web服务客户端变得非常容易,只需要创建一个接口,然后在上面添加注解即可。

     

    15、Feign 能干什么
    Feign旨在使编写Java Http客户端变得更容易。

    前面在使用Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模版化的调用方法。

    但是在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。

    所以,Feign在此基础上做了进一步封装,由他来帮助我们定义和实现依赖服务接口的定义。在Feign的实现下,我们只需创建一个接口并使用注解的方式来配置它(以前是Dao接口上面标注Mapper注解,现在是一个微服务接口上面标注一个Feign注解即可),即可完成对服务提供方的接口绑定,简化了使用Spring cloud Ribbon时,自动封装服务调用客户端的开发量。

    Feign集成了Ribbon
    利用Ribbon维护了MicroServiceCloud-Dept的服务列表信息,并且通过轮询实现了客户端的负载均衡。

    而与Ribbon不同的是,通过feign只需要定义服务绑定接口且以声明式的方法,优雅而简单的实现了服务调用

    Feign通过接口的方法调用Rest服务(之前是Ribbon+RestTemplate),该请求发送给Eureka服务器(http://MICROSERVICECLOUD-DEPT/dept/list),
    通过Feign直接找到服务接口,由于在进行服务调用的时候融合了Ribbon技术,所以也支持负载均衡作用。

     

    16、什么是 Hystrix断路器
    Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等, Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。

    “断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。

     

    17、Hystrix断路器能干嘛?
    服务降级
    整体资源快不够了,忍痛将某些服务先关掉,待渡过难关,再开启回来

    服务熔断
    熔断机制是应对雪崩效应的一种微服务链路保护机制。
    当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回”错误”的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。在SpringCloud框架里熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败就会启动熔断机制。熔断机制的注解是@HystrixCommand。

    服务限流

    接近实时的监控
    除了隔离依赖服务的调用以外,Hystrix还提供了准实时的调用监控(Hystrix Dashboard),Hystrix会持续地记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求多少成功,多少失败等。Netflix通过hystrix-metrics-event-stream项目实现了对以上指标的监控。Spring Cloud也提供了Hystrix Dashboard的整合,对监控内容转化成可视化界面。

     

    18、什么是 zuul路由网关
    Zuul 包含了对请求的路由和过滤两个最主要的功能:

    其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,

    是实现请求校验、服务聚合等功能的基础.Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。

    注意:Zuul服务最终还是会注册进Eureka

    提供=代理+路由+过滤 三大功能

     

    19、什么是SpringCloud Config分布式配置中心
    SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。

     

    20、分布式配置中心能干嘛?
    集中管理配置文件
    不同环境不同配置,动态化的配置更新,分环境部署比如dev/test/prod/beta/release

    运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息

    当配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置将配置信息以REST接口的形式暴露
     

    展开全文
  • springcloud常见面试题

    2021-01-21 01:11:34
    springcloud常见面试题 1.SpringCloud分布式开发五大组件 服务发现——Netflix Eureka 客服端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix Zuul 分布式配置——Spring Cloud Config 2...
  • 2021最新版SpringCloud高频面试题分享

    千次阅读 2021-04-27 09:20:54
    2021最新版SpringCloud高频面试题分享
  • SpringCloud面试题(一)

    万次阅读 多人点赞 2019-04-24 22:16:30
    SpringCloud面试题(一) 大家好,我是酷酷的韩~下面提供一些整理的springcloud面试题 一.微服务的优点缺点?说下开发项目中遇到的坑? 优点: 1.每个服务直接足够内聚,代码容易理解 2.开发效率高,一个服务只做一件事...
  • spring cloud 常见面试题 来理解微服务(通俗易懂)

    万次阅读 多人点赞 2018-11-19 16:17:15
    理论知识 =面试时候的谈资 !!! 你只有进去公司才有资格去做一个码农ok话不多说 经历如此漫长的互联网发展 以本人的拙见软件开发粗略的分为三个阶段 1 单机版 也就是说把要做的所有应用...
  • springboot、springCloud面试题。什么是springbootspringboot常用的starter有哪些springboot自动配置的原理springboot读取配置文件的方式springboot集成mybatis的过程springboot如何添加【修改代码】自动重启功能...
  • 最近在忙项目,差不多半个月没有写博客,今天正逢周末,整理一些常见的SpringCloud面试题。 二、面试题 【a】SpringCloud 和Dubbo区别? 区别 SpringCloud Dubbo 服务调用方式 Rest Api RPC 注册...
  • SpringCloud常见面试题总结一

    千次阅读 2020-04-19 20:13:11
    本文将总结一些常见的微服务架构SpringCloud相关的面试题。 二、面试题 【1】什么是SpringCloud? 使用SpringCloud有什么优势? SpringCloud是在SpringBoot基础上构建的,用于快速构建分布式系统的通用模式的工具集...
  • 文章目录什么是微服务架构为什么需要学习Spring CloudSpring Cloud 是什么SpringCloud的优缺点SpringBoot和SpringCloud的区别?Spring Cloud和SpringBoot版本对应关系SpringCloud由什么组成使用 Spring Boot 开发...
  • SpringCloud常见面试题

    千次阅读 2020-01-30 00:53:29
    SpringCloud常见面试题 一、系统架构的演变 单机版 把我们的所有的模块都放置一个项目上,最后将项目打包成war包或者jar包部署到你的服务器上; ​ 优点:1、方便开发;2、部署简单 ​缺点:1、代码耦合,开发维护...
  • SpringCloud高频面试题

    2020-03-25 23:44:23
    远程开会和办公的沟通效率总是差那么一点,为了节约点时间,就不介绍SpringCloud了,我想只要是一名Java开发程序员,提到微服务,一定对SpringCloud的大名如雷贯耳,我们直接来看它的高频面试题吧。 1、什么是Spring...
  • SpringCloud入门面试题

    2020-12-28 22:38:29
    这部分面试题,对于我们现在这个阶段来说还是比较少会被问到所以,我们一般只要掌握以下一些概念即可,如果现在就深入研究,有一些得不偿失
  • SpringCloud面试题

    万次阅读 多人点赞 2018-12-12 00:29:07
    一.SpringCloud面试题口述 1.SpringCloud和Dubbo SpringCloud和Dubbo都是现在主流的微服务架构 SpringCloud是Apache旗下的Spring体系下的微服务解决方案 Dubbo是阿里系的分布式服务治理框架 从技术维度上,其实...
  • springCloud常见面试题

    千次阅读 2020-10-18 21:47:14
    1.什么是springCloud?...2.springCloud的核心组件及其作用? 1)Eureka: 主要用于服务注册与发现,它既包含了服务端的组件也包含了客户端的组件,服务端和客户端都是java编写,因此Eureka主要适用通过...
  • Spring Cloud相关面试题

    2020-06-10 19:09:44
    Spring Cloud的优点? 负载均衡 服务和服务之间的调用 服务的注册和发现 分布式消息的传递 什么是 spring cloud? 1、Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决...
  • Springcloud常见面试题

    2021-02-02 16:41:03
    五、SpringBoot和SpringCloud关系 SpringBoot是Spring推出用于解决传统框架配置文件冗余,装配组件繁杂的基于Maven的解决方案,旨在快速搭建单个微服务 而SpringCloud专注于解决各个微服务之间的协调与配置,服务之间...
  • SpringCloud 常见面试题

    2020-06-25 19:01:46
    1 什么是Spring CloudSpring cloud流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序...
  • 【Q-01】你曾阅读过 Spring Cloud 的源码吗?我们知道,Spring Cloud 是通过 Spring Boot 集成了很多第三方框架构成的。现在准备解析 Spring Cloud 中某子框架的源码,若还没有找到合适的入手位置,那么从哪里开始...
  • springcloud-面试题

    2020-09-10 11:46:05
    3.SpringCloud和Dubbo有哪些区别? 4.SpringBoot和SpringCloud,请你谈谈对他们的理解。 5.什么是服务熔断?什么是服务降级? 6.微服务的优缺点分别是什么?说下你在项目开发中碰到的坑。 7.你所知道的微服务技术栈有...
  • Spring Cloud典型面试题

    2020-03-14 20:17:53
    1.什么是微服务? 微服务的核心技术就是将传统的一站式应用,根据业务拆分成一个一个的服务彻底的耦合,每一个微服务提供单一业务功能的...3.Spring Cloud和Dubbo有哪些区别? Dubbo的通信是通过rpc建立的,SpringClou...
  • Spring Cloud 重要面试题

    2019-12-30 23:38:39
    1.说一下你对SpringBoot的理解,说一下你的@SrpingBooApplication 标签的理解 ...3.说一下你的SpringCloud的理解/你对微服务的理解 4.你们项目中用zuul做什么? 5.如果不用dubbo,SpringCloud等微服务框...
  • spring cloud is aim to support micro-services practice. amqps For project which needs MQ services. beans For entities of projects. caches For cache applications ,such as memcached,redis,MongoDB. ...
  • 1. SpringCloud是什么 SpringCloud是一系列框架的集合,集成SpringBoot,提供很多优秀服务:服务发现和注册,统一配置中心, 负载均衡,网关, 熔断器等。 2. SpringCloud的优势 因为SpringCloud源于Spring,所以它的...
  • 开源框架面试之SpringCloud面试题

    万次阅读 2020-09-28 00:15:11
    文章目录1、什么是 Spring Cloud?2、使用Spring Cloud有什么优势?3、服务注册和发现是什么意思? Spring Cloud如何实现?4、负载平衡的意义什么?5、什么是Hystrix?它如何实现容错?6、什么是Hystrix断路器?我们需要...
  • 1. 什么是 spring cloud spring cloud 是一系列框架的有序集合。它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,550
精华内容 4,220
关键字:

springcloud组件面试题

spring 订阅