Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"

Cuanto más sabes, más no sabes

Prefacio

Las colas de mensajes se utilizan tan ampliamente en el almacenamiento de tecnología de Internet ... Casi todos los entrevistadores técnicos de back-end tienen que plantear dificultades de 360 ​​° a sus amigos en el uso y los principios de las colas de mensajes.

Como un tirano que aceptó una oferta frente a una empresa de Internet, derrotó a innumerables competidores. Cada vez veía a innumerables figuras solitarias irse decepcionadas, sintiéndose un poco culpables (permítanme usar una retórica exagerada).

Entonces, en una noche solitaria e intolerable, aprendí del dolor y decidí comenzar a escribir la serie "Colgar al entrevistador", con la esperanza de ayudar a los lectores en el futuro, las entrevistas serán como un contraataque roto de 360 ​​° contra el entrevistador y tirar a tu entrevistador. ¡Que los colegas que me estaban entrevistando se quedaran estupefactos y cosecharan ofertas de grandes fábricas!

Hablar

Este número se preparó originalmente para que todos votaran por él y luego eligieran uno de los conceptos básicos de Java y las colas de mensajes para escribir, pero pensé que los conceptos básicos de Java son solo una colección de cada tipo de colección. Meses, ¿puedo escribir primero la cola de mensajes cortos?

Mi mente brilló, y tomé una foto de la mesa, ¡luego se decidió!

Entonces existe este problema jaja.

¡importante! Antes de comenzar, me gustaría preguntar, ¿le gustaría que hable sobre los puntos de conocimiento directamente en mi propio idioma, o hablo a modo de escenas de entrevistas?

Porque encontré una pregunta muy seria, si mi apertura y final son cientos de artículos, ¿te aburrirás al final?

En resumen, esta sugerencia me es muy útil, o si tienes alguna sugerencia de escritura, puedes agregarme WeChat y contarme tranquilamente.

Comienza la entrevista

Un apuesto hombre de mediana edad que vestía una camisa a cuadros se acercó a usted con un mac rayado, miró su brillante cabeza y pensó que debía ser el mejor arquitecto de Nima. Sin embargo, hemos visto la serie de Nuan Nan Ao Bing, y hay poemas y libros en su vientre, y no hay vacío.

Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"

El joven te preguntó mucho sobre Redis antes. No solo tuviste una buena respuesta, también puedes explicar las soluciones, ventajas y desventajas de los respectivos escenarios sin problemas. ¿Has visto la serie "Colgando al entrevistador" escrita por Ao Bing? ?

¡conmoción! ! ! Maestro, ¿cómo lo sabes? No puedo dejar de ver su serie.

Jeje, Redis no te detiene, pero me temo que no puedo detenerte cuando te pido una nueva pila de tecnología. Déjame preguntarte, ¿has utilizado colas de mensajes en tu proyecto? ¿Por qué utiliza colas de mensajes?

Puff, ¿esto también se llama problema? ¿No puedo usarlo si otros lo usan? Cuando otros lo usan, yo lo uso, lo uso solo para usar.

Solo susurra en tu corazón, no lo digas, no lo digas si no recibes la oferta, no solo hables allí cuando llegue el momento, ¡el cabrón Ao Bing me enseñó a decirlo!

Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"

Hola, entrevistador: El volumen de negocio propio de nuestra empresa es muy pequeño, por lo que se puede realizar directamente con una sola máquina, pero el volumen de negocio continúa expandiéndose, adoptando el concepto de diseño de microservicios y el método de implementación distribuida. Muchos servicios están divididos. A medida que aumenta el volumen y los escenarios comerciales se vuelven cada vez más complejos, la pila de tecnología independiente y el middleware en muchos escenarios no son suficientes, y la amabilidad del sistema también ha disminuido. Finalmente, se han creado muchas tecnologías. Para el trabajo de selección, decidimos introducir middleware de cola de mensajes.

¿Oh? Dijiste que los escenarios empresariales se están volviendo cada vez más complejos. ¿En qué escenarios utilizas las colas de mensajes?

Bueno, déjame hablar de la escena que utilizo desde tres aspectos.

Sugerencia: estas tres escenas también son escenas clásicas de las colas de mensajes. Básicamente, todos deberían estar familiarizados con el tipo de cola de mensajes. Cuando se habla de colas de mensajes, debe pensar en asincrónica, saturación de picos, desacoplamiento y reflejo condicionado.

asincrónico:

En nuestro escenario anterior, hay muchos pasos que deben completarse en un proceso. Por ejemplo, mi sistema de pedidos. Originalmente, nuestro negocio es simple. Solo necesitamos pagar el pedido y el proceso está completo.

Sin embargo, un gerente de producto vino más tarde y configuró un sistema de cupones. Aceptar no fue un gran problema. Hubo 100 ms adicionales en el proceso para deducir los cupones.

Más tarde, el gerente de producto tuvo un destello de inspiración y dijo que podíamos construir un sistema de puntos, está bien, había 200 ms adicionales en el proceso para aumentar o disminuir los puntos.

Más tarde, el producto Faraón de al lado dijo: Después de que el pedido sea exitoso, enviaremos un mensaje de texto al usuario, por lo que enviaremos un mensaje de texto en 100ms.

después de esto. . . (¡¡Ao Bing, nunca terminas !!)
Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"

De todos modos, el proceso es un poco así ↓

Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"
Puede ver que solo se han agregado 3. Puedo decirle categóricamente que definitivamente hay más de 10 sistemas involucrados en el proceso de pedido real (comercio electrónico convencional), cuanto más grande, más.

Este enlace continúa así y lleva mucho tiempo. Los usuarios descubren que se necesitan decenas de segundos para comprar algo especial. Yo no les compro el comercio electrónico de basura, pero si son tan baratos como Xixi, ¡es realmente fragante!

Pero nuestra empresa no tiene la fuerza económica de Xixi, por lo que solo podemos optimizar el sistema.

Consejo: Mi antigua empresa de comercio electrónico requiere que el Rt (ResponseTime) de todas las interfaces esté dentro de los 200ms, y todas las optimizaciones posteriores. El QPS del sistema que ahora estoy a cargo también es de 9W +. Es decir, si el clúster de la red se agita, puede ser el tipo de freidora. Básicamente, se requiere que RT esté dentro de los 50 ms.
Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"

Todos sienten este QPS.

Sí, el enlace es largo y lento, entonces, ¿cómo lo resuelves?

El vínculo es largo y lento, pero descubrimos que el proceso anterior se puede realizar al mismo tiempo. Una vez que haya pagado correctamente, puedo verificar el cupón y aumentar o disminuir los puntos al mismo tiempo. También puedo enviar un mensaje de texto al mismo tiempo. .

No podemos implementar el proceso normal, qué deberíamos hacer, asincrónico.

¿Lo comparas y descubres que solo le toma 100 milisegundos al usuario saber que el pedido es exitoso, en cuanto al mensaje de texto que le envías unos segundos después, no le importa para nada, verdad?
Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"

Chico, déjame interrumpirte. Dijiste asincrónico, ¿no es lo mismo si uso hilos y grupos de hilos?

Oh, no te preocupes por el entrevistador, hablaré de eso más tarde, Sao y así sucesivamente.

Desacoplamiento:

Ahora que el entrevistador pregunta eso, diré por qué no podemos hacerlo con hilos, porque lo hacemos con hilos, ¿quieres escribir código?

Tiene un proceso de pedido, deduce puntos, deduce cupones, envía mensajes de texto y deduce inventario. . . Espere a que tantas empresas llamen a tantas interfaces. Cada vez que agrega una, debe llamar a una interfaz y luego volver a publicar el sistema. Está bien escribir una o dos veces. Si escribe demasiado, simplemente diga: ¡No lo voy a hacer!

Y si todo está escrito junto, no se trata solo del problema de acoplamiento, también es problemático para usted solucionar problemas. Si ocurre un problema en cualquier lugar del proceso, puede afectar otros puntos. Mi amigo dijo que todos los procesos que tengo Intentar atrapar no es suficiente. Créame, no lo haga. Este código es como una bomba de tiempo. No sabe cuándo explotará. Si no explota, explotará cuando esté realizando actividades. Obtendrá una falla P0 y empacará su mochila con anticipación. Año nuevo familiar.

Consejo: P0: PN es un mecanismo que las empresas de Internet utilizan con frecuencia para determinar el nivel de accidentes, y P0 es el nivel más alto.

Pero si usa una cola de mensajes, el problema del acoplamiento está resuelto.

Oh, ¿qué dijo Shuai Bing?

Déjame hablar de ello:

Después de realizar un pedido, le dirás a otros sistemas que tu pago fue exitoso, y ellos se ocuparán de ello cuando lo reciban. Solo tienes que pasar por tu propio proceso y enviar tu mensaje, entonces, ¿a qué sistema te conectarás más tarde? Simple, suscríbase directamente al mensaje de éxito del pago enviado por usted, y lo monitorearé después de que su pago sea exitoso.

Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"

Entonces su proceso está terminado, ¿no necesita preocuparse si otros tienen éxito? Por ejemplo, si realiza un pedido, los puntos no se suman y el cupón no se deduce.

La pregunta es una buena pregunta, pero no hay necesidad de pensar en ella. El sistema de negocios en sí es mantenido por sus propios desarrolladores. ¿Cuál es el problema de mi pedido si falla su deducción de puntos? Solo cuida tu propio sistema de pedidos.

Sugerencia: Eso es lo que dije, pero esto es en realidad una deficiencia del uso de colas de mensajes. Implica puntos de conocimiento de transacciones distribuidas, que mencionaré a continuación.

Recorte de picos:

Tome el pico que escribí en el último número (lo que implica que los nuevos estudiantes están viendo mi último número), su tráfico suele ser muy bajo, pero desea realizar la actividad de pico a las 00:00 cuando el tráfico es loco, su servidor, Redis, Las respectivas capacidades de resistencia de MySQL no son las mismas Debes tener un problema para recibir todo el tráfico directamente.

¿Qué hacer entonces?

Simple, ponga la solicitud en la cola, y luego, en cuanto a cuántas solicitudes se consumen por segundo, depende de la capacidad de procesamiento de su servidor. Si puede manejar 5000QPS, puede consumir mucho. Puede ser un poco más lento de lo normal, pero no detendrá el servidor. Cuando baje el pico de tráfico, su servicio será menos estresante.

Mire el Double Eleven de Ali a las 12:00, tanto tráfico inundó instantáneamente. ¿A veces disminuye la velocidad, pero la gente no cuelga, o desciende para darle un recordatorio amistoso, y cuando el pico haya terminado, habrá otro? Buen chico.
Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"
Para aumentar el tráfico de un servicio para este gráfico

Te escuché decir que hay tantas comidas picantes, pero ¿cómo son buenas? Entonces te pregunto si hay algún problema con el uso de la cola de mensajes.

Oye, todos los que han leído los artículos que escribí antes saben que, ¡lo que digo a menudo es que la tecnología es un arma de doble filo!

Así es, el entrevistador, lo uso porque nos aporta muchos beneficios, pero después de usarlo, seguirán problemas.

El mismo hombre cálido, también presento sus principales defectos desde tres puntos:

Complejidad del sistema

Originalmente era un sistema bastante simple, puedo escribir el código de manera casual, pero ahora conectas un middleware de la nada, ¿debería considerar mantenerlo y debería considerar varios problemas durante el uso, como la duplicación de mensajes? Consumo, pérdida de mensajes, consumo secuencial de mensajes, etc., de todos modos, después de usarlos, será problemático.

Permítanme intervenir. ¿Pueden presentar los problemas anteriores (consumo repetitivo, pérdida de mensajes, consumo secuencial) por separado y cómo resolverlos?

¡No! Dije lo que Ao Bing escribió en el próximo capítulo.

De hecho, no quiero escribir aquí porque no soy un tipo cálido. Pensé en estas tres preguntas. Son todos los temas clave de MQ. Si eliminas una de ellas, será un artículo. La extensión es demasiado larga. Las presentaré una por una en el próximo capítulo. De nuevo.

Consistencia de los datos

Este es realmente un problema que existe en los servicios distribuidos en sí, no solo un problema de cola de mensajes, sino que se dice aquí porque el problema de usar una cola de mensajes será más serio.

Como dije al principio, el servicio que colocaste asegura que su lógica se procese con éxito y envíes un mensaje con éxito, pero con tantos sistemas como el sistema de cupones, el sistema de puntos, etc., ¿te importa si tienen éxito o fallan?

Dije que es bueno asegurarse de que los datos de su empresa sean correctos. De hecho, es bastante irresponsable. Esto es como una basura sin un patrón, por lo que su camino se volverá cada vez más estrecho.
Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"

Todos los servicios tienen éxito para ser considerados un éxito esta vez, ¿cómo podemos garantizar la coherencia de los datos?

Transacciones distribuidas: realizar pedidos, cupones y puntos. . . Todos se colocan en la misma transacción. Para tener éxito y fracasar juntos, deben fracasar juntos.
Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"

Sugerencia: Las transacciones distribuidas son muy comunes en las empresas de Internet y no las presentaré aquí en gran medida, sino que hablaré de ellas más adelante.

Disponibilidad

No hay nada de malo en el sistema en sí. De repente, inserta un middleware y lo deja allí. ¿Y si se cuelga? Hice un pedido de MQ y los cupones no se deducen y los puntos no se reducen. Esto no es algo que se pueda hacer matando a un programador. Se siente como una matanza.

En cuanto a cómo asegurar una alta disponibilidad, esa frase no se discutirá aquí, la escribiré más adelante, como Redis.

No te preocupes, Ao Bing, no soy un cabrón. Definitivamente seré responsable de ti. ¡me gusta!

No puedo decir, tienes algo, entonces déjame preguntarte, ¿cómo eliges la tecnología?

En la actualidad, el middleware de cola de mensajes principal en el mercado incluye principalmente Kafka, ActiveMQ, RabbitMQ, RocketMQ, etc.

Pero lo que quiero decir de Ao Bing es que tanto ActiveMQ como RabbitMQ han desaparecido básicamente en las principales empresas de Internet debido al rendimiento y la actividad de la comunidad de GitHub. Habrá empresas con volúmenes de negocio promedio. Sí, pero cada vez más empresas prefieren el middleware de mensajería como RocketMQ.

Kafka y RocketMQ siempre han brillado en sus respectivas áreas de especialización, pero cuando escribí este artículo, le pregunté a amigos de Ant Financial, Bytedance y Meituan. Parece que todos usan un poco diferente. Todos deberían estar en el medio el uno del otro. El software puede ser modificado o desarrollado por uno mismo, la mayoría de los cuales no son de código abierto.

Al igual que nuestra empresa es un middleware de cola de mensajes de desarrollo propio basado en las ventajas de Kafka y RocketMQ, el rendimiento, la fiabilidad y la puntualidad son impresionantes.

Volvamos al tema, aquí utilizo el cuadro comparativo que encontré en línea para que todos vean dónde está la brecha:
Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"

De hecho, puede ver la brecha de inmediato. En términos de rendimiento, ActiveMQ y RabbitMQ, que eran más activos en los primeros días, básicamente no son rivales de los dos últimos. En la era de big data como este, el rendimiento es realmente importante.

Por ejemplo, hay un estallido repentino de noticias súper calientes. Los usuarios registrados de su APP llegan a cientos de millones. Tiene que encontrar una manera de enviar todas las ráfagas a todos la primera vez. No tiene un middleware de cola de mensajes de gran rendimiento. ¿Empujar?

Además, estos usuarios inundaron para ver tus noticias y generaron una serie de tráfico incidental. ¿Cómo manejas estos datos? En muchos escenarios, salir de la cola de mensajes es básicamente insostenible.

En términos de métodos de implementación, los dos primeros tampoco son tan buenos como los dos últimos hermanos con arquitectura distribuida natural. Ambos son arquitecturas distribuidas de alta disponibilidad, y los datos de múltiples copias de datos también pueden lograr cero pérdidas.

Hablemos de RabbitMQ. El middleware está realmente bien, pero el lenguaje de desarrollo de esta cosa es en realidad erlang. Me atrevo a decir que la mayoría de los ingenieros definitivamente no aprenderán deliberadamente un lenguaje para un middleware. Los costos de desarrollo y mantenimiento están más allá de su imaginación. , Se necesita mucho tiempo para investigar un problema.

En cuanto a RocketMQ (de código abierto de Ali), la actividad de git no es mala. Básicamente, presionó su propio error y confirmó que hay un problema. El jefe de Ali intentará responder y solucionarlo con usted. Yo personalmente recomiendo esto. Su parte de diseño de arquitectura es verdadera con un marco RPC que también es de código abierto de Ali. Es muy parecido (Dubbo), quizás por la misma razón.

Consejo: Dubbo espera que escriba RPC, lo presentaré en detalle.

Kafka, lo pongo al final, también debes saber que este es un hermano mayor al final. El campo de big data, la recopilación de registros de la empresa, el cálculo en tiempo real y otros escenarios son inseparables de él. Básicamente se lo considera un nivel mundial. La cola de mensajes es el punto de referencia.

Las anteriores son solo algunas de mis opiniones personales. La selección real aún debe estudiarse en profundidad. De lo contrario, su empresa tendrá un UV 1000 por día. Dígame que va a usar Kafka. Solo puedo decir que puede obtener suficiente.

Recuerde, no existe la mejor tecnología, solo la tecnología más adecuada, no la use solo para su uso.

Fin de la entrevista

Bueno, el tipo no está mal, y el análisis está en su lugar ¿Recuerdas hablar de la alta disponibilidad de la cola de mensajes en el próximo número, consumo repetido, pérdida de mensajes, secuencia de mensajes, transacciones distribuidas, etc.?

Mmmm, buen entrevistador, pero no estoy seguro de poder terminarlo todo de una vez. Después de todo, Ao Bing aún no ha comenzado a escribir, y los lectores también pueden prostituirse por nada, por lo que la motivación puede no ser suficiente.

Mmm, esto es un problema, ¡pero la gente que está mirando definitivamente te dará Me gusta!

Creo que sí.

para resumir

Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"

Primero presentaré los conceptos básicos de las colas de mensajes. Las colas de mensajes son básicamente las mismas que las de Redis que escribí en la entrevista.

La idea de la entrevista sigue siendo la misma. Tienes que saber por qué y por qué necesitas saber por qué. Es saber por qué se usa, qué beneficios usa y qué trampas hay.

Al entrevistador no le gusta el que solo sabe usarlo ¿Qué pasa si hay un problema con la antena que solo usas? ¿Estás adorando a Buda a tu lado?
Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"

Más adelante, escribiré sobre muchas situaciones complicadas en el proceso de desarrollo real. En la entrevista, son básicamente preguntas de examen obligatorias. Espero que tome un libro pequeño y lo escriba. No lo memorice, pero entiéndalo. Tengo un buen trabajo en el grupo de intercambio de talentos. Pregúnteme, ¿cómo memoricé estos puntos de conocimiento?
Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"

¿Estás seguro de que no me tomaste el pelo? Están todos de regreso, pasaron la entrevista, ¿qué hacen cuando desarrollan y escriben código? ¿Todavía está memorizando el código? No te burles hermano, la comprensión es lo más importante.

Además, los entrevistadores que tienen experiencia real en desarrollo normalmente sabrán cuando preguntes. Si hay algún problema, él lo sabrá mejor que tú. Si lo hacen, no responderán honestamente.

Recuerda, hay poemas y libros en tu vientre, aprendemos juntos y progresamos juntos.

Gracias

El artículo anterior escribió que muchas personas me agregaron, y luego una persona dijo que fue recomendado por el líder de Ant Financial. De repente me di cuenta de que la audiencia de mi artículo parecía expandirse gradualmente. Después de eso, los puntos menos rigurosos deberían eliminarse.

Entonces, después, mis artículos serán revisados ​​a menudo por pequeños socios de grandes empresas, y espero ayudarme a supervisar mejor mis artículos.

Esta vez, Payne, una empresa de comercio electrónico con experiencia en Ali, me ayudó a revisar el artículo. ¡Gracias!
Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"

Alabanza diaria

Muy bien, todos, lo anterior es todo el contenido de este artículo. Las personas que pueden ver aquí son todos talentos.

Actualizaré varios artículos relacionados con la serie "Colgando del entrevistador" y las pilas de tecnología de Internet comunes cada semana. Estoy muy agradecido con los talentos por ver esto. Si este artículo está bien escrito, creo que tengo algo que ver con "Ao Bing" Si te gusta, dale me gusta, pide atención y pide compartir, ¡es realmente muy útil para mí! ! !

No es fácil de crear. Tu apoyo y reconocimiento es la mayor motivación para mi creación. ¡Nos vemos en el próximo artículo!

Ao Bing | Artículo [Original] [Por favor contácteme para reimpresión] Si hay algún error en este blog, por favor critique y asesore, ¡estoy muy agradecido!

La serie "Colgar al entrevistador" se actualiza continuamente cada semana. Puedes seguir mi cuenta oficial "JavaFamily" para leerla y actualizarla por primera vez (la cuenta oficial es una o dos anteriores al blog). Este artículo se ha incluido en GitHub y tiene una gran línea Mapa mental del sitio de entrevistas de la fábrica, bienvenido a Star y perfeccionelo, también está mi información de contacto personal, puede contactarme directamente si tiene alguna pregunta, también hay un grupo de intercambio de talentos, tenemos algo juntos.

Conceptos básicos de la cola de mensajes de la serie "Colgar al entrevistador"

Supongo que te gusta

Origin blog.51cto.com/14689292/2546058
Recomendado
Clasificación