1. Intergiciel de messages
La technologie de file d'attente de messages est une technologie d'échange d'informations entre des applications distribuées. Les files d'attente de messages peuvent résider en mémoire ou sur disque, et la file d'attente stocke les messages jusqu'à ce qu'ils soient lus par l'application. Avec les files d'attente de messages, les applications peuvent s'exécuter indépendamment : elles n'ont pas besoin de connaître l'emplacement de chacune ou d'attendre que le programme récepteur reçoive le message avant de poursuivre l'exécution.
En général, le middleware de messages a les fonctions suivantes : réduction du couplage, réduction des pics de trafic, communication asynchrone et transmission fiable
1 Réduire le couplage : couplage lâche via la publication et l'abonnement
<.>Nous prenons l'exemple de l'inscription. Si l'inscription réussit, des SMS et des e-mails seront envoyés à l'utilisateur pour confirmation. Le modèle d'architecture traditionnel est le suivant :<.>Email Business et SMS Business Le code est écrit dans le processus d'enregistrement de l'utilisateur. Qu'il soit mis en œuvre via une interface ou un appel à distance, le degré de couplage est désormais très élevé. Une nouvelle exigence est ajoutée une fois l'enregistrement de l'utilisateur terminé. , les e-mails ne seront pas envoyés. Il s'agit d'"augmenter les points" pour les utilisateurs. Analysons ces situations :
Tout d'abord, le traitement commercial après une inscription réussie est implémenté dans un système commercial via l'accumulation de code et l'appel d'interface. besoin Pour changer le code d'enregistrement, vous devez démarrer et arrêter l'application lors de la connexion. Cette méthode a le plus haut degré de couplage.
Deuxièmement, grâce aux appels à distance, lorsque nous voulons ajouter un nouveau traitement métier, nous devons toujours modifier le code du processus principal, ce qui provoque inévitablement le démarrage et l'arrêt de l'application.
Si nous introduisons un middleware de messages, comme suit :
En publiant et en vous abonnant, une fois l'utilisateur inscrit avec succès, envoyez un message au middleware de messages, chacun Le côté commercial s'abonne aux messages du même canal et exécute l'activité correspondante après avoir reçu le message d'enregistrement réussi. Avec l'ajout de "Ajouter des points", il suffit au système de points de gérer le traitement correspondant et de s'abonner à ce message. Il n'est pas nécessaire de modifier le code professionnel de l'utilisateur ni de démarrer ou d'arrêter l'application, et l'expansion en douceur de l'application est assurée. les affaires peuvent être réalisées.
2. Communication asynchrone
En reprenant l'exemple ci-dessus, dans l'architecture traditionnelle, lorsque l'enregistrement de l'utilisateur est terminé et que l'e-mail SMS est envoyé, le client est renvoyé pour informer l'utilisateur que l'enregistrement est réussi. Après avoir utilisé le middleware de message, une fois que l'utilisateur a soumis les informations d'enregistrement et que le traitement est terminé, l'utilisateur peut être invité à s'inscrire avec succès. Les services SMS et les services de messagerie suivants recevront le message de réussite de l'enregistrement de l'utilisateur du canal abonné avant d'envoyer des messages SMS et. les emails. Il n’y a plus besoin de contraintes mutuelles entre entreprises.
3. Réduction des pics de trafic et prévention des surtensions
Le middleware de messages peut accumuler des messages pendant les heures de pointe, et une fois le pic passé, le système en aval consomme lentement les messages pour résoudre le problème des pics de trafic.
Lorsque la concurrence atteint son apogée, la pression sur le système back-end est généralement très élevée. Qu'il s'agisse d'un serveur d'applications ou d'un serveur de base de données, à ce moment, des requêtes similaires peuvent être placées dans la file d'attente des messages. du middleware des messages et accumulés lentement pour le traitement. Vous pouvez également définir la taille de la file d'attente des messages pour contrôler le degré de concurrence. Le scénario commercial des ventes flash de produits est relativement typique.
4. Transmission fiable
La communication basée sur les messages est fiable et les messages ne seront pas perdus. La plupart des middlewares de messagerie offrent la fonctionnalité permettant de conserver les messages sur le disque. Dans le premier scénario, au début, le middleware de messages peut conserver les messages produits par le producteur sur le disque. L'application back-end tombe en panne, mais les messages ne sont pas perdus et l'application est redémarrée pour poursuivre le traitement.
Vous vous posez peut-être cette question : si le middleware des messages est en panne, comment peut-il être conservé si le message ne peut pas être reçu ? Peu importe, le middleware de messages fournit une variété de stratégies de réplication de messages, de stratégies de persistance, de stratégies de déploiement de cluster, etc., qui peuvent garantir une transmission fiable des messages.
2. Mode middleware de messages
3. Middleware de messages couramment utilisé
RabbitMQ1. Fonctionnalités de RabbitMQ :
RabbitMQ est un open source. implémentation des sources basée sur le standard AMQP développé en langage Erlang. RabbitMQ est originaire des systèmes financiers et est utilisé pour stocker et transférer des messages dans des systèmes distribués. Il fonctionne bien en termes de facilité d'utilisation, d'évolutivité et de haute disponibilité. Ses caractéristiques spécifiques incluent :
Fiabilité
Routage flexible
Prend en charge le cluster de messages
Haute disponibilité
Prend en charge plusieurs protocoles (en plus de prendre en charge le protocole AMQP, il prend également en charge d'autres protocoles de file d'attente de messages via des plug-ins, tels que STOMP et MQTT)
Prise en charge des clients multilingues
Fournir une interface de gestion
Fournir un mécanisme de suivi
Fournir un mécanisme de plug-in (RabbitMQ fournit de nombreux plug-ins et vous pouvez écrivez également vos propres plug-ins)
Résumé :
Le plus grand avantage de RabbitMQ est qu'il fournit une stratégie de routage des messages relativement flexible, une haute disponibilité, une fiabilité, des plug-ins riches, des plates-formes multiples support et documentation complète. Cependant, en raison du protocole AMQP lui-même, sa mise en œuvre est relativement lourde, ce qui désavantage son débit par rapport à d'autres MQ (tels que Kafka).
ActiveMQ
1. Fonctionnalités d'ActiveMQ :
ActiveMQ est un middleware de messagerie open source produit par Apache, conçu pour fournir des applications efficaces, évolutives, stables. et sécuriser les communications de messagerie au niveau de l'entreprise. ActiveMQ implémente JMS 1.1 et fournit de nombreuses fonctionnalités supplémentaires, telles que la gestion JMX, la gestion maître-esclave, la communication de groupe de messages, la priorité des messages, la réception retardée des messages, les récepteurs virtuels, la persistance des messages, la surveillance de la file d'attente des messages, etc. Les principales fonctionnalités sont les suivantes :
Prend en charge les clients et les protocoles dans plusieurs langages tels que Java, C, C++, C#, Ruby, Perl, Python, PHP, etc., tels que OpenWire, STOMP, AMQP. et les protocoles MQTT.
Fournit des fonctionnalités avancées telles que la communication de groupe de messages, la priorité des messages, la réception retardée des messages, les récepteurs virtuels et la persistance des messages.
Prend entièrement en charge les spécifications JMS 1.1 et J2EE 1.4 (y compris la persistance, les messages de transaction distribués, les transactions)
Prend en charge le framework Spring, ActiveMQ peut être facilement intégré dans les applications Spring via les fichiers de configuration Spring.
Réussite des tests de serveur J2EE courants, tels que TomEE, Geronimo, JBoss, GlassFish et WebLogic.
Méthodes de connexion diversifiées, ActiveMQ fournit une variété de méthodes de connexion, telles que in-VM, TCP, SSL, NIO, UDP, multicast, JGroups, JXTA.
Prend en charge la persistance rapide des messages grâce à l'utilisation de JDBC et du Journal.
Conçu pour les clusters hautes performances, les communications client-serveur, point à point et d'autres scénarios.
Fournit une interface API REST neutre en termes de technologie et de langage.
Prend en charge l'appel d'ActiveMQ via AJAX.
ActiveMQ peut être facilement intégré aux technologies WebService telles que CXF et Axis pour fournir une messagerie fiable.
peut être utilisé comme fournisseur JMS en mémoire, idéal pour les tests unitaires JMS.
Kafka
1.Caractéristiques de Kafka :
Kafka est un système de messagerie de publication/abonnement distribué d'abord développé par LinkedIn, qui est ensuite devenu le meilleur d'Apache. projet de niveau supérieur. Ses principales fonctionnalités sont les suivantes :
Fournit un haut débit tant pour la publication que pour l'abonnement. (L'objectif de conception de Kafka est de fournir une persistance des messages avec une complexité temporelle de O(1). Il peut garantir des performances d'accès en temps constant, même pour les données supérieures au niveau de la To, et peut le faire même sur des machines commerciales très bon marché. Prend en charge la transmission de 100 000 messages par seconde sur une seule machine)
Persistance des messages. (Conserver les messages sur le disque, ils peuvent donc être utilisés pour la consommation par lots, comme ETL ainsi que pour les applications en temps réel. La perte de données peut être évitée en conservant les données sur le disque dur et en les répliquant.)
Distribué. (Prend en charge le partitionnement des messages et la consommation distribuée entre les serveurs, tout en assurant la transmission séquentielle des messages au sein de chaque partition. Ses producteurs, courtiers et consommateurs internes sont tous des architectures distribuées, ce qui facilite l'expansion vers l'extérieur.)
Consommation de messages adopte le mode Pull. (Le statut du message en cours de traitement est conservé du côté du consommateur, et non du côté du serveur. Le courtier est sans état et le consommateur enregistre lui-même la compensation.)
Prend en charge les scénarios en ligne et hors ligne, ainsi que les deux hors ligne. traitement des données et traitement des données en temps réel.
RocketMQ
1. Caractéristiques de RocketMQ :
RocketMQ est un middleware de messagerie distribué open source par Alibaba en 2012 et ensuite donné à Apache Software Foundation, et est devenu un projet Apache de premier niveau le 25 septembre 2017. En tant que middleware domestique qui a connu de nombreux « super projets » tels que le « Double 11 » d'Alibaba et qui présente des performances stables et exceptionnelles, il a été utilisé par de plus en plus d'utilisateurs nationaux ces dernières années pour ses hautes performances, sa faible latence et sa haute fiabilité. Utilisé par les entreprises. Ses principales caractéristiques sont les suivantes :
Une évolutivité flexible. (RocketMQ prend naturellement en charge les clusters, et chacun de ses quatre composants principaux (NameServer, Broker, Producer et Consumer) peut être mis à l'échelle horizontalement sans un seul point de défaillance.)
A la capacité d'accumuler des messages massifs. (RocketMQ utilise le principe de zéro copie pour obtenir la possibilité d'accumuler des quantités extrêmement importantes de messages. On dit qu'une seule machine peut prendre en charge l'accumulation de centaines de millions de messages, tout en conservant une faible latence d'écriture après avoir accumulé autant de messages. )
Prend en charge les messages séquentiels. (RocketMQ peut garantir que les consommateurs de messages consomment les messages dans l'ordre dans lequel ils sont envoyés. Les messages séquentiels sont divisés en messages ordonnés globalement et en messages ordonnés localement. Il est généralement recommandé d'utiliser des messages ordonnés localement, c'est-à-dire que le producteur envoie un certain type de message afin d'envoyer dans la même file d'attente pour réaliser )
.Prend en charge plusieurs méthodes de filtrage des messages. (Le filtrage des messages est divisé en filtrage côté serveur et filtrage côté consommateur. Lors du filtrage côté serveur, le filtrage peut être effectué en fonction des exigences des consommateurs de messages. L'avantage est que la transmission de messages inutiles est réduite, et l'inconvénient est que cela augmente la charge sur le serveur de messages. Implémentation Relativement complexe. Le filtrage côté consommateur est entièrement personnalisé par l'application spécifique. L'inconvénient est que de nombreux messages inutiles seront transmis aux consommateurs de messages. > Prise en charge des messages de transaction. (En plus de prendre en charge les messages ordinaires et les messages séquentiels, RocketMQ prend également en charge les messages de transaction. Cette fonctionnalité fournit une autre solution pour les transactions distribuées.)
Prend en charge la consommation rétroactive. (La consommation rétroactive signifie que les messages qui ont été consommés avec succès par les consommateurs doivent être consommés à nouveau en raison des besoins de l'entreprise. RocketMQ prend en charge la consommation rétroactive en fonction du temps. La dimension temporelle est précise à la milliseconde près et peut être retracée en avant ou en arrière.)
Pour plus de
FAQ, veuillez visiter le site Web PHP chinois.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!