`

spring cloud 常见面试题 来理解微服务(通俗易懂)

 
阅读更多

 微服务  强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应用

 

狭意的看,可以看作 Eclipse!里面的个个微服务工程/或者 Module

 

为什么  马丁.福勒 说 没有统一的定义说法呢 问题就在下面 如下图 

 

 

 

       

 

根据业务   其实 对于拆分维度 到底该按什么拆分呢   我想 仁者见仁 智者见智 吧   

 

                 本人拙见  :大多的公司应该是按照 业务来拆分  

 

 如果我去面试 这就是我的答案  

 

                 微服务之间是如何独立通讯的spring Cloud和 Dubbo有哪些区別?(很多 面试管会问) 

 

本质区别: 

 

dubbo 是 基于 RPC 远程 过程调用 

 

cloud 是基于 http  rest api 调用 

 

                                                       dubbo                                       spring cloud 

 

 

 

最大区别: Spring Cloudi抛弃了 Dubbo的RPC通信,采用的是基于HTP的REST方式。

 

严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者牺牲了服务调用的性能,但也避兔了上面提到的原生RPC带来的问题。

 

而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适 

 

很明显, Spring Cloud的功能比 DUBBO更加强大,涵盖面更广,而且作为 Spring的挙头项目,它也能够与 Spring FrameworkSpring Boot.、 Spring Data、 Spring Batch等其他 Springi项目完美融合,这些对于微服务而言是至关重要的。使用 Dubbo构建的微服务架构就像组装电脑,各环节我们的选择自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,总是让人不怎么放心,但是如果你是一名高手,那这些都不是问题;而 Spring Cloud就像品牌机,在 Spring Source的整合下,做了大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础有足够的了解。 

 

              Spring Boot和 Spring Cloud,请你谈谈对他们的理解 什么是服务熔断?

 

 spring boot 是一个快速整合第三方框架   关注的是 微观 具体关注快速方便的开发单个个体的 服务 

 

 spring cloud 关注的是 宏观  具体关注全局的微服务协调整理治理框架 将spring boot 开发的一个个单体服务整合 并管理起来

 

它为各个微服务之间提供 配置管理 服务发现 断路器路由 微代理 全局锁 分布式会话 等 集成服务

 

举个例子 : 一所医院  boot 是 一个一个科室    cloud 是把一个一个科室 组合起来 对外称之为 医院

 

存在依赖关系  cloud   离不开boot 

 

hystrix 断路器 

 

 

 

 服务熔断 是指    由于某些原因使得服务出现了过载现象,为防止造成整个系统故障,从而采用的一种保护措施,所以很多地方把熔断亦称为过载保护。 

 

                      什么是服务降级 微服务的优缺点分別是什么?

 

 用 通俗易懂的来说  : 整体资源快不够了,忍痛将某些服务先关掉,待渡过难关,再开启回来。

 

微服务的优缺点 : 

 

 

                     说下你在项目开发中碰到的坑你所知道的微服务技术栈有哪些?

 

微服务技术栈 : 多种技术的结合体   

 

我们在讨论分布式的微服务架构的时候  它需要有哪些维度? 

 

1 服务治理   2 服务注册 3 服务调用 4 负载均衡 5 服务监控  

 

这五点称为落地维度   为什么叫落地  呢 ?

 

天上飞的理念 肯定要有落地的实现 

 

也就是说  分布式微服务架构    当作 天上飞的理念 

 

落地的实现 可以总结为

 

1 服务开发 :spring boot spring mvc  spring 

 

2  服务的配置与管理 : netfix 公司 archaius 阿里的diamond等

 

3  服务的注册于发现 :spriing cloud 所采用的 eureka ,consul,zookeeper 等

 

4 服务的调用:rest GRPC RPC 

 

5 服务的熔断器 :hystrix envoy等

 

6 负载均衡 :ribbon .nginx

 

7 服务接口调用(客户端调用服务的简化工具) Feign等消息队列Kafka、 Rabbitmq、 Activemq等

 

8 服务配置中心管理Spring Cloud Config、Chef等服务路由(API网关)Zuu等

 

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

 

10 全链路追踪Zipkin, Brave、 Dapper等

 

11 服务部罟Docker、 Open Stack、 Kubernetes等

 

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

 

13 事件消息总线Spring Cloud Bus

 

请说说eureka和 zookeeper,两个的区別?

 

首先 说CAP 是什么  所谓的CAP  C强一致性  A可用性 P 分区容错性

 

 

著名的CAP理论指出,

 

                     一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性P在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。 

 

 

 

 

 

zookeeper 遵守 CP 

 

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

 

也就是说,服务注册功能对一致性的要求要高于可用性。

 

但是zookeeper 会出现这样一种情况,   当 master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行 leader选举。

 

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

 

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

 

或许  这个回答太过于抽象  用一种其他说法来说 就是 :

 

   当有一个zookeeper  挂了  那其他的zookeeper 会进行 一次选举 (强一致性 : 我一定要保持数据一致性)  而在此选举期间  zookeeper  是不可用的   而当前 有用户正在使用 用户就不爽了 。

 

 eureka 遵守 AP  

 

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

 

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

 

而 Eureka的客户端在向某个 Eureka注册或时如果发现连接失败,则会自动切换至其它节点 

 

只要有一台 Eureka还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的不保证强一致性)。

 

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

 

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

 

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

 

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

 

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

 

 

 

分享到:
评论

相关推荐

    【附答案解析】最常⻅的 SpringCloud 微服务⾯试题(VIP典藏版)

    Spring Cloud微服务⾯试题 1. Spring Cloud Netflix 和 Spring Cloud Alibaba 包括哪些组件 2. Nacos是CP还是AP? 3. Nacos作为注册中⼼应该选择是CP还是AP? 4. Nacos如何实现就近访问? 5. Nacos底层负载均衡...

    SpringCloud面试题及答案.pdf

    ### SpringCloud核心概念与面试题解析 #### 一、SpringCloud简介 1. **SpringCloud定义** SpringCloud是一个构建在Spring Boot之上的微服务框架集合,它利用Spring Boot的便捷开发特性,极大地简化了分布式系统...

    springcloud微服务 一个简单的微服务提供方和微服务消费者

    在这个名为"springcloud微服务 一个简单的微服务提供方和微服务消费者"的项目中,我们看到了微服务架构的典型实现。 首先,让我们深入了解服务提供方和服务消费者的概念。服务提供方是系统中提供特定功能或数据的...

    04.2、微服务—SpringCloud(20题)1

    相比之下,Spring Cloud是一整套微服务解决方案,包含多个子项目,如Spring Cloud Config(配置管理)、Spring Cloud Netflix(包含Eureka服务发现、Zuul智能路由等组件),提供了构建分布式系统所需的全套工具。...

    方志朋版——深入理解Spring Cloud与微服务构建.pdf

    总的来说,这本《深入理解Spring Cloud与微服务构建》将带领读者深入探索Spring Cloud的各个组件,理解其工作原理,以及如何在实践中有效利用这些工具构建高可用、可扩展的微服务系统。对于希望提升微服务技能的...

    微服务、dubbo、SpringCloud全部面试题-带答案解析.doc

    《微服务、Dubbo、SpringCloud面试精要》 在当今的互联网开发中,微服务架构已经成为主流,而Dubbo和SpringCloud则是实现这一架构的关键技术。本文将深入解析Dubbo的一些核心概念和面试常见问题,帮助你更好地理解...

    SpringBoot+SpringCloud面试题.doc

    Spring Boot和Spring Cloud是现代Java开发中的两个...理解并熟练掌握Spring Boot和Spring Cloud,对于构建高效、稳定、可扩展的微服务架构至关重要。在面试中,这些知识点是评估候选人对现代企业级开发理解的重要标准。

    Spring Cloud面试题2020·8(35题).pdf

    Spring Cloud 是一套完整的微服务解决方案,它基于 Spring Boot 进行快速开发,为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能...这些内容对于理解和应对 Spring Cloud 相关的面试题是非常关键的。

    为什么Dapr是比SpringCloud和Istio更优雅的微服务框架?.doc

    1. 全栈多语言支持:Dapr 和 Istio 都采用了边车模式,与应用进程之间没有有侵入性,相比 SpringCloud 这种只能支持 Java 语言的侵入性框架,具备先天的跨语言优势。 2. 多云/非云环境支持:Dapr 和 SpringCloud 都...

    Spring Cloud实战 _springcloud实战_springcloud_

    《Spring Cloud实战》一书深入探讨了Spring Cloud这一强大的微服务框架,它是当前软件开发领域中最受欢迎的构建微服务架构的工具。Spring Cloud基于Spring Boot的便利性,为开发者提供了全面的微服务开发支持,包括...

    springcloud与docker微服务架构实战配套代码

    springcloud与docker微服务架构实战配套代码springcloud与docker微服务架构实战配套代码springcloud与docker微服务架构实战配套代码springcloud与docker微服务架构实战配套代码springcloud与docker微服务架构实战...

    59道SpringCloud面试题详解含答案(值得珍藏)

    SpringCloud是Java领域中广泛使用的微服务框架,它基于...综上所述,SpringCloud为开发者提供了强大的工具来构建、管理和监控微服务架构,虽然存在一定的挑战,但其优势明显,是现代云原生应用开发的首选框架之一。

    SpringCloud常见面试题.docx

    Spring Cloud 面试题知识点总结 Spring Cloud 是当前最常用的微服务开发框架,已在企业级开发中大量应用。下面是 Spring Cloud 的知识点总结: 为什么需要 Spring Cloud 随着业务逐渐发展,单体结构的应用会变得...

    基于Spring Boot 3.0、 Spring Cloud 2022 & Alibaba 的微服务RBAC 权限管理系统

    介绍一个基于Spring Boot 3.0、Spring Cloud 2022 & Alibaba的微服务RBAC权限管理系统。该系统可以实现微服务RBAC权限管理,通过RBAC权限管理机制对用户访问系统的权限进行限制,从而提高系统的安全性和可用性。同时...

    若依SpringCloud微服务版-傻瓜式教程模式

    【若依SpringCloud微服务版-傻瓜式教程模式】是一个面向初学者的教程,旨在帮助没有微服务架构经验的人快速上手搭建基于Spring Cloud的若依(RuoYi)微服务系统。若依是一个开源的Java管理框架,集成了Vue前端和Spring...

    《深入理解Spring Cloud与微服务构建》word版本

    《深入理解Spring Cloud与微服务构建》是一本专注于讲解如何使用Spring Cloud构建高效、可靠的微服务系统的书籍。Spring Cloud作为目前最流行的微服务框架之一,它提供了大量的工具和服务,帮助开发者快速搭建分布式...

    2020年新Spring Cloud Alibaba 实战面试题 助力大厂

    2020年新Spring_Cloud_Alibaba_实战面试题__助力大厂

    SpringCloud常见面试题及答案.zip

    这个名为“SpringCloud常见面试题及答案.zip”的压缩包文件,显然包含了与Spring Cloud相关的面试问题和解答,是准备Spring Cloud相关面试或者深入学习该技术的好资料。以下是根据标题、描述以及标签提炼出的一些...

    最常见的 SpringCloud 微服务面试题(VIP典藏版)

    Spring Cloud 微服务面试题(VIP典藏版) Spring Cloud 微服务作为当前最流行的微服务架构之一,在实际面试中经常被问到相关问题。以下是 Spring Cloud 微服务面试题VIP典藏版,涵盖了 Spring Cloud Netflix 和 ...

    深入理解Spring Cloud与微服务构建

    Spring Cloud作为Java语言的微服务落地框架,在Spring开源社区和Pivatol、Netflix两大公司的推动下飞速发展,得到了众多开发者的认可,Spring Cloud在未来很可能成为微服务框架的领导者和规范。

Global site tag (gtag.js) - Google Analytics