SpringCloud常见面试题总结二
一、简介
最近在忙项目,差不多半个月没有写博客,今天正逢周末,整理一些常见的SpringCloud面试题。前不久已经总结过一篇关于SpringCloud的面试题,没有学习的小伙伴可以【SpringCloud常见面试题总结一】https://mp.csdn.net/console/editor/html/105620968进去总结一下。
二、面试题
【a】SpringCloud 和Dubbo区别?
区别 | SpringCloud | Dubbo |
服务调用方式 | Rest Api | RPC |
注册中心 | 可以是eureka,也可以是zookeeper | zookeeper |
网关 | 服务网关,dubbo本身没有实现,只能通过其他第三方技术整合 | springcloud有Zuul路由网关,作为路由服务器,进行消费者的请求分发,springcloud支持断路器,与git完美集成配置文件支持版本控制,事物总线实现配置文件的更新与服务自动装配等等一系列的微服务架构要素 |
【b】REST 和RPC对比
- RPC主要的缺陷是服务提供方和调用方式之间的依赖太强,需要对每一个微服务进行接口的定义,并通过持续继承发布,严格版本控制才不会出现冲突。
- REST是轻量级的接口,服务的提供和调用不存在代码之间的耦合,只需要一个约定进行规范。
【c】微服务之间是如何独立通讯的?
- 远程调用,比如feign调用,直接通过远程过程调用来访问别的service。
- 消息中间件
【d】Eureka和Zookeeper区别
区别 | Eureka | Zookeeper |
CAP原理 | Eureka保证了AP(A:高可用 P:分区容错性) | Zookeeper保证了CP(C:一致性,P:分区容错性) |
是否产生服务瘫痪 | Eureka存在自我保护机制,不存在服务瘫痪现象 (Eureka的自我保护机制,会导致一个结果就是不会再从注册列表移除因长时间没收到心跳而过期的服务。依然能接受新服务的注册和查询请求,但不会被同步到其他节点) | 在选举期间注册服务瘫痪,虽然服务最终会恢复,但选举期间不可用 |
节点是否平等 | Eureka各个节点平等 | 存在Leader和Follower角色 |
分区问题 | Eureka采用自我保护机制解决分区问题 | Zookeeper采用过半数存活原则 |
本质 | Eureka本质是一个工程 | Zookeeper只是一个进程 |
【e】Eureka自我保护机制是什么?
当Eureka Server 节点在短时间内丢失了过多实例的连接时(比如网络故障或频繁启动关闭客户端)节点会进入自我保护模式,保护注册信息,不再删除注册数据,故障恢复时,自动退出自我保护模式。
【f】什么是Feigin?它的优点是什么?
Feign指的是远程服务调用。优点:
- Feign采用的是基于接口的注解
- Feign整合了ribbon,具有负载均衡的能力
- Feign整合了Hystrix,具有熔断的能力
【g】什么是Spring Cloud Bus?
Spring Cloud Bus指的是消息总线,提供了跨多个实例刷新配置的功能,方便各个微服务统一刷新配置,各个微服务通过监听统一的消息总线,如RabbitMQ, 当某个服务的配置发生变化时,依赖的所有服务的配置都会自动刷新。(通过将所有微服务连接到单个消息代理来实现)
【h】负载平衡的意义什么?
优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一微服务的过载。
【i】说说 RPC 的实现原理?
- 需要有处理网络连接通讯的模块,负责连接建立、管理和消息的传输;
- 需要有编解码的模块,因为网络通讯都是传输的字节码,需要将我们使用的对象序列化和反序列化;
- 服务器端暴露要开放的服务接口,客户调用服务接口的一个代理实现;
【j】Ribbon负载均衡能干什么?
- 将用户的请求平摊的分配到多个服务上;
- 集中式LB即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某种策略转发至服务的提供方;
- 进程内LB将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器;
- Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方用它来获取到服务提供方的地址;
【k】什么是 zuul路由网关?
- 对请求的路由和过滤;
- Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转到具体微服务;
- 总体功能就是:代理 + 路由 + 过滤;
【l】分布式配置中心能干嘛?
- 集中管理配置文件不同环境不同配置,动态化的配置更新,分环境部署比如</p><p>dev/test/prod/beta/release;
- 运行期间动态调整配置;
- 当配置发生变动时,服务不需要重启即可感知到配置的变化并应用新的配置将配置信息以REST接口的形式暴露;
【j】SpringBoot和SpringCloud,请你谈谈对他们的理解?
- SpringBoot是一个快速整合第三方框架 ,指的是快速方便的开发单个个体的服务;
- SpringCloud指的全局的微服务协调整理治理框架,将spring boot 开发的一个个单体服务整合并管理起来;
- SpringBoot依赖SpringBoot,SpringCloud离不开SpringBoot;
【k】Eureka比Zookeeper好在哪里?
- Eureka保证的是可用性和分区容错性,Zookeeper 保证的是一致性和分区容错性 。
- Eureka还有一种自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障。而不会像zookeeper那样使整个注册服务瘫痪。
【l】SpringCloud 的核心组件有哪些?
- Eureka:服务注册于发现;
- Feign:基于动态代理机制,根据注解和选择的机器,拼接请求 url 地址,发起请求;
- Ribbon:实现负载均衡,从一个服务的多台机器中选择一台;
- Hystrix:提供线程池,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题;
- Zuul:网关管理,由 Zuul 网关转发请求给对应的服务;
- Config:分布式配置中心,提供统一管理各个微服务配置的功能;
- Bus:消息总线,配合消息中间件实现各个微服务动态刷新配置的功能;
SpringCloud常见面试题总结二相关推荐
- Python爬虫常见面试题(二)
前言 之所以在这里写下python爬虫常见面试题及解答 一是用作笔记,方便日后回忆: 二是给自己一个和大家交流的机会,互相学习.进步,希望不正之处大家能给予指正: 三是我也是互联网寒潮下岗的那批人之一 ...
- mysql某个表的列除以2_mysql常见面试题(二)
mysql常见面试题(二) 标签:范式 索引 复制原理 事务引擎 储存结构 内存分配 1.数据库三范式是什么? 第一范式(1NF):字段具有原子性,不可再分.(所有关系型数据库系统都满足第一范式数据库 ...
- html5退出全屏触发的方法_好程序员web前端分享HTML5常见面试题集锦二
web前端分享HTML5常见面试题集锦第二篇,希望对大家有所帮助. 1. 方法1: html,body{height: 100%;} body{ margin: 0;display: flex; ju ...
- elk面试题_【182期】SpringCloud常见面试题(2020最新版)
点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...
- 开启springcloud全家桶:springcloud常见面试题
微服务面试题 一.Spring Cloud有哪些特点? Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成.Spring c ...
- SpringCloud常见面试题(2020最新版)
作者:ThinkWon thinkwon.blog.csdn.net/article/details/104397367 为什么需要学习Spring Cloud 不论是商业应用还是用户应用,在业务初期 ...
- Java常见面试题(二)
java的基础部分 面试题收集来源于网络,仅用学习参考,侵删 2.1.1 简单讲一下java的跨平台原理 由于各操作系统(windows,liunx等)支持的指令集,不是完全一致的.就会让我们的程序在 ...
- 【JAVA秒会技术之秒杀面试官】JavaSE常见面试题(二)
21.在Java中,如何跳出当前的多重嵌套循环? 答:在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环.(Java中支持带标签的break和continue语句,作用有点类似于C和 ...
- 几个SpringCloud常见面试题及答案
全文目录 什么是微服务? 微服务之间如何独立通讯的? SpringCloud 和 Dubbo 有哪些区别? SpringBoot 和 SpringCloud 之间关系? 什么是熔断?什么是服务降级? ...
- 谈谈几个SpringCloud常见面试题及答案
作者:Wbw Belief blog.csdn.net/qq_41497111/article/details/92067565 全文目录 什么是微服务? 微服务之间如何独立通讯的? SpringCl ...
最新文章
- 袋鼠过河(动态规划)
- PyTorch 深度学习: 60 分钟极速入门
- [TJOI2010]阅读理解
- java有装箱和拆箱吗_Java中装箱和拆箱,你真的都懂么?
- SKYLINE UVALive - 4108
- 仪表盘刻度调整_惊艳了我的仪表盘 那些年我遇到最美的“面孔”
- com.alibaba.easyexcel导出指定的列_使用Python导入导出Excel表格
- html设置照片模糊效果,CSS如何实现照片模糊?
- Qt文档阅读笔记-数据驱动测试
- python中linspace函数_numpy.linspace函数具体使用详解
- java switch 条件_Java 条件之 switch 语句
- AD9361 补充(中)
- 安装linux需要最少磁盘分区是多少,320G硬盘只安装Linux分区方案
- 谷歌浏览器实现按下按键的脚本_谷歌浏览器辅助工具v1.4.5
- 【something】简单的平均脸制作
- 暴走海贼王服务器谁在维护,暴走海贼王
- 【文本检测与识别-白皮书-3.1】第四节:算法模型 2
- 在Centos7下源码安装配置Redis
- 创客匠人用户分组:用户定向运营,不浪费一滴流量
- SolidWorks焊件中将各结构构件分解成单个零件的方法
热门文章
- PySpark-Recipes : RDD对象的基本操作
- CNN卷积神经网络(二)
- 算法:移除数组中的数字,不用额外空间27. Remove Element
- python正则表达式提取c语言中的函数,Python正则表达式匹配C语言函数
- 进程和线程的基本概念与区别
- 移动应用android简单播放器,打造移动掌上影院 Android播放器横评
- java编程给三个数字排序_JAVA程序.输入3个数字,有IF语句,从小到大排序
- wafer map格式转换_如何将谷歌地球KML图层转换为Mapinfo TAB图层?
- 深度学习中的激活函数导引
- 【Codeforces】【Gym - 101234I】Tree Game【分类枚举】