Que signifie la file d'attente php ? Comment y parvient-on ? Quels sont les scénarios d’application ? Ce qui suit explique en détail le principe de mise en œuvre de la file d'attente de messages PHP grâce à l'utilisation de MySQL pour réaliser le découplage et à l'utilisation de Redis pour réduire le trafic.
Le concept de file d'attente :
1. C'est le middleware de la structure de file d'attente
2. 🎜>n'a pas besoin d'être traité immédiatement
3est traité dans l'ordre par les abonnés /consommateurs
File d'attente. principe :
c'est aussi le principe du découplage : le système métier et le système de traitement des files d'attente n'ont rien à voir On écrit (système métier) et on lit (système de gestion de files d'attente).
Écrivez simplement dans la file d'attente et écrivez , ne vous inquiétez de rien d'autre, peu importe que vous puissiez finir de lire ou non
Même chose,il suffit de lire hors de la file d'attente , de faire le travail quand vous venez, de vous reposer quand il n'y a pas de travail
Scénarios d'application :Redondance :
Stockage persistant dans la file d'attente, qui est ensuite obtenu par le programme de traitement des commandes. Une fois le traitement terminé, l'enregistrement est suppriméDécouplage : Oui Ces deux-là.
les systèmes (traitement des affaires et des files d'attente) sont ce que nous faisons habituellement. Il n'y a pas de relation directe entre les systèmes d'entrée et de sortie de la file d'attenteSi un système tombe en panne, l'autre système ne sera pas affecté car il y a une file d'attente au milieu Le trafic est réduit en Edge : ventes flash et ventes rush. Le trafic a considérablement augmenté,
utilisez la file d'attente des messages en conjonction avec le cache(c'est-à-dire que sous la limite, si seulement 10 sont autorisés, une fois que 10 sont stockés dans la file d'attente, ils ne seront plus stockés, et vous serez informé que la vente flash est terminée) Communication asynchrone :
Parce que le message lui-même peut provoquer le retour direct du système en file d'attente, on dit que le fonctionnement asynchrone du programme est réalisé
Évolutivité du scénario : tel queMaintenant, il n'y a que le système de commande et le système financier. Je souhaite ajouter un système de distribution à l'avenir Laissez simplement la distribution. système abonnez-vous directement à cette file d'attente.
Garantie de tri : quelques scénarios Par exemple,L'ordre de traitement des données bancaires est très important , parce que la file d'attente elle-même peut être transformée en un système à thread unique, à entrée unique et à sortie unique
Support de mise en œuvre :1. Utilisation de MySQL : haute fiabilité, facile à mettre en œuvre, vitesse lente
2. Utilisation de Redis : paquet de messages rapide et unique Faible efficacité
3. Utiliser des bibliothèques tierces plus professionnelles : hautement professionnelles, coût d'apprentissage fiable et élevé.
Mécanisme de déclenchement du traitement des messages :1. Lecture en boucle sans fin : facile à mettre en œuvre, incapable de répondre à temps en cas de panne (
convient pour de courtes périodes telles que les ventes flash) 2. Tâches planifiées : la pression est uniformément répartie et a une limite supérieure de traitement (peu importe à quel point la valeur de pointe du système devant votre file d'attente est instable,
le système derrière la file d'attente sera toujours exécuté régulièrement)
Remarque : le temps de synchronisation est la clé : ne terminez pas la tâche planifiée précédente avant le début de la tâche planifiée suivanteCas : Système de commande, passer une commande Après avoir écrit les informations de commande dans la file d'attente, il indique immédiatement que la commande a été passée avec succès. Le système de distribution lit la file d'attente régulièrement toutes les quelques minutes
et résume les commandes3. Processus démon : similaire à php-fpm et cgi, nécessite les bases du shell (utilisez ce processus pour vérifier s'il y a du contenu dans la file d'attente. S'il y a du contenu, démarrez le système de retrait de la file d'attente pour le traitement)
Utilisez MySQL pour implémenter le cas de découplage :
Le système de commande écrit le code dans la file d'attente :
Le système de distribution lit le code de file d'attente :Exécuter les tâches planifiéesCrontab -e
Remarque : ce fichier journal doit être créé par vous-même
1. le navigateur Visitez order.phpAjouter une commande
2 Allez dans la base de données pour voir les résultats et regardez dans le journal shell Résultat ( n'a pas été exécuté avec succès. Il se peut que le fichier sh doive être placé dans un certain répertoire et sera exécuté une fois l'examen terminé )
Le navigateur accède directement à user.php
en cours d'utilisation php -f savetodb.php dans shell
Accédez à la base de données pour afficher Recommandations associées :Service 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!