如今,微服务是我们Java开发者必备的技能之一了。不管你工作中是否真的是使用微服务架构,但是面试官肯定会问你,所以田哥给你整理一份微服务面试题。

话不多说,我们直入主题。

1. 什么是微服务?

单个轻量级服务一般为一个单独微服务,微服务讲究的是 专注某个功能的实现,比如登录系统只专注于用户登录方面功能的实现,讲究的是职责单一,开箱即用,可以独立运行。微服务架构系统是一个分布式的系统,按照业务进行划分服务单元模块,解决单个系统的不足,满足越来越复杂的业务需求

马丁福勒(Martin Fowler):就目前而言,对于微服务业界并没有一个统一的、标准的定义。但通常而言,微服务架构是一种架构模式或者说是架构风格,它提倡将单一应用程序划分成一组小的服务。每个服务运行在其独立的自己的进程中服务之间相互配合、相互协调,为用户提供最终价值。服务之间采用轻量级通信。每个服务都围绕具体业务进行构建,并能够独立部署到生产环境等。另外应尽量避免统一的、集中的服务管理机制。

通俗的来讲:

微服务就是一个独立的职责单一的服务应用程序。在 intellij idea 工具里面就是用 maven 开发的一个个独立的 module,具体就是使用 springboot 开发的一个小的模块,处理单一专业的业务逻辑,一个模块只做一个事情。

微服务强调的是服务大小,关注的是某一个点,具体解决某一个问题 / 落地对应的一个服务应用,可以看做是 idea 里面一个 module。

比如你去医院:你的牙齿不舒服,那么你就去牙科。你的头疼,那么你就去脑科。一个个的科室,就是一个微服务,一个功能就是一个服务。

2. 微服务之间如何独立通讯的?

同步通信:dobbo 通过 RPC 远程过程调用、springcloud 通过 REST 接口 json 调用 等。异步:消息队列,如:RabbitMq、ActiveM、Kafka 等。

3.SpringCloud 和 Dubbo 有哪些区别?

  • 首先,他们都是分布式管理框架

  • dubbo 是二进制传输,占用带宽会少一点。SpringCloud 是 http 传输,带宽会多一点,同时使用 http 协议一般会使用 JSON 报文,消耗会更大。

  • dubbo 开发难度较大,所依赖的 jar 包有很多问题大型工程无法解决。SpringCloud 对第三方的继承可以一键式生成,天然集成

  • SpringCloud 接口协议约定比较松散,需要强有力的行政措施来限制接口无序升级

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

  • 严格来说,这两种方式各有优劣。虽然在一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生 RPC 带来的问题。而且 REST 相比 RPC 更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适。

SpringCloud 和 Dubbo.png

4.SpringBoot 和 SpringCloud 之间关系?

  • SpringBoot:专注于快速方便的开发单个个体微服务(关注微观);SpringCloud:关注全局的微服务协调治理框架,将 SpringBoot 开发的一个个单体微服务组合并管理起来(关注宏观);

  • SpringBoot 可以离开 SpringCloud 独立使用,但是 SpringCloud 不可以离开 SpringBoot,属于依赖关系。

5. 什么是熔断?什么是服务降级?

  • 服务熔断的作用类似于我们家用的保险丝,当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止对该服务的调用。

  • 服务降级是从整个系统的负荷情况出发和考虑的,对某些负荷会比较高的情况,为了预防某些功能(业务场景)出现负荷过载或者响应慢的情况,在其内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个提前准备好的 fallback(退路)错误处理信息。这样,虽然提供的是一个有损的服务,但却保证了整个系统的稳定性和可用性。

6. 微服务的优缺点是什么?说下你在项目中碰到的坑。

  • 优点:松耦合,聚焦单一业务功能,无关开发语言,团队规模降低。在开发中,不需要了解多有业务,只专注于当前功能,便利集中,功能小而精。微服务一个功能受损,对其他功能影响并不是太大,可以快速定位问题。微服务只专注于当前业务逻辑代码,不会和 html、css 或其他界面进行混合。可以灵活搭配技术,独立性比较舒服。

  • 缺点:随着服务数量增加,管理复杂,部署复杂,服务器需要增多,服务通信和调用压力增大,运维工程师压力增大,人力资源增多,系统依赖增强,数据一致性,性能监控。

7.eureka 和 zookeeper有什么区别?

zookeeper 是 CP 原则,强一致性和分区容错性。eureka 是 AP 原则 可用性和分区容错性。zookeeper 当主节点故障时,zk 会在剩余节点重新选择主节点,耗时过长,虽然最终能够恢复,但是选取主节点期间会导致服务不可用,这是不能容忍的。eureka 各个节点是平等的,一个节点挂掉,其他节点仍会正常保证服务

8. 你所知道微服务的技术栈有哪些?列举一二。

微服务条目 落地技术
服务开发 SpringBoot、Spring、SpringMVC
服务配置与管理 Netfix 公司的 Archaius、阿里的 Dlamond 等
服务注册与发现 Eurka、Consul、Zookeeper 等
服务调用 Rest(服务通信)、RPC(Dubbo)、GRpc
服务熔断器 Hystrix、Envoy 等
负载均衡 Nginx、Ribbon 等
服务接口调用(客户端简化工具) Fegin 等
消息队列 Kafka、RabbitMQ、ActiveMQ 等
服务配置中心管理 SpringCloudConfig、Chef 等
服务路由(API 网关) Zuul 等
服务监控 Zabbix,Nagios,Metrics,Spectator 等
全链路追踪 Zipkin,Brave,Dapper 等
服务部署 Docker,OpenStack,Kubernetes 等
数据流操作开发包 SpringCloud Stream(封装与 Redis,Rabbit,kafka 等发送接收消息)
事件消息总线 Spring Cloud Bus

9. 什么是微服务架构?

在前面你理解什么是微服务,那么对于微服务架构基本上就已经理解了。

微服务架构 就是 对微服务进行管理整合应用的。微服务架构 依赖于 微服务,是在微服务基础之上的。

例如:上面已经列举了什么是微服务。在医院里,每一个科室都是一个独立的微服务,那么 这个医院 就是 一个大型的微服务架构,就类似 院长 可以 对下面的 科室进行管理。微服务架构主要就是这种功能。

最后,想要获取更多Java干货资料,QQ搜索群号805879199即可~

9道微服务面试题,你能回答上来几个?相关推荐

  1. 小公司比较吃亏的两道微服务面试题

    其实选择工作的时候,很多技术牛人都会选择一些小而美的公司,技术全面,能够以一个更全面的视角看整个公司的运作,人和人之间的相处也很简单.但是,有两道微服务的面试题,小公司的朋友们会比较吃亏. 题一:你们 ...

  2. 85道Java微服务面试题整理(助力2020面试)

    微服务 面试题 1.您对微服务有何了解? 2.微服务架构有哪些优势? 3.微服务有哪些特点? 4.设计微服务的最佳实践是什么? 5.微服务架构如何运作? 6.微服务架构的优缺点是什么? 7.单片,SO ...

  3. 阿里大咖精心烹饪整理85道Java微服务面试题(附答案)

    微服务 面试题 1.您对微服务有何了解? 微服务,又称微服务 架 构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 . 通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它 ...

  4. Java微服务面试题整理

    微服务 面试题 1.您对微服务有何了解? 2.微服务架构有哪些优势? 3.微服务有哪些特点? 4.设计微服务的最佳实践是什么? 5.微服务架构如何运作? 6.微服务架构的优缺点是什么? 7.单片,SO ...

  5. 【2021最新版】微服务面试题总结(65道题含答案解析)

    文章目录 1.微服务,又称微服务 架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 . 2.微服务架构有哪些优势? 3.微服务有哪些特点? 4.设计微服务的最佳实践是什么? ...

  6. 75道阿里Java面试题,你能答上几道?微服务面试题

    1.什么是微服务?(提出者马丁福勒) 微服务架构是一种架构模式或者说是一种架构风格,它提供将单一应用程序划分成一组小的服务. 每个服务运行在其独立的自己的进程中 ,服务之间互相协调.配合,为用户提供最 ...

  7. spring cloud微服务_年后进大厂,必备这份微服务面试题:Dubbo+SpringBoot+Cloud

    Dubbo面试题 Dubbo与DubboX区别 Dubbo中zookeeper做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么? Dubbo中有哪些角色? Dubbo在安全机制方面是如 ...

  8. Java微服务 面试题

    Java面试题大全免费下载地址: Java面试题大全.pdf-其它文档类资源-CSDN下载 Nginx是一个轻量级.高性能.稳定性高.并发性强的HTTP和反向代理服务器. Vue V-cloak:防止 ...

  9. SpringCloud补充与微服务面试题

    多级缓存 1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: •请求要经过Tomcat处理,Tomcat的性能成为整个系 ...

  10. 必知必会的微服务面试题

    SOA与微服务的区别? 1. SOA SOA的提出是在企业计算领域,就是要将紧耦合的系统,划分为面向业务的,粗粒度,松耦合,无状态的服务.服务发布出来供其他服务调用,一组互相依赖的服务就构成了SOA架 ...

最新文章

  1. linux sftp权限设置,Linux设置SFTP服务用户目录权限
  2. 使用DFS求任意两点的所有路径
  3. 绘制基础知识-canvas paint
  4. VS静态库和动态库的区别
  5. 男朋友让我纹他的名字,但我不想纹怎么办?
  6. html5动画在线制作工具,KoolShow-KoolShow(HTML5动画制作工具) v2.4.4 官方版-CE安全网...
  7. Linux查找命令与find命令详解
  8. c语言pow为什么溢出,c – GMP pow中的溢出处理
  9. 360校招失败的惨痛经历
  10. unity学习之遮挡剔除
  11. 游戏开发心得——书籍篇——《游戏引擎框架》-导论
  12. TIA博途WINCC中如何获取当前画面编号并发送给PLC?
  13. matlab基础语法
  14. 基于 HTML5 + WebGL 的宇宙 3D 展示系统
  15. 猫盘群晖远程访问之Frp
  16. 哪些学校不让用matlab,新一轮制裁?部分高校被禁止使用matlab,科学无国界就是一句笑话...
  17. DVWA——使用sqlmap工具post注入
  18. 狂神Smbms(javaWeb超市订单管理系统)实现
  19. IKAnalyzer分词器自定义扩展词典
  20. 【操作系统】最全复习提纲及例题

热门文章

  1. 水系图一般在哪里找得到_腾远带你了解:虹吸排水系统原理、组成及应用优势...
  2. Markdown MarkdownPad2 win10上显示awesomium
  3. Android MMKV框架引入使用
  4. Linux源码安装步骤详解
  5. python aiml开发文档_Python AIML搭建聊天机器人
  6. python爬虫爬当当网_python爬取当当网图书排行榜
  7. AFNetworking Post Raw Data(JSON)
  8. Oracle索引的建立及优缺点
  9. 雷达篇(二)线性调频信号公式推导及matlab仿真
  10. VC6下编译fltk-1.3.5