Maison  >  Article  >  [Avancé] Quelles sont les différences et les similitudes entre Workman et Swoole ?

[Avancé] Quelles sont les différences et les similitudes entre Workman et Swoole ?

藏色散人
藏色散人avant
2019-03-14 14:24:286243parcourir

Workerman et Swoole sont très populaires à ce stade. Il faut apprendre à se connaître quand on a le temps, sinon on n'est pas dans le cercle PHP. Swoole est un framework de communication socket implémenté en langage C, tandis que Workerman est un framework de communication socket implémenté en PHP pur. Il existe également de nombreuses différences dans les modèles de processus entre les deux.

Parlons d'abord du modèle de processus de swoole. Jetez un œil au diagramme d'analyse suivant.

[Avancé] Quelles sont les différences et les similitudes entre Workman et Swoole ?

processus maître
Ce processus est plus complexe et est également le processus principal à mon avis. Il s'agit d'un processus qui contient plusieurs threads, respectivement un thread principal et n threads de réacteur (le nombre peut être configuré). Parmi eux, le thread principal est utilisé pour accepter de nouvelles connexions, puis évalue le nombre de connexions que chaque thread de réacteur est chargé de maintenir, puis les alloue au thread de réacteur avec le plus petit nombre pour garantir que la charge de chaque thread de réacteur est équilibré au maximum. Essentiellement, une fois qu'un socket est lisible ou inscriptible, il est envoyé par le thread du réacteur au processus de travail ou envoyé au client. De plus, le thread principal est également chargé de reprendre tous les signaux pour éviter toute interruption lorsque le thread du réacteur reçoit des signaux. Pour parler franchement, le processus maître est responsable de l'acceptation et de l'hébergement de la connexion, ainsi que de la lisibilité et de l'écriture du socket (l'envoi et la réception des données). En substance, le processus maître est responsable des E/S. A noter également que le thread réacteur est un mode de travail totalement asynchrone et non bloquant.

processus manager
Le processus manager est la mère du processus work et du processus taskworker. Pour le dire de manière plus arrogante, le processus manager bifurque le processus work et le processus taskworker. La gestion, par conséquent, le processus gestionnaire doit être responsable des obligations de maintenance du processus de travail et du processus de travail de tâche, y compris la surveillance de leur statut, le redémarrage d'un nouveau processus lorsqu'il raccroche de manière inattendue (en évitant les processus zombies) et le redémarrage en douceur (c'est la légende). ) recharger).

Processus de travail
Le processus de travail est dérivé du processus de gestion. Pour parler franchement, ce processus ne fait que déplacer des briques vers le travail (code d'entreprise mentionné à plusieurs reprises dans les documents officiels). . En fait, c’est le processus normal. Ces codes de logique métier, comprenez-vous ? Mais ce qui est plus intéressant à propos du processus de travail, c'est que ce processus peut fonctionner de manière asynchrone ou synchrone. Si vous ne comprenez pas ce que cela signifie, mémorisez-le d’abord et familiarisez-vous avec lui avant d’en parler.

processus de travail
le processus de travail (ci-après appelé processus de travail) est en fait essentiellement un processus de travail, mais un type particulier de processus de travail. S'il y a des opérations fastidieuses et exigeantes en main-d'œuvre dans votre processus de travail, vous pouvez d'abord les lancer dans le processus de travail et effectuer d'autres choses vous-même lorsque le processus de travail a terminé, le processus de travail les récupérera. Cependant, le processus tasker ne peut fonctionner qu'en mode synchrone et ne peut pas utiliser le mode asynchrone. C'est pourquoi le processus de travail ne peut pas utiliser de minuteurs, mais le processus de travail peut utiliser des minuteurs.

Un bref résumé de la façon dont ces processus fonctionnent ensemble. Pour faire simple, le processus maître est responsable de la prise en charge des tâches de vente, mais le travail spécifique est effectué par le processus de travail. Si le processus de travail estime que certains processus sont trop chargés et compliqués, il peut laisser le processus de tâche le faire. Le processus gestionnaire est le département de soutien aux ressources humaines du processus des travailleurs logistiques et du processus preneur, responsable de leur vie et de leur mort et de leur alimentation, de leur boisson et de leur sommeil.

Le modèle de processus de Workerman est relativement simple, tout d'abord, comparé à Swoole, Workerman n'a pas de thread de réacteur dans Swoole. Deuxièmement, Workerman n'a pas de processus de travail ni de processus de tâche pour la gestion. affaire ordinaire. Dans le cas de Workerman, le socket est géré par le processus de travail, tandis que dans Swoole, il est géré par le thread du réacteur dans le processus principal. Après avoir reçu les données, swoole peut traiter l'entreprise via son propre processus de travail (un peu similaire au processus fpm).

workerman est un framework de serveur socket PHP hautes performances. Workerman est basé sur une bibliothèque d'interrogation d'événements PHP multi-processus et libevent. Les développeurs PHP n'ont besoin que d'implémenter une ou deux interfaces pour développer leurs propres applications réseau, telles que. Services Rpc, serveurs de salon de discussion, serveurs de jeux mobiles, etc.

L'objectif de Workerman est de permettre aux développeurs PHP de développer plus facilement des services d'application basés sur des sockets hautes performances sans avoir à comprendre les détails des sockets PHP et des multi-processus PHP. Workerman lui-même est un framework de serveur multi-processus PHP, avec des modules de gestion de processus PHP et de communication de socket, il peut donc s'exécuter indépendamment sans dépendre de php-fpm, nginx ou apache et d'autres conteneurs

parmi lesquels

Workerman a deux modèles de processus

1. Modèle de travailleur principal de base

2. Modèle de travailleur principal de passerelle

Le flux de travail du modèle de travailleur principal et la relation inter-processus. sont les suivants :

[Avancé] Quelles sont les différences et les similitudes entre Workman et Swoole ?

Description du modèle de travailleur principal :

Le processus maître est le processus principal et la configuration de la configuration est lue pendant le processus de démarrage. la configuration de chaque application Créez un socket d'écoute avec IP et port, puis créez un nombre correspondant de processus enfants, c'est-à-dire des processus de travail, en fonction du nombre de processus dans la configuration. Le processus de travail héritera automatiquement du socket d'écoute créé. par le processus maître, afin que le processus de travail puisse accepter et traiter indépendamment les connexions client. Ensuite, le processus maître entre dans la logique de surveillance du signal et écoute le signal de sortie du processus de travail (une fois le processus de travail terminé, le système enverra automatiquement un signal SIGHCLD au processus maître, et le processus maître recréera le processus enfant et remplira dans les processus enfants manquants), maître Le processus écoutera également le signal d'arrêt (SIGINT) et le signal de service de redémarrage en douceur (SIGHUP) envoyés par le script Workermand

Le processus de travail est un processus enfant dérivé du maître et hérite automatiquement du socket d'écoute du processus maître. Chaque processus de travail accepte et gère les connexions client de manière indépendante.

Le modèle de travailleur principal de passerelle est plus adapté aux applications métier simples ou aux applications de connexion courte

Le flux de travail du modèle de travail de passerelle principale et les relations entre les processus sont les suivants :

[Avancé] Quelles sont les différences et les similitudes entre Workman et Swoole ?

Description du modèle de travailleur de passerelle principale :

Ce modèle comporte un groupe de processus de passerelle supplémentaire. Le flux de travail est fondamentalement le même que celui du modèle de travailleur principal. La différence est que le processus de travail ne traite pas directement avec le client, il existe un processus de passerelle supplémentaire entre le client et le processus de travail. La passerelle traite les E/S du réseau et maintient la longue connexion du client.

Le modèle de travailleur de passerelle principale est très approprié pour les applications de connexion à long terme

Lorsque notre code métier utilise swoole et travailleur de manière synchrone, swoole veut combiner nginx+fpm et travailleur n'est équivalent qu'à nginx

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer