Maison >développement back-end >tutoriel php >Traitement de la file d'attente PHP : principe de mise en œuvre de la file d'attente de messages PHP (image et texte)

Traitement de la file d'attente PHP : principe de mise en œuvre de la file d'attente de messages PHP (image et texte)

php是最好的语言
php是最好的语言original
2018-07-23 10:03:258567parcourir

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

3

est traité dans l'ordre par les abonnés /consommateurs

File d'attente. principe :

Traitement de la file dattente PHP : principe de mise en œuvre de la file dattente de messages PHP (image et texte)

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'attente

Si 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 que

Maintenant, 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 suivante

Cas : 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 commandes

3. 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 :

Pourquoi découplage : Si l'architecture est ensemble. Le système de commande est soumis à une forte pression et les informations logistiques n'ont pas besoin d'être renvoyées immédiatement. Lorsque les commandes s'effondrent, la logistique s'effondre également, nous devons donc découpler la conception de la table :

Le système de commande écrit le code dans la file d'attente : Traitement de la file dattente PHP : principe de mise en œuvre de la file dattente de messages PHP (image et texte)

Traitement de la file dattente PHP : principe de mise en œuvre de la file dattente de messages PHP (image et texte)

Le système de distribution lit le code de file d'attente :

Traitement de la file dattente PHP : principe de mise en œuvre de la file dattente de messages PHP (image et texte)

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é )


Utilisation de Redis pour un cas de réduction du trafic



Idée :

1. Le programme de vente flash demande d'écrire sur redis

2. Vérifiez la longueur des données stockées dans redis. jetez-le directement (retour à la fin de la vente flash)

3. Traitement en boucle infinie des dépôts Données Redis fusionnées dans la base de données

conception de la table :


Code vente flash :


Code entrant :


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!

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