全文目录

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. Android Studio 3.3.1 向avd模拟器发送本地文件

    "工具栏/View/Tool Windows/Device File Pxplorer" 选择模拟器在找到对应的文件夹upload即可

  2. OpenCVE-开源漏洞预警平台

    0x01简介 主程序主要是通过使用NVD提供的JSON数据来更新CVE数据,并在前端进行展示.然后通过邮件进行通知,目前也只支持邮件.这个开源预警平台看上去并不是很完善,因为CVE本身就具有预警滞后性 ...

  3. java基础学习——Swing图形化用户界面编程

    原文链接:https://blog.csdn.net/yiziweiyang/article/details/52317240 链接有详细解释,也有例子,以下是个人参照例子实验的代码. package ...

  4. Mysql训练:第二高的薪水(IFNULL,OFFSET,LIMIT)

    编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) . +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 ...

  5. 微信小程序优化:实现picker组件中input输入框禁止输入,而只能通过picker组件选择日期

    原来的代码如下: <view class="right">     <picker mode="date" value="{{mat ...

  6. 分布式实时处理系统——C++高性能编程

    [前言]基于通信基础,介绍Hurricane实时处理系统的工程实现,主要使用C++语言. 一.IPC.socket.异步I/O epoll 二.C++11 1.linux内存管理中使用RALL原则,C ...

  7. wxWidgets源码分析(2) - App主循环

    目录 APP主循环 MainLoop 消息循环对象的创建 消息循环 消息派发 总结 APP主循环 MainLoop 前面的wxApp的启动代码可以看到,执行完成wxApp::OnInit()函数后,接 ...

  8. STM32学习笔记——序言

    写AVR已经两年了.如果初中时候玩Arduino也算的话,就是6年. 两年以来,我用AVR单片机完成了两个大项目: AVR单片机教程,一时兴起写的,效果不好: MEDS,参赛用的课题,半完成,比赛都结 ...

  9. python+unittest+ddt数据驱动进行接口自动化测试

    所谓数据驱动测试,简单的理解为数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.通过使用数据驱动测试的方法,可以在需要验证多组数据测试场景中,使用外部数据源实现对输入输出与期望值的参数化,避 ...

  10. wireshark如何抓取分析https的加密报文

    [问题概述] https流量基于ssl/tls加密,无法直接对报文进行分析. [解决方案] 方案1 -- 利用"中间人攻击"的代理方式抓包分析.整个方案过程比较简单,这里不赘述,大 ...