Maison >développement back-end >tutoriel php >Scénarios d'utilisation courants des files d'attente de messages en PHP
La file d'attente des messages MQ est essentiellement une file d'attente. Son opération la plus simple est de rejoindre et de retirer la file d'attente. Elle détermine quand et quelles conditions rejoindre la file d'attente et quand et quelles conditions retirer selon le programme. En d'autres termes, si vous rencontrez un scénario dans lequel les exigences métier du système de mise en file d'attente et du système de retrait de la file d'attente sont incohérentes, vous pouvez envisager d'utiliser des files d'attente de messages pour l'implémenter. Il existe de nombreux scénarios applicables. Voici quelques scénarios et explications courants.
1 : Traitement asynchrone, découplage applicatif, distribué
Scénario : Les résultats du traitement de l'activité principale sur la sous-activité ne sont pas les mêmes quand vous vous en souciez.
Cas : La relation entre le système de commande, le système logistique, le système financier et le système d'enregistrement du journal des opérations dans le système de commerce électronique.
Explication populaire : Xiao Ming est vendeuse de pâtisserie. Après avoir préparé le gâteau, il le plaçait dans la vitrine, marquait « terminé » sur la commande correspondante, puis continuait à préparer le gâteau suivant. Il ne se souciait pas de savoir comment ou quand le gâteau serait vendu.
Mise en œuvre : utilisez un middleware de file d'attente ou un système intermédiaire pour stocker les parties communes de plusieurs systèmes d'entreprise et les traiter indépendamment. La progression du traitement de chaque système peut être enregistrée à l'aide de sa propre balise indépendante. Une fois que tous les systèmes ont terminé leurs opérations, effectuez des opérations de retrait de la file d'attente ou conservez le stockage des données.
Remarque : La tolérance aux catastrophes des données intermédiaires doit être prise en compte pour garantir que le processus métier peut être restauré en cas de panne et est récupéré. Assurez-vous que chaque élément de données peut être traité correctement.
2 : Traitement des pointes
Scénario : Le trafic est déséquilibré à différents moments
Cas : flash vente, Rush pour acheter
Explication : Xiao Ming met beaucoup de temps à faire des gâteaux Une fois la commande arrivée, il l'enregistre d'abord dans une liste, puis la prépare un par un dans l'ordre. est trop grand, un panneau « épuisé » s'affichera temporairement.
Mise en œuvre : utilisez des outils monothread pour mettre en file d'attente les exigences métier. Lorsque la demande commerciale atteint le seuil, une invite conviviale est émise et la demande de l'utilisateur est rejetée.
Remarque : En cas de demande de pointe, vous pouvez publier des invites telles que « Temporairement indisponible à l'achat, veuillez patienter » pendant les périodes de pointe afin d'éviter que le trafic n'ait un impact sur les activités ultérieures. Pour des besoins tels que les ventes flash qui s'arrêtent dès qu'elles sont disponibles, le problème de surémission doit être pris en compte. Vous pouvez ajouter un compteur de quota ou émettre une marque d'achèvement de vente flash lorsque le quota de vente flash est plein. le programme de traitement ultérieur détecte la marque d'achèvement, le traitement ultérieur sera effectué.
3 : Garantie de livraison
Scénario : Le contenu doit être strictement exécuté un par un et l'exécution est garantie de réussir Quand. l'exécution échoue ou est interrompue, vous pouvez Récupération
Cas : Systèmes bancaires et financiers, systèmes qui doivent améliorer les capacités de reprise après sinistre
Explication : Le gâteau fabriqué par Xiao Ming doit être inspecté et signé par le client avant qu'il puisse continuer à réaliser le prochain gâteau.
Mise en œuvre : une fois que le système de file d'attente a écrit les exigences commerciales dans la file d'attente des messages, il passera au traitement commercial suivant. Le programme de traitement ultérieur traite le contenu de la file d'attente un par un et délivre un « permis complet » une fois le traitement terminé. Le contenu de la file d'attente des messages ne peut être supprimé de la file d'attente des messages qu'après avoir obtenu l'« Autorisation complète ».
Remarque : Concentrez-vous sur les problèmes liés à la reprise après sinistre, tels que les problèmes de reprise d'activité et les problèmes de traitement répétés.
Quatre : Garantie de tri
Scénario : Le contenu de la file d'attente des messages a un ordre strict.
Cas : Système de file d'attente et d'attente
Explication : Xiao Ming doit suivre strictement l'ordre de préparation des gâteaux.
Mise en œuvre : le système de file d'attente écrit le contenu dans la file d'attente des messages un par un, les organise sur une seule ligne et extrait les données dans l'ordre premier entré, premier sorti pour un traitement ultérieur.
Remarque : vous devez utiliser un seul thread pour garantir qu'il n'y a qu'une seule ligne de production.
Cinq : Évolutivité
Scénario : Ajouter de nouveaux abonnés lors de l'utilisation du mode publication-abonnement
Cas : Après avoir enregistré un utilisateur, dans le modèle d'envoi de messages texte réussi, ajoutez une fonction d'envoi d'e-mail
à mettre en œuvre : plusieurs consommateurs s'abonnent à la couche intermédiaire d'un message, puis l'éditeur publie les informations sur la couche intermédiaire. Les consommateurs qui s'abonnent à cette couche intermédiaire peuvent recevoir ce message et effectuer un traitement ultérieur. dans cette structure. Si vous souhaitez ajouter un composant de traitement ultérieur des messages, il vous suffit d'abonner ce composant à la couche intermédiaire
Remarque : assurez-vous qu'il n'y a pas de couplage profond entre les entreprises pour éviter les interférences lors de l'expansion.
Ci-dessus sont plusieurs scénarios couramment utilisés pour les files d'attente de messages. Les files d'attente de messages peuvent atténuer les différences entre les systèmes et améliorer la stabilité du système.
Lors de la sélection du support de file d'attente de messages, il est recommandé aux étudiants de ne pas avoir à maximiser les conditions et les objectifs au début. Quelles conditions doivent être utilisées pour résoudre parfaitement le problème ? Le programme nécessite encore une maintenance à long terme. et processus d'optimisation.
Bien que la dégradation des performances de Redis soit encore très grave lorsque le trafic est élevé et qu'une grande quantité de données persistantes est requise, il est toujours recommandé d'apprendre les files d'attente de Redis. Dans le cours, vous ne comprenez que le. application des files d'attente en changeant le processus. Scénarios et idées, tout projet en ligne est constamment optimisé et amélioré si vous souhaitez résoudre parfaitement tous les problèmes grâce à un ensemble de vidéos, je suis désolé de ne pas pouvoir le faire. les scénarios d'application de chaque travail sont différents, il existe donc différents. Ils seront améliorés en fonction des besoins spécifiques en cas de besoin.
Lorsque vous évaluez la demande de file d'attente, vous devez ajouter un champ de compteur lorsque vous jugez l'application des conditions de file d'attente. Jugez la longueur de la file d'attente actuelle à chaque fois qu'elle est poussée dans la file d'attente si le nombre dépasse la vente flash limitée. numéro, il n’entrera pas dans le programme de file d’attente.
En utilisation réelle, il n'est pas nécessaire de rechercher délibérément où les files d'attente de messages doivent être ajoutées. Au lieu de cela, il devrait être raisonnablement choisi et utilisé en fonction de la situation réelle lors de la séparation et du découplage des entreprises, ainsi que de certaines exigences particulières.
Recommandations associées :
Explication détaillée de la file d'attente de messages PHP
Implémentation et application de la file d'attente de messages en PHP
Partage d'exemples de classes de file d'attente de messages PHP
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!