Habla sobre esas cosas sobre microservicios

Los blogs orientados a la entrevista se presentan en estilo Q / A.


Pregunta 1: ¿Hablar sobre el registro del servicio y el descubrimiento del servicio?

Respuesta 1:

El registro del servicio consiste en mantener un registro, que gestiona todas las direcciones de servicio en el sistema. Cuando se inicia el nuevo servicio, confesará su información de dirección al registro. La parte que confía en el servicio solicita directamente la dirección del proveedor de servicios del registro. Hay muchas herramientas para el registro de servicios, como ZooKeeper, Consul, Etcd y eureka de Netflix. Hay dos formas de registro de servicio: registro de clientes y registro de terceros.

Registro del cliente (zookeeper)
El registro del cliente es el servicio responsable del registro y la cancelación. Cuando se inicia el servicio, regístrese en el centro de registro y cancele el registro cuando el servicio se desconecte. Durante este período, aún debe mantener el pulso en el centro de registro. El latido no tiene que ser realizado por el cliente, sino que también puede ser manejado por el centro de registro (este proceso se llama Tanhuo). La desventaja de este método es que el trabajo de registro se combina con el servicio, y diferentes idiomas deben implementar un conjunto de lógica de registro.

El registro del cliente se muestra a continuación:
Inserte la descripción de la imagen aquí

Para la explicación anterior:
el servicio que necesita registrarse, Sevice, trata directamente con el Registro de servicio Registro de servicio. Hay tres métodos entre los dos, incluido el registro de registro (), heartbeat (), cancelar / cancelar registro () El servicio de registro debe combinarse con el centro de registro, que no cumple con el concepto de diseño de bajo acoplamiento y depende del registro de un tercero (registro de servicio independiente).

Registro de terceros (Registrador de servicio independiente)
Un Registrador de servicio independiente es responsable del registro y la cancelación. Cuando se inicia el servicio, se notifica al Registrador de alguna manera, y luego es responsable de iniciar el trabajo de registro con el registro. Al mismo tiempo, el centro de registro debe mantener el ritmo con el servicio. Cuando el servicio no está disponible, el servicio se cancelará en el centro de registro. La desventaja de este método es que el registrador debe ser un sistema altamente disponible, de lo contrario, el trabajo de registro no puede progresar.

El registro de terceros se muestra a continuación:
Inserte la descripción de la imagen aquí

Para la explicación de la figura anterior:
el servicio que necesita registrarse, Sevice, interactúa con el Registrador de servicios de terceros independiente. Cuando se inicia el servicio, se notifica al Registrador de cierta manera. Durante este período, el Registrador envía un cheque de latido al Servicio de servicio en un horario fijo para verificar si el servicio está activo.
De esta manera, el servicio de servicio puede ir a su propia lógica de negocios, sin registro adicional, cancelación adicional, centro de registro del servicio de notificación de latidos en tiempo real.
El registrador de servicio independiente interactúa directamente con el registro de servicio Registro de servicio. Existen tres métodos entre los dos, incluido el registro de registro (), heartbeat () y anulación de registro / anulación de registro (). Cuando se inicia el servicio, se notifica al Registrador, y el Registrador registra el servicio en el centro de registro del servicio; después de que se inicia el servicio, el Registrador realiza una verificación de latidos en el servicio a intervalos. Si el servicio sobrevive, llama a heartbeat () para informar al centro de registro del servicio. Si el servicio no sobrevive, Llame a unsubscribe () para cancelar el servicio al centro de registro de servicios.
Resumen: El registro de un tercero utiliza un servicio independiente, el Registrador, para separar el servicio de registro del centro de registro, que está en línea con el concepto de diseño de bajo acoplamiento. Por supuesto, este método requiere un sistema de Registro adicional altamente disponible en comparación con el registro del cliente.

Descubrimiento del cliente El descubrimiento del
cliente significa que el cliente es responsable de consultar las direcciones de servicio disponibles y el equilibrio de carga. Este método es el más conveniente y directo, y también es conveniente para el equilibrio de carga. Además, una vez que se descubre que un servicio no está disponible, se cambia inmediatamente a otro, lo cual es muy sencillo. La desventaja es también el trabajo repetido en varios idiomas, cada idioma implementa la misma lógica.

El descubrimiento del cliente se muestra a continuación:
Inserte la descripción de la imagen aquí

Para la explicación de la figura anterior: El
servicio de servicio en ejecución actúa como un cliente Cliente, utiliza directamente la solicitud http para tratar con el servidor y consulta directamente la dirección de servicio disponible, que se utiliza para lograr el trabajo de equilibrio de carga. El diseño es simple de esta manera, pero el servicio al cliente y el servidor están acoplados, lo que no cumple con el concepto de diseño de bajo acoplamiento y depende del registro del servidor.

Descubrimiento del servidor El descubrimiento del
servidor requiere servicios de enrutador adicionales.Las solicitudes se envían primero al enrutador y luego el enrutador es responsable de consultar los servicios y el equilibrio de carga. Aunque este método no tiene las deficiencias descubiertas por el cliente, su defecto es garantizar la alta disponibilidad del enrutador.

El descubrimiento del servidor se muestra a continuación:
Inserte la descripción de la imagen aquí

Para la explicación de la figura anterior: el
servicio de servicio en ejecución actúa como un cliente Cliente y se comunica con el enrutador mediante el uso de solicitudes de solicitud, el enrutador es responsable de consultar los servicios y el equilibrio de carga.
Resumen: el registro del servidor, la consulta del enrutador en lugar del servidor de consulta del cliente, reduce la carga sobre el Servicio del cliente, por supuesto, este método en comparación con el descubrimiento del cliente para proporcionar un sistema de Enrutador adicional de alta disponibilidad.


Pregunta 2: ¿Qué pasa con "API Gateway / API Gateway"?

Answer2 :

API Gateway es un servidor, y también se puede decir que es el único nodo que ingresa al sistema. Esto es similar al patrón Fachada en el patrón de diseño orientado a objetos. API Gateway encapsula la arquitectura interna del sistema y proporciona API a varios clientes. También puede tener otras funciones, como autorización, supervisión, equilibrio de carga, almacenamiento en caché, solicitud de fragmentos y administración, y procesamiento de respuesta estática. La siguiente figura muestra una API Gateway que se adapta a la arquitectura actual.
Inserte la descripción de la imagen aquí

La figura anterior muestra que la puerta de enlace API debe monitorear casi todos los demás módulos comerciales, servicio de carrito de compras, servicio de compras, servicio de compras, servicio de inventario, servicio de listas de inventario, servicio de recomendaciones, servicio de recomendaciones, servicio de pedidos, servicio de revisión, catálogo de productos servicio tipo de producto servicio.

API Gateway es responsable del envío de solicitudes, síntesis y conversión de protocolos. Todas las solicitudes del cliente primero deben pasar por la API Gateway y luego enrutar estas solicitudes a los microservicios correspondientes. API Gateway a menudo llamará a múltiples microservicios para procesar una solicitud y agregar los resultados de múltiples servicios. Puede convertir entre protocolos web y protocolos no compatibles con la web utilizados internamente, como el protocolo HTTP y el protocolo WebSocket.

Reenvío de solicitudes El reenvío de
servicios consiste principalmente en reenviar la carga de la solicitud del cliente para instalar microservicios a diferentes servicios.

Response Merge Fusiona
el trabajo que necesita llamar a múltiples interfaces de servicio en el negocio en una sola llamada para proporcionar servicios unificados al mundo exterior.

Conversión de protocolo El
objetivo es admitir la conversión de protocolo entre SOAP, JMS y Rest.

La conversión de datos se
centra en admitir las capacidades de conversión de formato de mensaje entre XML y Json (opcional).

Certificación de seguridad

  1. Control de acceso al cliente basado en tokens y estrategia de seguridad
  2. Transmisión de datos y cifrado de mensajes, descifrado en el servidor, debe tener un paquete de agente SDK separado en el cliente
  3. Cifrado de transmisión basado en HTTP, soporte de certificado digital de cliente y servidor
  4. Autenticación de seguridad de servicio basada en OAuth2.0 (código de autorización, cliente, modo de contraseña, etc.)

Pregunta 3: ¿Presentar brevemente el centro de configuración de arquitectura de microservicios?

Answer3 :

El centro de configuración se usa generalmente como la configuración de parámetros del sistema y debe cumplir con los siguientes requisitos: adquisición eficiente, conocimiento en tiempo real y acceso distribuido.

Ejemplo: a
continuación se muestra el diagrama de arquitectura implementado por el centro de configuración de zookeeper . El método de carga de datos en la memoria se utiliza para resolver el problema de la adquisición eficiente, y la percepción en tiempo real se realiza mediante el mecanismo de monitoreo del nodo zookeeper.
Inserte la descripción de la imagen aquí

La figura anterior muestra que el cuidador del zoológico del centro de configuración observará cualquier cambio en la información por parte del observador observador, y luego notificará a la capa de lógica de negocios y luego a la capa de acceso.

Clasificación de datos del centro de configuración
Inserte la descripción de la imagen aquí

La figura anterior muestra que el centro de configuración (centro de configuración, centro de configuración de nombre completo) incluye la configuración del servicio, varios conmutadores y la configuración empresarial.
configuración del servicio de base de datos comprende una configuración de servicio, la configuración de cola de servicio, la configuración de servicio de caché y similares;
varios tipos de conmutadores que comprenden varios interruptores funcionales, la conmutación de los diversos servicios, interruptor de diversos servicios;
configuración de servicio anterior, el módulo que comprende Una aplicación src A (app src A1 + aplicación src A2), módulo B aplicación src B (aplicación src B1 + aplicación src B2), etc.


Pregunta 4: ¿Describe brevemente la programación de eventos (kafka)?

Answer4 :

Programación unificada de servicios y eventos de mensajes, kafka, activemq, etc.


Pregunta 5: ¿Una breve introducción al seguimiento del servicio (starter-sleuth)?

Answer5 :

A medida que el número de microservicios continúa creciendo, es necesario realizar un seguimiento de la propagación de una solicitud de un microservicio al siguiente microservicio. SpringCloud Sleuth es para resolver este problema. Introduce una identificación única en el registro para garantizar la coherencia entre las llamadas de microservicio Sexo, para que pueda realizar un seguimiento de cómo se pasa una solicitud de un microservicio al siguiente.

  1. Para lograr el seguimiento de la solicitud, cuando la solicitud se envía al punto final de entrada del sistema distribuido, solo el marco de seguimiento del servicio necesita crear un identificador de seguimiento único para la solicitud, y el marco siempre pasa el identificador único cuando circula dentro del sistema distribuido. Hasta que se devuelva al solicitante, este identificador único es el ID de seguimiento mencionado anteriormente. A través del registro de Trace ID, podemos correlacionar todos los registros del proceso de solicitud.
  2. Para contar el retraso de cada unidad de procesamiento, cuando la solicitud llega a cada componente del servicio o cuando la lógica de procesamiento alcanza un cierto estado, su inicio, proceso específico y final también están marcados por un identificador único. Este identificador se menciona en nuestro artículo anterior. Para cada intervalo, la ID de intervalo debe tener dos nodos: inicio y final. Al registrar la marca de tiempo del intervalo de inicio y el intervalo de finalización, se puede contar el retraso de tiempo del intervalo. Además del registro de marca de tiempo, También puede contener otros metadatos, como: nombre del evento, información de solicitud, etc.
  3. En el ejemplo de inicio rápido, implementamos fácilmente el acceso a la información de seguimiento a nivel de registro, gracias a la implementación del componente spring-cloud-starter-sleuth. En la aplicación Spring Boot, después de introducir la dependencia spring-cloud-starter-sleuth en el proyecto, creará automáticamente un mecanismo de seguimiento para cada canal de comunicación para la aplicación actual, como:
    (1) a través de RabbitMQ, Kafka (u otro Cualquier middleware de mensajes implementado por cualquier carpeta de Spring Cloud Stream).
    (2) La solicitud pasó a través del agente Zuul.
    (3) Solicitud iniciada a través de RestTemplate.

Pregunta 6: ¿Cuál es el fusible de servicio (Hystrix)?

Answer6 :

Por lo general, hay varias llamadas de capa de servicio en la arquitectura del microservicio. El fallo del servicio básico puede conducir a un fallo en cascada, lo que a su vez hace que todo el sistema no esté disponible. Este fenómeno se denomina efecto de avalancha del servicio. El efecto de avalancha de servicios es un proceso en el que el "consumidor de servicios" no está disponible debido a la falta de disponibilidad del "proveedor de servicios" y aumenta gradualmente la falta de disponibilidad.

El principio del fusible es muy simple, al igual que un protector de sobrecarga de energía. Puede lograr una falla rápida. Si detecta muchos errores similares en un período de tiempo, obligará a sus llamadas múltiples posteriores a fallar rápidamente y ya no accederá al servidor remoto, evitando así que la aplicación intente continuamente realizar operaciones que pueden fallar. , Para que la aplicación pueda continuar ejecutándose sin esperar a que se corrija el error, o perder el tiempo de la CPU para esperar un tiempo de espera prolongado. El fusible también puede permitir que la aplicación diagnostique si el error se ha corregido. Si se ha corregido, la aplicación intentará volver a llamar a la operación.

Inserte la descripción de la imagen aquí
El disyuntor del mecanismo del disyuntor Hystrix
se entiende bien. Cuando el número de fallas del servicio de back-end de la solicitud de Comando Hystrix excede un cierto porcentaje (50% predeterminado), el disyuntor cambiará al estado abierto (Abierto). En este momento, todas las solicitudes fallarán directamente y no se enviarán. Al servicio de back-end. Después de que el interruptor automático permanezca en el estado abierto por un período de tiempo (predeterminado 5 segundos), cambia automáticamente al estado medio abierto (MEDIO ABIERTO). En este momento, se juzgará el estado de retorno de la próxima solicitud. Si la solicitud es exitosa, el interruptor automático se apaga. Regrese al estado cerrado (CERRADO), de lo contrario cambie al estado abierto (ABIERTO). El interruptor automático de Hystrix es como un fusible en nuestro circuito local. Una vez que el servicio de fondo no está disponible, el interruptor automático cortará directamente la cadena de solicitud para evitar el envío de una gran cantidad de solicitudes no válidas Afecta el rendimiento del sistema y el disyuntor tiene la capacidad de autodetectarse y recuperarse.

207 artículos originales publicados · 80 elogiados · 120,000 visitas

Supongo que te gusta

Origin blog.csdn.net/qq_36963950/article/details/105265993
Recomendado
Clasificación