Nginx的一项调查显示,目前有36%的企业正在使用微服务,而另外26%的企业正在研究如何实现微服务。 因此,现在可能是开始从事微服务开发的好时机。 以下是一些最常见的微服务面试题。
Spring Cloud在微服务中是一个提供与外部系统集成的系统。 这是一个可用于快速构建应用程序的框架。 它能够处理集群中大量的数据交互,从而在微服务体系结构中起着非常重要的作用。
对于典型案例,Spring Cloud提供了开箱即用的体验以及一系列扩展功能:
Spring Boot 是以微服务为主题的面试中一个主要关注点。
随着不断加入新的功能点,Spring变得越来越复杂。每当你创建一个新的项目,你必须添加新的构建路径或Maven依赖。简而言之,你将需要从头开始做所有的事。Spring Boot则可以帮助你避免所有的代码配置。
这可以通过在application.properties文件中指定属性来实现。
例如,在Spring MVC应用程序中,你必须指定视图文件的后缀和前缀。这可以通过在application.properties文件中使用以下的属性来完成。
对于后缀 -spring.mvc.view.suffix: .jsp
spring.mvc.view.prefix: /WEB-INF/
它是Spring Boot提供的重要功能之一。它可以帮助开发者检查在生产环境运行的应用程序的状态,其中包含多个指标可用于检查程序当前的状态。它还提供RESTful的接口,可以用于检查不同的指标。
使用Spring Security几乎不需要配置。你需要做的就是在 pom.xml
文件中添加 spring-boot-starter-security
。你还需要创建一个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(); } }
每当你在开发Java应用程序时,都可以通过两种方法进行部署:
Spring Boot包含Jetty,Tomcat和Undertow服务器,所有这些应用容器都是嵌入式的,
端到端测试 验证工作流中的所有流程,以检查一切是否按预期进行。它还可以确保系统以统一的方式工作,从而满足业务的需求。
它结合了对整个应用程序的监视以及自动化测试。语义监控的主要好处是它能够找出对业务更有利的因素。
语义监视与服务层监视一起从业务的角度实现了对微服务的监视。一旦检测到问题,便可以更快地进行隔离和 错误分类 ,从而减少修复问题所需的时间。它对服务层和事务层进行分类,以找出受可用性或性能问题影响的事务。
有多种方法可以用来设置服务发现。我推荐Netflix的Eureka,这是我认为最有效的。接入的过程非常简单,不需要对应用程序做很大的改动。另外,它支持多种类型的Web应用程序。
Eureka配置分成两个步骤,客户端配置和服务端配置。
使用配置文件可以轻松完成客户端的设置。Eureka会在classpath中搜索一个叫做 eureka-client.properties
的文件。它还能根据配置文件中指定的环境进行搜索。
在进行服务端配置之前,你必须首先配置客户端。在完成配置以后,服务器将启动用于查找其他服务器的客户端。默认情况下,Eureka服务器使用客户端配置来查找对端服务器。
这是一个非常常见的微服务面试问题,你应该做好准备! 微服务架构有许多优点,这里列出一些,
微服务可以轻松适配其他框架或技术
单点故障不会影响整个系统
不仅适合大型企业,同时也合适小型团队
每个服务可以独立部署,并且部署时间相对更少
服务报表和控制面板主要用于监视和维护微服务。有多种工具可以帮助实现这个目标。 服务报告 和控制面板可用于:
我发现许多开发者对此问题感到困惑。毕竟,在面试微服务架构师角色时会被问到这个问题,因此承认其缺点可能会有些棘手。这里有一些比较好的答案:
PACT是一个开源工具。它有助于测试消费者(consumer)与服务提供者(service provider)之间的交互。然而消费者端的测试可以与服务提供者独立,消费者仅需关注自己调用的服务的可用性,在集群中的其他服务可以自由做出变更。消费者服务的开发者首先编写测试用例,其中定义了与服务提供者的交互方式,我们称为合同(contract)或在PACT中称为pact。合同包括服务提供者的状态,请求体和预期的响应。基于此,PACT对需要执行的测试创建相应的Stub。输出存储在JSON文件中。
领域驱动设计的主要重点是核心领域逻辑。这涉及与领域专家的定期协作,以解决与该领域有关的问题并改善应用程序的模型。在回答这个微服务面试问题时,你还需要提及DDD的核心基础知识:
译自 https://dzone.com/articles/top ... -2019