微服务面试题及答案(19道常见必考题解析)

微服务面试题及答案(19道常见必考题解析)-mikechen

Java面试经常会考察微服务,下面给家总结了一份非常全面的微服务面试题及答案详解,希望对大家有所帮助。

什么是微服务?

微服务是一种架构模式,它提倡将单一应用程序划,分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。

 

微服务的特点

微服务面试题及答案(19道常见必考题解析)-mikechen

1)一组小的服务(大小没有特别的标准,只要同一团队的工程师理解服务的标识一致即可)

2)独立的进程(java的tomcat,nodejs等)

3)轻量级的通信(不是soap,是http协议)

4)基于业务能力(类似用户服务,商品服务等等)

5)独立部署(迭代速度快)

6)无集中式管理(无须统一技术栈,可以根据不同的服务或者团队进行灵活选择)

 

微服务的优势?

1.降低复杂度

将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。每个服务开发者只专注服务本身,通过使用缓存、DAL等各种技术手段来提升系统的性能,而对于消费方来说完全透明。

2.可独立部署

由于微服务具备独立的运行进程,所以每个微服务可以独立部署。当业务迭代时只需要发布相关服务的迭代即可,降低了测试的工作量同时也降低了服务发布的风险。

3.容错

在微服务架构下,当某一组件发生故障时,故障会被隔离在单个服务中。 通过限流、熔断等方式降低错误导致的危害,保障核心业务正常运行。

4.扩展

单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。

 

微服务的由来?

互联网的快速发展,Web应用程序的规模不断扩大,一般会经历如下四个发展阶段。

单一应用架构

微服务面试题及答案(19道常见必考题解析)-mikechen

当网站流量很小时,只需一个应用,将所有功能都部署在一起即可。

垂直应用架构

当访问量逐渐增大,单一应用按照有业务线拆成多个应用,以提升效率。

微服务面试题及答案(19道常见必考题解析)-mikechen

此时,用于加速前端页面开发的 Web框架(MVC) 是关键。

分布式服务架构

微服务面试题及答案(19道常见必考题解析)-mikechen

服务注册定义

服务注册指的是将自身服务信息注册到注册中心,服务信息包括:服务所在主机IP、服务的端口号Port、暴露服务协议等信息。

如下图所示:

微服务面试题及答案(19道常见必考题解析)-mikechen

Service B 把自己注册到注册中心,这就叫 服务注册。

 

服务注册组件有哪些?

当下用于服务注册的工具非常多ZooKeeperConsul,Etcd, 还有Netflix家的Eureka等等。

 

什么是服务熔断

熔断其实可以理解为类似于电表的保险丝,一旦某个时刻电压过载,那么保险丝就熔断了。

同样这个场景被应用到了互联网系统中,比如:当下游服务因访问压力过大而响应变慢或失败,上游服务为了保护系统整体的可用性,可以暂时切断对下游服务的调用,这就是服务熔断。

 

服务熔断组件有哪些?

目前使用服务熔断组件,主要有以下4种:

  • hystrix circuit breaker(不再维护);
  • hystrix-go;
  • resilience4j(推荐);
  • sentinel(推荐);

 

什么是服务发现?

服务发现: 即服务客户端在其网络上找到其要调用服务的具体连接信息的过程。

例如:通过查询服务注册中心得到其所调用服务的具体 IP地址和端口。 简单的说,服务发现就是服务或者应用之间互相定位的过程。

 

微服务框架

目前国内企业使用的微服务框架:主要是:Spring Cloud和Spring Cloud Alibaba。

 

SpringCloud由哪些组成?

Spring Cloud体系包含如下:

微服务面试题及答案(19道常见必考题解析)-mikechen

 

SpringCloudAlibaba包含哪些组件?

SpringCloudAlibaba包含如下组件:
微服务面试题及答案(19道常见必考题解析)-mikechen

Dubbo是什么?包含组件?

Dubbo是一款Java RPC框架,是一个分布式、高性能、透明化的 RPC 服务框架,致力于提供高性能的RPC远程服务调用方案,可以和 Spring 框架无缝集成。

Dubbo角色,主要包含如下几个核心组件:

微服务面试题及答案(19道常见必考题解析)-mikechen

1)注册中心(registry)

生产者在此注册并发布内容,消费者在此订阅并接收发布的内容。

2)消费者(consumer)

客户端,从注册中心获取到方法,可以调用生产者中的方法。

3)生产者(provider)

服务端,生产内容,生产前需要依赖容器(先启动容器)。

4)容器(container)

生产者在启动执行的时候,必须依赖容器才能正常启动(默认依赖的是spring容器),

5)监控(Monitor)

统计服务的调用次数与时间等。

 

RocketMQ消息中间件

RocketMQ是一个纯java、分布式、队列模型的开源消息中间件。

 

RocketMQ架构

RocketMQ架构,如下图所示:

微服务面试题及答案(19道常见必考题解析)-mikechen

RocketMQ架构:主要由NameServer、Broker、Producer以及Consumer四部分构成。

 

Seata分布式事务

Seata是一款阿里开源的分布式事务解决方案,Seata致力于在微服务架构下提供高性能和简单易用的分布式事务服务。

Seata事务管理中有三个重要的组件角色,如下图所示:

微服务面试题及答案(19道常见必考题解析)-mikechen

三个组件相互协作,TC 以 Server 形式独立部署,TM和RM集成在应用中启动。

 

什么是Nacos?

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,你可以用Nacos代替Eureka和Apollo两个组件。

Nacos主要的功能有:注册中心和配置中心。

 

Spring Cloud Alibaba应用场景

Spring Cloud Alibaba 的典型应用场景如下:

1.大型复杂的系统

例如:大型电商系统,大型的直播系统,大型网站系统等。

2.高并发系统

例如:阿里双11为代表的商品秒杀系统,以及亿级高并发的系统。

 

下一代微服务框架

目前下一代微服务架构就是Service Mesh,Service Mesh主流框架有Linkerd和Istio,其中Istio有大厂加持所以呼声更高。

以上就是常见的微服务面试题及答案,更多的Java面试题及答案,请查看:1000+Java面试题及答案详解

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法