36%的企业目前正在使用微服务,另有26%的企业正在研究如何实施这些服务。

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不断与领域专家合作。

  • 欢迎工作一到五年的Java工程师朋友们加入Java程序员开发: 854393687
    群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
     

01-25 18:15