Tout d'abord, quelle est la file d'attente de messages
Message Queue (Message Queue, dénommé MQ), un moyen de conteneur pour des messages de maintien, essentiellement une file d'attente.
Message (message) fait référence au transfert de données entre les applications, un message peut être très simple, par exemple, ne contient que la chaîne de texte, peut être plus complexe, et peut contenir des objets incorporés.
Message Queue (Message Queue) est une communication entre une application, la transmission de message peut revenir immédiatement, avec un système pour assurer que les informations de message fiable, le message que les éditeurs publient des messages à la MQ quel que soit qui prennent, en utilisant le message qui prennent simplement des messages de la MQ celui qui a affiché, donc les éditeurs et les utilisateurs ne connaissent pas les uns les autres.
- Producteur: producteur de message, responsable de la production et l'envoi d'un message au courtier;
- Courtier: Centre de traitement du message. Responsable pour le stockage des messages, accusé de réception, relances, etc., qui comprennent généralement plusieurs files d'attente;
- Consommateurs: les consommateurs de nouvelles, est responsable de la récupération des messages du courtier, et traité en conséquence;
composants MQ sont maintenant couramment utilisés ActiveMQ, RabbitMQ, RocketMQ, ZeroMQ, bien sûr, au cours des dernières années, Kafka chaud, dans certains scénarios, le MQ est, bien sûr, kafka plus puissant.
Bien que différents MQ a ses propres caractéristiques et avantages, mais, peu importe quel genre de MQ, MQ a quelques-uns lui-même dispose vient, ici, nous allons parler des caractéristiques de file d'attente de messages, les avantages, la sélection et les scénarios d'application.
En second lieu, pourquoi besoin de la file d'attente de messages
Dans un environnement réparti hautement concurrent, étant donné qu'aucun processus de synchronisation d'horloge en utilisant une file d'attente de messages, le traitement asynchrone des demandes, pour relâcher la pression du système.
Par exemple, un système de commande: un utilisateur clique sur une commande déclenche les processus suivants de logique métier:
- déductions stock
- Générer l'ordre approprié
- Envoyer une notification par SMS, etc.
Au début du développement de ces logique métier peut être mis en place pour effectuer la synchronisation, que les ordres d'affaires ont augmenté, la nécessité d'améliorer la performance des services du système, ce temps peut être divisé en effet certaines opérations ne nécessitent pas la mise en uvre immédiate de manière asynchrone, telles que la notification de la messagerie texte, ce scénario peut utiliser un message file d'attente MQ.
En substance, est résolu par la pression synchrone système asynchrone, nous faisons la conception de l'architecture quand il y a un principe: essayez de ne pas être en mesure de synchroniser asynchrone.
Troisièmement, l'avantage d'une file d'attente de messages
1, blindage détails hétérogènes plate-forme: l'expéditeur, le système de réception entre les deux parties ont besoin de savoir, sachez simplement le message.
2, Asynchronous: message de capacité d'empilage; récepteur émetteur sans transmission simultanée, simultanée sans expansion de la partie destinataire (clipping).
3. Découplage: Prévenir l'introduction de l'API pose trop de risque pour la stabilité du système, appelant une mauvaise utilisation du système exercera une pression sur le callee, le traitement inadéquat callee réduira la capacité de répondre au système de l'appelant.
4, la réutilisation: une fois envoyé plusieurs fois la consommation.
5, fiable: une garantie de livraison des messages. Si le destinataire est disponible pour envoyer un message, le message de file d'attente de message restera jusqu'à ce qu'il soit transmis avec succès.
6, assure le routage: la nécessité de l'expéditeur d'établir une connexion avec le destinataire, à la fois par la file d'attente de messages pour vous assurer que les messages peuvent être acheminés de l'expéditeur au destinataire, même pour les deux réseaux aurait été difficile au service interfonctionnement, les informations de routage peut également être fournie.
Quatrièmement, les caractéristiques de la file d'attente de messages
1. asynchronisme
La synchronisation de temps, par l'envoi d'un message d'une manière, effectué le traitement asynchrone. La réduction de la synchronisation du temps d'attente.
2. Couplé Librement
file d'attente de messages réduit couplage entre les services, les différents services peut communiquer par la file d'attente de messages, sans se soucier des autres détails de mise en uvre, tant que la ligne de bonne définition de format de nouvelles.
3. Distribué
Via la consommation à grande échelle, réduit le risque de blocage file d'attente de messages, et la possibilité de point de défaillance unique (file d'attente un message lui-même peut de groupe distribué bien entendu être fait aussi) des consommateurs individuels.
4. Fiabilité
Message Queuing reçu un message sera généralement stocké sur un disque dur local (lorsque le message a été traité, les informations stockées pour atteindre en fonction de la file d'attente de messages, il est possible de le supprimer), de sorte que même si la file d'attente de messages d'application ou blocage blocage lui-même, les messages peuvent également être rechargés.
V. La sélection de file d'attente de messages
1.ActiveMQ
Apache produit, la première utilisation de produits de mise en attente de messages, de temps, et la version récemment mise à jour lente.
2.RabbitMQ
RabbitMQ est le développement du langage Erlang, combiné avec les avantages du langage concurrency Erlang lui-même, il supporte de nombreux protocoles: AMQP, XMPP, SMTP, STOMP, il est vrai aussi, il devient très lourd, est plus approprié pour le développement des entreprises de classe. Une meilleure performance, mais pas propice à faire du développement secondaire et l'entretien.
3.RocketMQ
Ali middleware de messagerie open source, le développement Java pur, avec un débit élevé, une haute disponibilité, adapté pour les systèmes distribués à grande échelle caractéristiques d'application.
4.ZeroMQ
Connu comme le plus rapide des systèmes de mise en attente de messages, en particulier la demande de scénarios à haut débit.
développement évolutif, flexible en utilisant le langage C, est vraiment juste reconditionné une bibliothèque de prise, si elle est utilisée comme une file d'attente de messages, la nécessité de développer beaucoup de code.
5.Kafka
Kafka est un sous-projet de l'Apache, est une interlangage haute performance distribuée publication / abonnement des systèmes de mise en attente de messages et Jafka est éclosent Kafka vient, qui est une version améliorée de Kafka.
6. Une comparaison détaillée de la file d'attente de messages
7. Le résumé de la file d'attente de messages
besoins de la file d'attente des messages de sélection soient basés sur les besoins spécifiques de l'application, ZeroMQ petite mais belle, RabbitMQ grande et stable, et Kakfa RocketMQ rapide et forte.
En quatrième lieu, le scénario d'application de la file d'attente de messages
1. traitement asynchrone
Les principales caractéristiques de la file d'attente de messages est un processus asynchrone, le but principal est de réduire le temps de réponse de la requête, les processus asynchrones pour réaliser la non-noyau, et d'améliorer les performances du système en réponse.
Par conséquent, le scénario d'utilisation typique est de temps et ne nécessite pas le temps réel (synchrone) renvoie le résultat de l'opération, comme un message dans la file d'attente de messages.
2. Application de Découplage
Après avoir utilisé la file d'attente de messages, tant que le même format de message, l'expéditeur et le destinataire du message n'a pas besoin de communiquer entre eux, pas besoin de l'autre influence, à savoir le découplage.
Chaque membre des autres membres n'ont pas à subir l'impact peut être plus indépendant et le contact que par le message file d'attente MQ.
A titre d'exemple: le processus de commande de l'utilisateur, les commandes se produiront boucle Stock Cette opération, l'ordre du système en amont et des systèmes en aval boucle stock, peuvent être contactés par la file d'attente de message figure MQ, l'inventaire boucle de manière asynchrone, de manière à atteindre le système de commande avec application du système d'inventaire de découplage.
3. flux avant de coupe
Le front d'écoulement est coupé dans la file d'attente de messages scénarios communs, des groupes généralement utilisés dans une activité de pointe ou pic largement.
Scénario: activité pic, le plus souvent à cause du trafic trop, ce qui conduit à une onde de trafic, blocage de l'application. Pour résoudre ce problème, le besoin général d'ajouter la file d'attente de messages dans les applications frontaux.
4. Traitement du journal
Connectez-vous des moyens de traitement dans la file d'attente de messages avec le traitement du journal, telles que les applications Kafka, un certain nombre de problèmes pour résoudre le transfert de journal.
5. Nouvelles Communication
Les files de messages sont généralement construits mécanisme de communication efficace, et peuvent donc être utilisés pour la communication simple message, comme un point à la file d'attente de messages dans le chat, ou similaire.
Au-dessus, la file d'attente de message est une DISTRIBUÉ détaillée.