Preguntas de la entrevista de Springboot y Springcloud (incluido el código y el diagrama de visualización)

1 ¿Hablar brevemente sobre springboot?

Spring Boot es un marco completamente nuevo proporcionado por el equipo de Pivotal. Su propósito de diseño es simplificar la configuración inicial y el proceso de desarrollo de las aplicaciones Spring. -Después de usar Springboot, construir una aplicación y desarrollo Spring, la implementación se vuelve muy simple.

2 Cómo implementar simplemente una aplicación springboot

1) Crea un nuevo proyecto maven

2) Deje que el proyecto tome spring-boot-starter-parent como módulo principal

<parent>     
    <groupId>org.springframework.boot</groupId>   
    <artifactId>spring-boot-starter-parent</artifactId>    
    <version>2.0.5.RELEASE</version> 
</parent>

3) Elige unos entrantes según la escena.

<dependency>   
   <groupId>org.springframework.boot</groupId>    
   <artifactId>spring-boot-starter-web</artifactId>  
</dependency>  

<dependency>      
  <groupId>org.springframework.boot</groupId>    
  <artifactId>spring-boot-starter-test</artifactId>
</dependency>

4) Configurar application.yml / application.properties

server:

 port: 8080 

5) Puerto de escritura

@SpringBootApplication 

 public class PetHomeApplication {   
       public static void main(String[] args) {
            SpringApplication.run(PetHomeApplication.class,args);    
  }  }

6) Prueba

Inicio principal, inicio a través de localhost: 8080 sin error

3 ¿Cómo Springboot realiza la configuración de múltiples entornos?

1) ¿Qué es la configuración multientorno?

Es un conjunto de código que se puede utilizar en varios entornos. Es necesario configurar múltiples entornos.

2) Cómo configurar múltiples entornos

① Configure varios entornos en un archivo

② Varios archivos (nombre del entorno de la aplicación.yml / propiedades)

3) Cómo especificar un entorno específico

①Iniciar por defecto

②Especifique el entorno de inicio

4 Cómo implementar el proyecto springboot

Springboot ha integrado el Tomcat incorporado de forma predeterminada. Después de empaquetarlo en el jar, hay Tomcat en él. Está bien ejecutarlo directamente como un paquete jar.

1) embalaje

pom.xml加入打包插件

<build>      
      <plugins>          
          <plugin>            
  <groupId>org.springframework.boot</groupId>       
  <artifactId>spring-boot-maven-plugin</artifactId>         
          </plugin>      
      </plugins> 
</build>

打包:

mvn clean package

2) Despliegue

ventanas: java -jar xxx.jar

Linux: ejecute nohup java -jar xxx.jar en segundo plano

5 principios de la configuración automática de springboot

Cuando introduzcamos el motor de arranque, usaremos el principio de configuración automática Springboot para configurar este escenario.

imagen

①La clase de entrada de la aplicación Springboot usa @EnableAutoConfiguration (anotación principal) a través de la introducción de la anotación @SpringBootApplication

②Después de usar @EnableAutoConfiguration, se escanearán todos los archivos spring.factories en el jar y se cargarán todas las clases de configuración (se agregarán las clases @Configuration)

③La clase de configuración (clase con @Configuration agregado) usa XxxProperties para completar la configuración de la escena correspondiente en la forma de @Bean

④ La información de configuración en XxxPropereis tiene valores predeterminados, pero podemos obtenerla en application.properties/application.yml

6 ¿Qué es el monolito?

Normalmente, el código correspondiente a este proyecto puede estar compuesto por múltiples módulos, y cada módulo tiene un límite claro de acuerdo a las diferentes funciones que proporciona. Al compilar, estos proyectos se empaquetarán en un paquete JAR y finalmente se fusionarán para formar un paquete jar o WAR

imagen

Este tipo de aplicación monolítica es relativamente simple cuando el proyecto es pequeño, pero a medida que el proyecto crece, el código se vuelve cada vez más grande. Habrá las siguientes deficiencias.

①Difícil de compilar, difícil de implementar, difícil de probar

La cantidad de código aumenta. Incluso si se cambia una línea de código, la compilación lleva mucho tiempo. Antes de la implementación, es necesario compilarla, empaquetarla, descomprimirla, etc. Es difícil de implementar y es difícil de probar después de la implementación.

②Difícil elegir tecnología

A medida que se hace cada vez más grande, la tecnología utilizada en nuestras aplicaciones también será cada vez mayor. Algunas de estas tecnologías son incompatibles, por ejemplo, es casi imposible mezclar C ++ y Java a gran escala en un proyecto. En este caso, debemos abandonar el uso de ciertas tecnologías incompatibles y elegir una tecnología que no sea tan adecuada para lograr funciones específicas.

③Difícil de expandir

Incluso si solo hay una función con alta concurrencia, todas deben extenderse

imagen

7 ¿Qué es MicroService?

La arquitectura de microservicios es un estilo arquitectónico. Un software grande y complejo debe constar de uno o más microservicios. Cada microservicio del sistema se puede seleccionar mediante tecnología independiente, desarrollo independiente, implementación independiente, operación y mantenimiento independientes, y cada microservicio está débilmente acoplado. Cada microservicio solo se enfoca en completar una tarea y completar esa tarea bien. En todos los casos, cada tarea representa la capacidad de una pequeña empresa.

imagen

8 Selección de monolitos y microservicios

imagen

Como se puede ver en la figura anterior, en la etapa inicial, la eficiencia de desarrollo de aplicaciones utilizando el patrón de arquitectura de Microservicio es significativamente menor que la de Monolith. Sin embargo, a medida que aumenta la escala de aplicaciones, la eficiencia de desarrollo basada en el modelo de arquitectura de microservicio aumentará significativamente, mientras que la eficiencia de desarrollo basada en el modelo Monolith disminuirá gradualmente.

Arquitectura de aplicaciones monolítica: proyectos pequeños y medianos (relativamente pocas funciones), web oficial de la empresa, sistema de gestión, etc.

Arquitectura de microservicios: proyectos a gran escala (más funciones) mall erp, recursos humanos, pet paradise, etc.-proyectos de Internet

9 A qué prestar atención cuando MicroService divide microservicios

1. Responsabilidad única, alta cohesión y escaso acoplamiento

2. Granularidad de servicio moderada

3. Considere la estructura del equipo

4. Adopte un modelo empresarial

5. División evolutiva

6. Evite la dependencia circular y la dependencia bidireccional

10 problemas que deben resolverse en el núcleo de MicroService

1. Centro de registro y descubrimiento de servicios

2. Entrada unificada de microservicios-gestión de redes API

3. Tolerancia a fallos de servicio y límite de corriente

4. Centro de configuración centralizado de servicios

5. Seguimiento de la cadena de llamadas de servicio

6. Despliegue de servicios

7. Supervisión del servicio

11 soluciones comunes de microservicio

1. Springcloud Netflix

2. Springcloud alibaba

3. Dubbo

4. Kubernates-k8s

5. Servicio mesh-istio

6. Otro

12 Habla brevemente sobre Springcloud

La arquitectura de microservicio es una idea que requiere la implementación de tecnología.En la solución de microservicio de Spring, SpringBoot se usa para implementar un solo servicio, y las llamadas coordinadas entre servicios se implementan utilizando el marco de gobierno de servicios Springcloud netflix / alibaba. A continuación, se habla principalmente de los componentes comunes de netflix de la siguiente manera:

Cinco grandes bestias:

Descubrimiento de registro de servicio (centro de registro) -Netflix Eureka: Ayúdanos a administrar la dirección de comunicación del servicio (ip, puerto)

Equilibrio de carga del cliente: cinta de Netflix \ Fingir: resolver llamadas de servicio

Circuit Breaker-Netflix Hystrix: resuelve la falla de los microservicios, protege los microservicios

Pasarela de servicio-Netflix Zuul: entrada de acceso unificado, la puerta a los microservicios (departamento de seguridad)

Configuración distribuida-Spring Cloud Config: gestión unificada de la configuración de microservicios

13 Habla brevemente sobre Springcloud Netflix eureka

Eureka es un submódulo de netflix y uno de los módulos principales.

Eureka es un componente de registro y descubrimiento de servicios. En pocas palabras, se utiliza para gestionar uniformemente la dirección de comunicación de los microservicios. Consta de dos partes: el servidor EurekaServer (también llamado registro) y el cliente EurekaClient. EureakServer es un servicio independiente y EurekaClient Debe heredarse en cada microservicio.

Cuando se inicia el microservicio (EurekaClient), enviará su propia lista de direcciones de comunicación a EureakServer, como el nombre del servicio, la ip, el puerto, y EurekaServer formará una lista de direcciones de comunicación del microservicio; esto se denomina registro de servicio.

El microservicio (EurekaClient) extraerá periódicamente una lista de direcciones de comunicación de microservicio de EureakServer y la almacenará en caché localmente. Cuando un microservicio inicia una llamada a otro microservicio, encontrará su lista de direcciones de comunicación según el nombre del servicio de destino y luego iniciará una solicitud al servicio de destino según el protocolo HTTP. -Esto se llama descubrimiento de servicios.

Además, el microservicio (EurekaClient) utiliza el mecanismo de "latido" para enviar una solicitud a EureakServer para renovar el servicio. De hecho, envía una solicitud a EureakServer para informar su estado de salud con regularidad, indicándole a EureakServer que todavía está vivo y que no se elimine de la lista de direcciones del servicio. Luego, cuando el microservicio (EurekaClient) no puede renovar el contrato con EureakServer, o la solicitud de renovación se agota, el registro eliminará el servicio fallido de la lista de direcciones.

14 Hable brevemente sobre Springcloud Netflix ribbon / fingir

Ribbon es un proyecto de código abierto para servicios de nivel medio en la nube lanzado por Netflix. Su función principal es proporcionar algoritmos de equilibrio de carga del lado del cliente.

Ribbon es un equilibrador de carga del cliente, puede completar múltiples llamadas de equilibrio de carga del servidor de acuerdo con ciertas reglas, y estas reglas también admiten la personalización.

Feign es un cliente de servicio web declarativo, su propósito es facilitar las llamadas al servicio web. Feign proporciona la plantilla de interfaz de solicitud HTTP (la dirección de acceso está marcada arriba). Al escribir una interfaz simple e insertar anotaciones, puede definir los parámetros, el formato, la dirección y otra información de la solicitud HTTP. Feign hará un proxy completo de las solicitudes HTTP. Solo necesitamos llamarlo como un método para completar las solicitudes de servicio y el procesamiento relacionado. Feign integra Ribbon e Hystrix (hablaremos de Hystrix más adelante), por lo que ya no necesitamos usar estos dos componentes explícitamente.

15 Habla brevemente sobre Springcloud Netflix hystrix

Hystrix es un marco de alta disponibilidad muy popular de código abierto del conocido sitio web extranjero de videos Netflix. Hystrix puede resolver perfectamente una serie de problemas técnicos que enfrenta creando servicios de alta disponibilidad en la arquitectura del sistema distribuido.

Hystrix "Porcupine" tiene la capacidad de protegerse. Hystrix utiliza los siguientes mecanismos para resolver el problema del efecto de avalancha.

1 Aislamiento de recursos (límite actual): incluido el aislamiento del grupo de subprocesos y el aislamiento del semáforo, la limitación del uso de recursos para invocar servicios distribuidos y un problema con un servicio llamado no afectará a otras llamadas de servicio.

2 Fusible: cuando la tasa de falla alcanza el umbral, la degradación se activa automáticamente (por ejemplo, la tasa de falla es alta debido a la falla / tiempo de espera de la red), y la falla rápida provocada por el fusible se recuperará rápidamente.

3 Mecanismo de degradación: degradación con el tiempo y recursos insuficientes (hilo o semáforo). Después de la degradación, puede cooperar con la interfaz de degradación para devolver los datos inferiores.

4 Caché: proporciona caché de solicitudes e implementación de combinación de solicitudes.

16 Habla brevemente sobre Springcloud Netflix zuul

Zuul es un servidor API Gateway de código abierto de netflix. Las funciones principales son las siguientes:

1. El enrutamiento dinámico distingue a qué servicio específico llamar por diferentes direcciones

2. Filtro A través del filtro, se puede realizar la interceptación de inicio de sesión, el juicio de autoridad, etc.

3. Equilibrio de carga La capa inferior implementa llamadas de equilibrio de carga a través de la cinta.

4. Rebaja de fusibles La capa inferior utiliza hystrix para implementar medidas de garantía de servicio, como rebajas de fusibles

5.…

17 Hable brevemente sobre Springcloud Netflix Config server

En un sistema distribuido, debido a la gran cantidad de servicios, para facilitar la gestión unificada de los archivos de configuración del servicio y las actualizaciones en tiempo real, se requiere un componente del centro de configuración distribuido. En Spring Cloud, hay un componente del centro de configuración distribuido, configuración de la nube de primavera, que admite el servicio de configuración en la memoria del servicio de configuración (es decir, local) y también admite el almacén Git remoto. En el componente de configuración de la nube de primavera, hay dos roles, uno es el servidor de configuración y el otro es el cliente de configuración.

18 Seguimiento de enlaces de arquitectura de microservicio

En la arquitectura de microservicio, hay llamadas mutuas entre servicios y se requiere la supervisión de la cadena de llamadas de servicio. Hay muchos productos en el mercado, las ventajas y desventajas específicas son las siguientes:

imagen

19 Arquitectura-implementación de microservicios

En la arquitectura de microservicios, hay muchos servicios, por lo que muchos servicios deben implementarse y actualizarse rápidamente. Por lo tanto, generalmente se usa la implementación de Docker y se requiere una canalización cicd. El proceso específico es el siguiente:

imagen

Supongo que te gusta

Origin blog.csdn.net/Java_Yhua/article/details/110484030
Recomendado
Clasificación