Maison  >  Article  >  développement back-end  >  File d'attente de messages PHP

File d'attente de messages PHP

零到壹度
零到壹度original
2018-03-28 17:56:345063parcourir

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 des applications, distribution

Scénario : Lorsque l'activité principale ne se soucie pas des résultats de traitement du sous- entreprise.

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 était 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.

File dattente de messages PHP

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 commerciales. 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é.
File dattente de messages PHP

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 en double.
File dattente de messages PHP

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.
File dattente de messages PHP

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, ajouter 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.
File dattente de messages PHP


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.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Débuter avec la session PHPArticle suivant:Débuter avec la session PHP