全文目录

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面试题【第一期】的更多相关文章

  1. SpringCloud 面试题 (持续更新、吐血推荐)

    文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...

  2. springCloud面试题

    1.SpringCloud和Dubbo SpringCloud和Dubbo都是现在主流的微服务架构SpringCloud是Apache旗下的Spring体系下的微服务解决方案Dubbo是阿里系的分布式 ...

  3. SpringBoot和SpringCloud面试题

    一. 什么是springboot 1.用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件) 2.创建独立的spring引用程序 main方法运行 ...

  4. SpringCloud面试题及答案

    1. 什么是 spring cloud? spring cloud 是一系列框架的有序集合.它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心. ...

  5. SpringBoot+SpringCloud面试题整理

    什么是SpringBoot?1.用来简化spring初始搭建和开发过程使用特定的方式进行配置(properties或者yml文件)2.创建独立的spring引用程序main方法运行3.嵌入Tomcat ...

  6. 2020年大厂Java面试前复习的正确姿势(800+面试题附答案解析)

    前言 个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事.所以,劝各位不要因为面试失败而灰心. 丧失斗志.也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油! 本篇分享的面试题内容 ...

  7. 别人开发三年30k,而我才12K,看完他面试前狂刷的面试题,我惊了

    朋友做Java开发三年多的时间了,在老东家勤勤恳恳工作了三年多,工资也就是从刚开始的8K涨到了12K,天天给我吐槽他的工资低.2019年中下旬开始就一直在各种地方找资源,刷面试题,想要“骑驴找马”,所 ...

  8. springcloud知识点总结

    一.SpringCloud面试题口述1.SpringCloud和DubboSpringCloud和Dubbo都是现在主流的微服务架构SpringCloud是Apache旗下的Spring体系下的微服务 ...

  9. JVM面试题(史上最强、持续更新、吐血推荐)

    文章很长而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三部 ...

随机推荐

  1. ng 基础

    文档 组件的工作只管用户体验,而不用顾及其它. 它应该提供用于数据绑定的属性和方法,以便作为视图和应用逻辑的中介者 组件应该把诸如从服务器获取数据.验证用户输入或直接往控制台中写日志等工作委托给各种服 ...

  2. 别再人云亦云了!!!你真的搞懂了RDD、DF、DS的区别吗?

    几年前,包括最近,我看了各种书籍.教程.官网.但是真正能够把RDD.DataFrame.DataSet解释得清楚一点的.论据多一点少之又少,甚至有的人号称Spark专家,但在这一块根本说不清楚.还有国 ...

  3. CSS绘制三角形和箭头

    <html> <head> <meta charset="utf-8"> <title>CSS绘制三角形和箭头</title& ...

  4. react新手入坑

    1.vscode保存react项目的时候由于js-css-html插件格式化代码导致react代码缩进错误 解决方法:禁用js-css-html插件 2.react和vue不同,react方法的定义需 ...

  5. Jquery获取链接请求的参数

    比如有一个链接:https://www.baidu.com/s?cl=3&tn=baidutop10&fr=top1000,先定义方法: //获取url中的参数 function ge ...

  6. 基于element-ui封装一个Table模板组件

    大家在做后台管理系统的时候,写的最多的可能就是表格页面了,一般分三部分:搜索功能区.表格内容区和分页器区.一般这些功能都是使用第三方组件库实现,比如说element-ui,或者vuetify.这两个组 ...

  7. 九. SpringCloud Stream消息驱动

    1. 消息驱动概述 1.1 是什么 在实际应用中有很多消息中间件,比如现在企业里常用的有ActiveMQ.RabbitMQ.RocketMQ.Kafka等,学习所有这些消息中间件无疑需要大量时间经历成 ...

  8. 为什么要用Spring Boot?

    什么是Spring Boot?   Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而 ...

  9. rest framework Request

    要求 如果你正在做基于REST的Web服务的东西......你应该忽略request.POST. -马尔科姆Tredinnick,Django开发组 REST框架的Request类继承了标准HttpR ...

  10. Java数组:多维数组(二维),Arrays类,冒泡排序

    Arrays类数组工具类:java.util.ArraysArrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而"不用"使用对象来调用 具有 ...