2019年顶级微服务面试解析

2019年顶级微服务面试解析

前言:

根据Gartner的说法,微服务是云开发的新应用平台。微服务是独立部署和管理的,一旦在容器内实现,它们与底层操作系统的交互很少。 因此,如果您计划在微服务中开始您的职业生涯,那么现在正是潜入技术处于新生状态的时候。因此本文做了一些简单的解析,望能更好的帮助你们应对问题。

1.什么是Spring Cloud?

在微服务中,Spring Cloud是一个提供与外部系统集成的系统。它是一个轻框架,可以快速构建应用程序。与有限数量的数据处理相关联,它在微服务架构中起着非常重要的作用。

对于典型用例,Spring Cloud提供了开箱即用的体验以及下面提到的一系列广泛功能:

版本化和分布式配置。

发现服务注册。

服务对服务请求。。

路由。

断路器和负载平衡。

集群和选举。

全局锁和分布式消息传递。

2.什么是spring boot?

Spring boot是微服务面试问题的主要话题。

随着新功能的增加,Spring不断变得越来越复杂。无论何时启动新项目,都必须添加新的构建路径或Maven依赖项。简而言之,您需要从头开始做所有事情。Spring Boot是一种可以帮助您避免所有代码配置的解决方案。

3.如何覆盖Spring Boot项目的默认属性?

这可以通过在application.properties文件中指定属性来完成。

例如,在Spring MVC应用程序中,您必须指定后缀和前缀。这可以通过在application.properties文件中输入下面提到的属性来完成。

对于后缀 - spring.mvc.view.suffix: .jsp

对于前缀 - spring.mvc.view.prefix: /WEB-INF/

4.执行器在Spring Boot中的作用

它是最重要的功能之一,可帮助您访问在生产环境中运行的应用程序的当前状态。有多个指标可用于检查当前状态。它们还为RESTful Web服务提供端点,可以简单地用于检查不同的度量标准。

5.如何在Spring Boot应用程序中实现Spring安全性?

实现需要最小配置。您需要做的就是spring-boot-starter-security在pom.xml文件中添加starter。您还需要创建一个Spring配置类,它将覆盖所需的方法,同时扩展 WebSecurityConfigurerAdapter 应用程序中的安全性。这是一些示例代码:

package com.gkatzioura.security.securityendpoints.config;

import org.springframework.context.annotation.Configuration;

import org.springframework.security.config.annotation.web.builders.HttpSecurity;

import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration

public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Override

protected void configure(HttpSecurity http) throws Exception {

http.authorizeRequests()

.antMatchers("/welcome").permitAll()

.anyRequest().authenticated()

.and()

.formLogin()

.permitAll()

.and()

.logout()

.permitAll();

}

}

6. Spring Boot支持哪些嵌入式容器?

无论何时创建Java应用程序,都可以通过两种方法进行部署:

使用外部的应用程序容器。

将容器嵌入jar文件中。

Spring Boot包含Jetty,Tomcat和Undertow服务器,所有服务器都是嵌入式的。

Jetty - 用于大量项目,Eclipse Jetty可以嵌入到框架,应用程序服务器,工具和集群中。

Tomcat - Apache Tomcat是一个开源JavaServer Pages实现,可以很好地与嵌入式系统配合使用。

Undertow - 一个灵活而突出的Web服务器,它使用小型单一处理程序来开发Web服务器。

7.微服务的端到端测试意味着什么?

端到端测试 验证工作流中的所有流程,以检查一切是否按预期工作。它还确保系统以统一的方式工作,从而满足业务需求。

8.什么是语义监控?

它结合了对整个应用程序的监控以及自动化测试。语义监控的主要好处是找出对您的业务更有利可图的因素。

从业务角度来看,语义监控以及服务层监控可以监控微服务。一旦检测到问题,它们就可以实现更快的隔离和 错误分类,从而减少修复所需的主要时间。它对服务层和事务层进行分类,以确定受可用性或性能不佳影响的事务。

9.如何设置服务发现?

有多种方法可以设置服务发现。我将选择我认为效率最高的那个,Netflix的Eureka。这是一个无忧无虑的程序,不会对应用程序造成太大影响。此外,它支持多种类型的Web应用程序。

Eureka配置包括两个步骤 - 客户端配置和服务器配置。

使用属性文件可以轻松完成客户端配置。在clas spath中,Eureka搜索了一个eureka-client.properties文件。它还搜索由特定于环境的属性文件中的环境引起的覆盖。

对于服务器配置,您必须首先配置客户端。完成后,服务器将启动一个用于查找其他服务器的客户端。默认情况下,Eureka服务器使用客户端配置来查找对等服务器。

10.为什么要选择微服务架构?

这是一个非常常见的微服务面试问题,你应该准备好了!微服务架构提供了许多专业人员。这里有几个:

微服务可以轻松适应其他框架或技术。

单个进程的失败不会影响整个系统。

为大企业和小型团队提供支持。

可以在相对较短的时间内独立部署。

11.为什么在微服务中需要报告和仪表板?

报告和仪表板主要用于监视和维护微服务。有多种工具可以帮助实现此目的。 报告 和仪表板可用于:

找出哪些微服务暴露了哪些资源。

找出组件发生变化时受影响的服务。

提供一个简单的点,只要需要文档,就可以访问它。

部署的组件的版本。

从组件中获得成熟感和合规性。

12.为什么人们会犹豫使用微服务?

我见过许多开发者在这个问题上摸索。毕竟,在面试微服务架构师角色时,他们会被问到这个问题,所以承认它的缺点可能有点棘手。以下是一些很好的答案:

它们需要大量投资 - 微服务需要大量的合作。由于您的团队独立工作,他们应该能够始终保持良好的同步。

他们需要建立繁重的架构 - 系统是分布式的,架构涉及很多。

他们需要过多的计划来处理操作开销 - 如果您计划使用微服务架构,则需要为操作开销做好准备。

他们有自主的工作人员选择 - 需要熟练的专业人员,他们可以支持异构分布的微服务。

13. PACT如何运作?

PACT是一个开源工具。它有助于测试消费者和服务提供商之间的互动。但是,它不包含在合同中,从而提高了应用程序的可靠性。消费者服务开发人员首先编写一个测试,该测试定义了与服务提供者的交互模式。测试包括提供者的状态,请求正文和预期的响应。基于此,PACT创建了一个针对其执行测试的存根。输出存储在JSON文件中。

14.定义域驱动设计

主要关注核心域逻辑。基于域的模型检测复杂设计。这涉及与领域专家定期合作,以解决与域相关的问题并改进应用程序的模型。在回答这个微服务面试问题时,您还需要提及DDD的核心基础知识。他们是:

DDD主要关注域逻辑和域本身。

复杂的设计完全基于域的模型。

为了改进模型的设计并解决任何新出现的问题,DDD不断与领域专家合作。

最后给大家分享一个微服务架构专题的框架图,帮助大家更好的理解

2019年顶级微服务面试解析

 

喜欢这篇文章的话,可以给作者点个喜欢,点下关注,每天都会分享Java相关文章!

记得一定要关注我哦,会不定时的福利赠送,包括整理的面试题,学习资料,源码等~~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值