springcloud面试题【第一期】
全文目录
1:谈一谈你对微服务的理解?
2:微服务之间是如何独立进行通讯的?
3:springcloud和dubbo有哪些区别?
4:springboot和spring cloud得区别?
5:Eureka和ZooKeeper都可以提供服务注册与发现的功能,说说二者的区别?
6:什么是熔断? 什么是服务降级?
7:说一下你所知道的微服务技术栈?
8:说一下CAP定理
1:谈一谈你对微服务的理解?
最初我们学习Java的时候接触的都是单机项目,会把各种业务需求,数据库链接,页面展示等都会糅合在一个项目中,如果说这个项目越来越大,功能模块越来越多,无论是部署还是维护都是比较麻烦的事情,针对这么情况就慢慢衍生出了微服务,简单的来说微服务架构的核心目标是把复杂问题简单化,通过模块划分,把一个完整的系统拆分成多个高内聚、低耦合的小的子系统。使得每个子系统可以独立的运行、升级和测试。然后再通过一些集成手段将这些子系统组合在一起,对外提供完整功能的过程。
2:微服务之间是如何独立进行通讯的?
- 同步:通过HTTP协议进行调用,接口使用restful风格的,数据格式采用json格式。dubbo采用的协议是rpc协议。
- 异步:mq,kafka
3:springcloud和dubbo有哪些区别?
- 采用的协议不同:springcloud采用HTTP协议,dubbo采用的是rpc协议。
- 两者的模块组成:Dubbo主要分为服务注册中心,服务提供者,服务消费者,还有管控中心;而SpringCloud则是一个完整的分布式一站式框架,他也有服务注册中心,服务提供者,服务消费者,管控台,断路器,分布式配置服务,消息总线,以及服务追踪等;
4:springboot和spring cloud得区别?
- SpringBoot是Spring推出用于解决传统框架配置文件冗余,简化Spring应用的初始搭建以及开发过程,可以快速搭建web应用;
- 而SpringCloud专注于解决各个微服务之间的协调与配置,服务之间的通信,熔断,负载均衡等技术维度,并且SpringCloud是依赖于SpringBoot的,而SpringBoot并不是依赖与SpringCloud,甚至还可以和Dubbo进行优秀的整合开发
总结:SpringBoot专注于快速方便的开发单个个体服务,SpringCloud是关注全局的微服务协调整理治理框架,整合并管理各个微服务,为各个微服务之间提供,配置管理,服务发现,断路器,路由,事件总线等集成服务SpringBoot不依赖于SpringCloud,SpringCloud依赖于SpringBoot。属于依赖关系SpringBoot专注于快速,方便的开发单个的微服务个体,SpringCloud关注全局的服务治理框架
5:Eureka和ZooKeeper都可以提供服务注册与发现的功能,请说说两个的区别
Eureka和ZooKeeper作为注册中心都可以给客户端提供可供调用的服务列表,客户端在进行远程调用时,根据服务提供方的服务地址从服务列表选择可被调用的服务。二者的区别在于zookeeper当节点出现故障的时候,它会在剩余的节点中重新选择主节点。但这个过程消耗时间会相对长,虽然最后也能恢复正常,但是选取主节点的过程中会导致服务不可用,这是不可容忍的。相比eureka各个节点是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。而Eureka的客户端在向某个Eureka注册或如果发现连接失败,则会自动切换至其它节点,只要有一台Eureka还在,就能保证注册服务可用(保证可用性),但是缺点就是查到的信息可能不是最新的(不保证强一致性)。
著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。Zookeeper保证的是CP, 而Eureka则是AP。
6:什么是熔断? 什么是服务降级?
首先解析一下熔断出现的情景:假设系统中有A,B,C三个服务,服务A是上游,服务B是中游,服务C是下游,一旦下游服务C由于某些原因变得不可用,积压了大量请求,服务B的请求线程也随之阻塞。线程资源逐渐耗尽,使得服务B也变得不可用。紧接着,服务A也变为不可用,整个调用链路则被拖垮。进而引起系统崩溃这种情况就是所谓的“雪崩效应”。
在这种时候,就需要熔断机制来挽救整个系统,当某个微服务不可用或者响应时间太长时,会进行服务降级,进而熔断该节点微服务的调用,快速返回“错误”的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。在SpringCloud框架里熔断机制通过Hystrix实现,Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是10秒内调用20次,如果失败,就会启动熔断机制。熔断机制的注解是@HystrixCommand。
服务降级,一般是从整体负荷考虑。就是当某个服务熔断之后,服务器将不再被调用,此时客户端可以自己准备一个本地的fallback回调,返回一个缺省值。这样做,虽然水平下降,但好歹可用,比直接挂掉强。
7:说一下你所知道的微服务技术栈?
- 服务注册与发现:Eureka、Consul、Zookeeper等
- 服务调用:Rest、RPC、Feign
- 服务熔断器:Hystrix、Envoy等
- 负载均衡:Ribbon、Nginx等
- 消息队列:Kafka、RabbitMQ、ActiveMQ等
- 服务配置中心管理:SpringCloudConfig、Chef等
- 服务路由:(API网关)gateway、Zuul等
- 服务监控:Zabbix、Nagios、Metrics、Spectator等
- 全链路追踪:Zipkin,Brave、Dapper等
- 服务部署:Docker、OpenStack、Kubernetes等
- 数据流操作开发包:SpringCloud Stream(封装与Redis,Rabbit、Kafka等发送接收消息)
- 事件消息总线:Spring Cloud Bus
8:说一下CAP定理
CAP:指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。
一致性:在分布式系统中的所有数据备份,在同一刻是同样的值(等同于在访问所以的节点的时候,主副数据一致)。
可用性:在集群中一部分的节点故障后,集群整体是否还能响应客户端的读写请求(对数据更新具有高可用)。
分区容错性:系统如果不能在时限内达成数据的一致性,就意味着发生了分区的情况,必须就当前的操作在C和A之前作出选择。
这三个要素最多只能同时实现两点,要是AP,要么CP,不可能三者兼顾(AC一般不考虑)。
欢迎关注公众号!公众号回复:入群 ,扫码加入交流群!
springcloud面试题【第一期】的更多相关文章
- SpringCloud 面试题 (持续更新、吐血推荐)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...
- springCloud面试题
1.SpringCloud和Dubbo SpringCloud和Dubbo都是现在主流的微服务架构SpringCloud是Apache旗下的Spring体系下的微服务解决方案Dubbo是阿里系的分布式 ...
- SpringBoot和SpringCloud面试题
一. 什么是springboot 1.用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 2.创建独立的spring引用程序 main方法运行 ...
- SpringCloud面试题及答案
1. 什么是 spring cloud? spring cloud 是一系列框架的有序集合.它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心. ...
- SpringBoot+SpringCloud面试题整理
什么是SpringBoot?1.用来简化spring初始搭建和开发过程使用特定的方式进行配置(properties或者yml文件)2.创建独立的spring引用程序main方法运行3.嵌入Tomcat ...
- 2020年大厂Java面试前复习的正确姿势(800+面试题附答案解析)
前言 个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事.所以,劝各位不要因为面试失败而灰心. 丧失斗志.也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油! 本篇分享的面试题内容 ...
- 别人开发三年30k,而我才12K,看完他面试前狂刷的面试题,我惊了
朋友做Java开发三年多的时间了,在老东家勤勤恳恳工作了三年多,工资也就是从刚开始的8K涨到了12K,天天给我吐槽他的工资低.2019年中下旬开始就一直在各种地方找资源,刷面试题,想要“骑驴找马”,所 ...
- springcloud知识点总结
一.SpringCloud面试题口述1.SpringCloud和DubboSpringCloud和Dubbo都是现在主流的微服务架构SpringCloud是Apache旗下的Spring体系下的微服务 ...
- JVM面试题(史上最强、持续更新、吐血推荐)
文章很长而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三部 ...
随机推荐
- css icons fontawesome-free
官网 examples v4.7.0 cdnjs icons basic-use 安装 λ npm install --save @fortawesome/fontawesome-free fa前缀在 ...
- NGK全球启动大会圆满召开,一起预见区块链的美好未来!
NGK Global全球启动大会在高新技术产业区硅谷于美国当地时间11月25日圆满召开!这次会议邀请了星盟高管.NGK全球各大市场领导人.NGK生态产业代表等上百位嘉宾出席,此次会议持续了一个多小时, ...
- mysql数据库表引入redis解决方案
缓存方案 缓存方案在我的另外一篇博客里有详细说明,地址:https://www.cnblogs.com/wingfirefly/p/14419728.html 数据结构: 方案1: 1.存储结构采用h ...
- 力扣1438. 绝对差不超过限制的最长连续子数组-C语言实现-中等难度
题目 传送门 文本 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit . 如果不存在满足条 ...
- Vue3组件(九)Vue + element-Plus + json = 动态渲染的表单控件
一个成熟的表单 表单表单,你已经长大了,你要学会: 动态渲染 支持单列.双列.多列 支持调整布局 支持表单验证 支持调整排列(显示)顺序 依据组件值显示需要的组件 支持 item 扩展组件 可以自动创 ...
- Vue学习笔记-Vue.js-2.X 学习(三)===>组件化高级
(四) 组件化高级 1.插槽(slot)的基本使用 A:基本使用: <slot></slot> B:默认置:<slot><h1>中间可以放默认值< ...
- C语言:贪心算法之装箱问题
#include <stdio.h> #include <stdlib.h> #define N 6 #define V 100 typedef struct box // 使 ...
- Java基础语法:abstract修饰符
一.简介 描述: 'abstract'修饰符可以用来修饰方法,也可以修饰类. 如果修饰方法,那么该方法就是抽象方法:如果修饰类,那么该类就是抽象类. 抽象类和抽象方法起到一个框架作用,方便后期扩展的重 ...
- 零基础学Python:数据容器
1.常用操作 列表常用操作 在 ipython 中定义一个 列表,例如: l= list() 输入 l. 按下 TAB 键, ipython 会提示 字典 能够使用的函数如下: 可以到官方网址查询使用 ...
- 学习java的第二天
Java第二天 标识符 标识符开头只能以字母和_开头 严格区分大小写 不能以关键词命名 变量 变量是什么:就是可以变化的量 Java是一种强类型语言,定义变量必须声明后才能使用 Java变量是程序中最 ...