Resumen de las preguntas de la entrevista de middleware de 2020 (RabbitMQ+Kafka+ZooKeeper)

ConejoMQ

1. ¿Cuáles son los escenarios de uso de RabbitMQ?

Actividades de compra de pánico, recortando picos y llenando valles, para evitar que el sistema colapse.

Retrasar el procesamiento de la información, como enviar recordatorios por correo electrónico a los usuarios que hayan realizado pedidos pero no hayan pagado después de 10 minutos. Al desacoplar el sistema, puede escribir extensiones de módulos por separado para nuevas funciones. Por ejemplo, después de que el usuario confirma la evaluación, se agrega la función de devolver puntos al usuario. En este momento, no es necesario agregar la función de agregar nuevos apunta al código comercial. La interfaz integral se suscribe a la cola de mensajes para confirmar la evaluación. Para agregar funciones más tarde, solo necesita suscribirse a la cola de mensajes correspondiente.

2. ¿Cuáles son los roles importantes de RabbitMQ?

Los roles importantes en RabbitMQ son: productores, consumidores y agentes:

Productor: el creador del mensaje, responsable de crear y enviar datos al servidor de mensajes;

Consumidor: el receptor del mensaje, utilizado para procesar datos y confirmar el mensaje;

Agente: es el propio RabbitMQ, que se utiliza para desempeñar el papel de "entrega urgente". No produce mensajes en sí mismo, sino que solo desempeña el papel de "entrega urgente".

3. ¿Cuáles son los componentes importantes de RabbitMQ?

ConnectionFactory (administrador de conexiones): El administrador para establecer una conexión entre la aplicación y Rabbit, utilizado en el código del programa.

Canal: el canal utilizado para enviar mensajes.

Intercambio (intercambio): se utiliza para recibir y distribuir mensajes.

Queue (cola): se utiliza para almacenar el mensaje del productor.

RoutingKey (clave de enrutamiento): se utiliza para distribuir los datos del generador al conmutador.

BindingKey (clave de vinculación): se utiliza para vincular el mensaje del intercambio a la cola.

4. ¿Cuál es el papel de vhost en RabbitMQ?

vhost: cada RabbitMQ puede crear muchos vhosts, a los que llamamos hosts virtuales. Cada host virtual es en realidad una versión mini de RabbitMQ, que tiene sus propias colas, conmutadores y enlaces, y tiene su propio mecanismo de permisos.

5. ¿Cómo se envían los mensajes de RabbitMQ?

Primero, el cliente debe conectarse al servidor RabbitMQ para publicar y consumir mensajes. Se creará una conexión TCP entre el cliente y el servidor Rabbit. Una vez que se abre el TCP y se pasa la autenticación (la autenticación es el nombre de usuario y la contraseña que envía al Rabbit Server), su El cliente y RabbitMQ crean un canal amqp (canal). El canal es una conexión virtual creada en el tcp "real". Los comandos Amqp se envían a través del canal. Cada canal tendrá una identificación única, ya sea se emite Los mensajes y las colas de suscripción se realizan a través de este canal.

6. ¿Cómo asegura RabbitMQ la estabilidad de los mensajes?

Proporciona funcionalidad de transacción.

Configurando el canal para confirmar el modo.

7. ¿Cómo evita RabbitMQ la pérdida de mensajes?

El mensaje se conserva en el disco para garantizar que no se pierda cuando se reinicie el servidor.

Hay al menos un disco físico en cada clúster y se garantiza que los mensajes caigan en el disco.

8. ¿Cuáles son las condiciones para asegurar el éxito de la persistencia del mensaje?

La cola declarada debe establecer persistente duradero en verdadero.

El modo de entrega de inserción de mensajes se debe establecer en persistente y el modo de entrega se establece en 2 (persistente).

El mensaje ha llegado al intercambio persistente.

El mensaje ha llegado a la cola persistente.

Las cuatro condiciones anteriores se cumplen para garantizar el éxito de la persistencia del mensaje.

9. ¿Cuáles son las desventajas de la persistencia de RabbitMQ?

La desventaja de la persistencia es que reduce el rendimiento del servidor porque se utiliza el disco en lugar del almacenamiento en memoria, lo que reduce el rendimiento. Puede intentar usar el disco duro ssd para aliviar el problema de rendimiento.

10. ¿Cuántos tipos de transmisión tiene RabbitMQ?

directo (modo predeterminado): El modo más básico y simple, el remitente envía el mensaje al suscriptor.Si hay varios suscriptores, el mensaje se envía por sondeo de forma predeterminada.

Cabeceras: Similar a la directa, pero el rendimiento es muy pobre, este tipo casi no se usa.

fanout: modo de distribución, distribuye el consumo a todos los suscriptores.

tema: haga coincidir el modo de suscripción, use el patrón regular para hacer coincidir la cola de mensajes y se pueden recibir todas las coincidencias.

11. ¿Cómo implementa RabbitMQ una cola de mensajes retrasados?

Hay dos formas de implementar la cola de retraso:

Después de que el mensaje expira, ingresa al intercambio de mensajes fallidos y luego lo reenvía a la cola de consumo retrasado por el intercambio para realizar la función de retraso;

Utilice el complemento RabbitMQ-delayed-message-exchange para implementar la función de retraso.

12. ¿Cuál es el uso del clúster RabbitMQ?

Los clústeres tienen dos propósitos principales:

Alta disponibilidad: si un servidor tiene un problema, se puede seguir utilizando todo el RabbitMQ;

Alta capacidad: el clúster puede transportar más mensajes.

13. ¿Cuáles son los tipos de nodos RabbitMQ?

Nodo de disco: los mensajes se almacenan en el disco.

Nodos de memoria: todos los mensajes se almacenan en la memoria y se perderán después de reiniciar el servidor. El rendimiento es superior al del tipo de disco.

14. ¿A qué problemas se debe prestar atención al construir un clúster RabbitMQ?

Use la conexión "-link" entre cada nodo, esta propiedad no se puede ignorar.

El valor de la cookie erlang utilizada por cada nodo debe ser el mismo.Este valor es equivalente a la función de "clave secreta" y se utiliza para la autenticación de cada nodo. Debe haber un nodo de disco en todo el clúster.

15. ¿Cada nodo de RabbitMQ es una copia completa de otros nodos? ¿Por qué?

No, por dos razones:

Consideración del espacio de almacenamiento: si cada nodo tiene una copia completa de todas las colas, el nuevo nodo no solo aumentará el espacio de almacenamiento, sino que agregará más datos redundantes;

Consideraciones de rendimiento: si cada mensaje debe copiarse por completo en cada nodo del clúster, entonces el nuevo nodo no mejora la capacidad de procesar mensajes, como máximo mantendrá el mismo rendimiento que un solo nodo o incluso peor.

16. ¿Qué sucede cuando falla el único nodo de disco en el clúster de RabbitMQ?

Si el nodo del disco con el único disco falla, no se pueden realizar las siguientes operaciones:

No se puede crear la cola

No se puede crear el interruptor

No se pudo crear el enlace

No puedo agregar usuario

No puedo cambiar los permisos

No se pueden agregar y eliminar nodos de clúster

Si el único nodo de disco falla, el clúster puede seguir funcionando, pero no puede cambiar nada.

17. ¿Tiene RabbitMQ algún requisito para la orden de parada de los nodos del clúster?

RabbitMQ tiene requisitos para el orden en que se detiene el clúster. Los nodos de memoria deben apagarse primero y luego los nodos de disco deben apagarse en último lugar. Si el orden es todo lo contrario, puede provocar la pérdida de mensajes.

Kafka

1. ¿Se puede usar kafka independientemente de zookeeper? ¿Por qué?

Kafka no se puede usar solo sin zookeeper, porque kafka usa zookeeper para administrar y coordinar los servidores de nodos de kafka.

2. ¿Cuántas estrategias de retención de datos tiene Kafka?

Kafka tiene dos estrategias de almacenamiento de datos: retención según el tiempo de vencimiento y retención según el tamaño de los mensajes almacenados.

3. Kafka ha establecido 7 días y 10 G para borrar datos al mismo tiempo. Para el quinto día, el mensaje llegó a 10 G. ¿Cómo lo manejará Kafka en este momento?

En este momento, kafka realizará el trabajo de borrado de datos, y los datos se borrarán independientemente del tiempo y el tamaño que cumplan las condiciones.

4. ¿Qué hará que Kafka funcione lentamente?

cuello de botella de rendimiento de cpu cuello de botella de lectura y escritura de disco cuello de botella de red

5. ¿A qué debo prestar atención cuando uso el clúster de Kafka?

El número de clústeres no es tanto como sea posible, preferiblemente no más de 7, porque cuantos más nodos, más tiempo lleva la replicación de mensajes y menor es el rendimiento de todo el grupo.

El número de clústeres es preferiblemente impar, porque más de la mitad de los clústeres defectuosos no se pueden usar y establecerlo en un número impar tiene una mayor tasa de tolerancia a fallos.

guardián del zoológico

1. ¿Qué es zookeeper?

Zookeeper es un servicio de coordinación de aplicaciones distribuidas de código abierto, una implementación de código abierto de Google Chubby y un componente importante de Hadoop y HBase. Es un software que proporciona servicios consistentes para aplicaciones distribuidas, entre sus funciones se encuentran: mantenimiento de configuración, servicio de nombres de dominio, sincronización distribuida, servicio de grupos, etc.

2. ¿Qué funciones tiene el cuidador del zoológico?

Gestión de clústeres: monitoree el estado de supervivencia de los nodos, las solicitudes en ejecución, etc.

Elección del nodo maestro: después de que el nodo maestro cuelga, se puede iniciar una nueva ronda de elección del maestro desde el nodo en espera. La elección del nodo maestro se refiere al proceso de elección, y Zookeeper puede ayudar a completar este proceso.

Candados distribuidos: zookeeper proporciona dos tipos de candados: candados exclusivos y candados compartidos. Un bloqueo exclusivo significa que solo un subproceso puede usar un recurso a la vez. Un bloqueo compartido es compartido por un bloqueo de lectura. La exclusión mutua de lectura y escritura significa que varios subprocesos pueden leer el mismo recurso al mismo tiempo. Si desea utilizar un bloqueo de escritura, solo un subproceso puede usarlo. Zookeeper puede controlar bloqueos distribuidos.

Servicio de nombres: En un sistema distribuido, al utilizar el servicio de nombres, la aplicación cliente puede obtener información como la dirección del recurso o servicio, el proveedor, etc. de acuerdo con el nombre especificado.

3. ¿Cuántos modos de implementación tiene zookeeper?

Zookeeper tiene tres modos de implementación:

Implementación independiente: se ejecuta en un clúster;

Implementación de clústeres: ejecución de múltiples clústeres;

Implementación de pseudoclúster: un clúster inicia la ejecución de varias instancias de zookeeper.

4. ¿Cómo asegura zookeeper la sincronización de estado de los nodos maestro y esclavo?

El núcleo de zookeeper es la transmisión atómica, que garantiza la sincronización entre servidores. El protocolo que implementa este mecanismo se denomina protocolo zab.

El protocolo zab tiene dos modos, modo de recuperación (elección maestra) y modo de transmisión (sincronización). Cuando el servicio se inicia o después de que el líder falla, ZAB ingresa al modo de recuperación. Cuando se elige el líder y la mayoría de los servidores completan la sincronización de estado con el líder, el modo de recuperación finaliza. La sincronización de estado garantiza que el líder y el servidor tengan el mismo estado del sistema.

5. ¿Por qué hay un nodo maestro en el clúster?

En un entorno distribuido, parte de la lógica comercial solo necesita ser ejecutada por una determinada máquina en el clúster, y otras máquinas pueden compartir los resultados, lo que puede reducir en gran medida los cálculos repetidos y mejorar el rendimiento, por lo que se necesita el nodo maestro.

6. Hay 3 servidores en el clúster y uno de los nodos está inactivo. ¿Todavía se puede usar zookeeper en este momento?

Puede seguir utilizándose, y el servidor singular puede seguir utilizándose siempre que no más de la mitad de los servidores estén inactivos.

7. Cuénteme sobre el mecanismo de notificación de zookeeper.

El cliente creará un evento de observador para un determinado znode. Cuando el znode cambie, estos clientes recibirán una notificación de zookeeper, y luego el cliente podrá realizar cambios comerciales de acuerdo con el cambio del znode.

Resumir

Resumiendo las preguntas de la entrevista de 2020, los módulos incluidos en esta pregunta de la entrevista se dividen en 19 módulos, a saber: base de Java, contenedor, subprocesos múltiples, reflexión, copia de objetos, Java Web, excepción, red, patrón de diseño, Spring/Spring MVC, Spring Boot /Spring Cloud, Hibernate, MyBatis, RabbitMQ, Kafka, Zookeeper, MySQL, Redis, JVM.

Siga la cuenta oficial: Programmer Chasing Wind, responda [009] para obtener la información anterior.

Supongo que te gusta

Origin blog.csdn.net/Design407/article/details/109560003
Recomendado
Clasificación