Laravel Horizon and the default queue worker in Laravel fundamentally serve the same purpose: managing and processing queued jobs. Cependant, ils diffèrent considérablement par les caractéristiques, la convivialité, la surveillance et l'évolutivité. Vous trouverez ci-dessous une comparaison détaillée pour expliquer ces différences de manière approfondie.
Objectif et intégration de base
Le travailleur de la file d'attente Laravel par défaut exécute des travaux en file d'attente à l'aide de la commande `PHP Artisan Queue: Work`. Il s'agit d'une caractéristique centrale du système de file d'attente de Laravel, qui prend en charge divers backends de file d'attente tels que Redis, la base de données, Amazon SQS, Beanstalkd, etc. Ce travailleur gère l'exécution des travaux poussés dans la file d'attente et peut être configuré à l'aide d'options pour les tentatives de réessayer, le délai d'expiration, la consommation de mémoire, etc.
** Laravel Horizon est un package spécialement conçu pour améliorer la gestion des files d'attente lors de l'utilisation de Redis comme backend. Il ne remplace pas le système de file d'attente sous-jacent mais s'appuie sur celui-ci en fournissant un tableau de bord sophistiqué et un contrôle amélioré sur les files d'attente Redis. Horizon nécessite des files d'attente Redis pour fonctionner et gère les travailleurs de la file d'attente avec des fonctionnalités supplémentaires pour la surveillance, l'équilibrage et l'échelle des processus.
Support backend de file d'attente
- Le travailleur par défaut de la file d'attente Laravel prend en charge plusieurs backends de file d'attente, y compris Redis, la base de données, SQS, BeanStalkd, etc.
- Horizon ne prend en charge que Redis en tant que pilote de file d'attente. Il ne peut pas être utilisé avec d'autres backends de file d'attente.
Gestion des travailleurs
Le travailleur de la file d'attente par défaut exécute des travaux en démarrant des processus individuels qui gèrent les travaux de file d'attente. Ces processus sont généralement gérés via des gestionnaires de processus au niveau du système comme le superviseur et nécessitent une configuration manuelle pour la mise à l'échelle et l'équilibrage des processus.
Horizon présente un système de superviseur qui automatise la gestion de plusieurs travailleurs de file d'attente. Il s'exécute en tant que processus de superviseur unique, qui contrôle automatiquement le nombre de processus de travail, d'équilibre les files d'attente et les échelles en fonction de la charge de travail dynamiquement. Horizon permet de définir plusieurs "superviseurs" dans la configuration, chacun dédié à différentes files d'attente ou files d'attente avec différentes priorités. Cette organisation aide à gérer et à l'échelle des travailleurs efficacement sans avoir besoin d'une mise à l'échelle des processus manuels.
Surveillance et tableau de bord
Le travailleur de la file d'attente par défaut n'a pas d'interface utilisateur prête à l'emploi pour surveiller le traitement des travaux ou l'état de la file d'attente. La surveillance nécessite généralement des solutions sur mesure ou des outils de surveillance tiers.
Horizon fournit un tableau de bord riche en temps réel qui affiche des mesures d'emploi, un statut de file d'attente, un débit, des emplois ratés, des statistiques d'exécution et la santé des travailleurs. Cette fonctionnalité est très utile dans les environnements de production pour un aperçu immédiat de la santé des files d'attente et des mesures opérationnelles sans outillage supplémentaire.
Configuration et convivialité
- Avec le travailleur de la file d'attente par défaut, les développeurs utilisent la commande artisan `queue: work`, définissant éventuellement des paramètres tels que la connexion de file d'attente, les files d'attente pour écouter, réessayer les tentatives, la limite de mémoire et le délai d'attente. La configuration est simple mais nécessite un réglage manuel pour la mise à l'échelle et l'équilibrage des charges de travail.
- Horizon utilise un fichier de configuration où plusieurs superviseurs peuvent être définis, chacun avec ses propres ensembles de files d'attente, les stratégies de mise à l'échelle (comme l'équilibrage automatique basé sur le nombre de travaux), les limites de processus, les délais d'expiration et les politiques de réessayer. Cela facilite la gestion de la file d'attente sur une base de file d'attente sur une base par séjour ou par priorité.
Échelle automatique et équilibrage de chargement
Le travailleur de la file d'attente par défaut manque de mécanismes intégrés pour l'équilibrage de charge entre plusieurs files d'attente ou des travailleurs à échelle automatique. La mise à l'échelle doit être gérée au niveau du système ou via des outils d'orchestration séparés.
Horizon fournit des stratégies de mise à l'échelle automatique, telles que l'équilibre des dénombrements des travailleurs en fonction de la taille de la file d'attente ou d'autres mesures. Il peut ajuster dynamiquement le nombre de processus de travail pour répondre à la demande, démarrer ou terminer les processus en douceur sans intervention manuelle.
Gestion des échecs d'emploi
Les deux systèmes gèrent les paramètres de réchauffement et de défaillance du travail, mais le tableau de bord d'Horizon offre une meilleure visibilité dans les travaux défaillants, y compris les raisons de défaillance et les traces de pile, ce qui facilite la gestion des échecs.
Gestion des ressources et des processus
Le travailleur de la file d'attente par défaut nécessite une configuration explicite de gestion de mémoire et de processus par les processus de travailleur du développeur doit être redémarré manuellement ou via des scripts de service système pour éviter les fuites de mémoire et maintenir l'exécution du travail en douceur.
Horizon a des dispositions intégrées pour gérer le cycle de vie des travailleurs en redémarrant les travailleurs après un nombre donné d'emplois ou de temps, ainsi que de surveillance de la mémoire pour éviter les problèmes causés par les fuites de ressources. Cette gestion proactive aide à maintenir une meilleure stabilité du système.
Utilisation et différences de configuration
- L'utilisation du travailleur de la file d'attente par défaut est aussi simple que d'exécuter `PHP Artisan Fitre: Work` ou la configuration des superviseurs système pour exécuter les commandes des travailleurs.
- L'utilisation d'horizon implique l'installation du package Horizon, exécutant `Php Artisan Horizon` qui lance le superviseur Horizon qui gère en interne les processus` Horizon: Work`. Il remplace la nécessité de faire fonctionner manuellement les processus de «file d'attente: travail» sous les superviseurs au niveau du système dans les configurations de production.
Résumé des différences clés
- Prise en charge du backend: le travailleur par défaut prend en charge plusieurs backends, Horizon ne prend en charge que Redis.
- Gestion des processus: manuel pour le travailleur par défaut, automatisé et dynamique avec Horizon.
- Surveillance: pas d'interface utilisateur native pour le travailleur par défaut; Horizon a un tableau de bord en temps réel.
- Échelle: mise à l'échelle / configuration manuelle vs échelle automatique et équilibrage.
- Manipulation des échecs: Retries de base dans le travailleur par défaut; Visibilité améliorée via le tableau de bord à Horizon.
- Complexité de configuration: options de ligne de commande simples par rapport aux options de configuration riches pour le réglage fin.
- Contexte d'utilisation: le travailleur par défaut s'adapte à plusieurs pilotes et aux files d'attente simples; Horizon est pour Redis avec des besoins avancés.
Quand utiliser chacun
Le travailleur par défaut de la file d'attente Laravel est le mieux adapté aux applications ayant des besoins de file d'attente plus simples, plusieurs pilotes pris en charge ou ceux qui ne nécessitent pas de capacités de surveillance avancées ou de mise à l'échelle automatique.
Laravel Horizon est idéal pour les applications à grande échelle en utilisant des files d'attente Redis qui nécessitent une gestion avancée des travailleurs, une surveillance en temps réel, une échelle automatique dynamique et des fonctionnalités de stabilité du processus. Il améliore la perspicacité du développeur et le contrôle opérationnel des systèmes de file d'attente mais ajoute une dépendance à Redis et une complexité de configuration supplémentaire.
Détails techniques supplémentaires
- Les superviseurs d'Horizon peuvent gérer plusieurs files d'attente avec différentes priorités et configurations simultanément, permettant la séparation des types de charges de travail et la couture d'allocation des ressources.
- Horizon prend en charge la configuration des tentatives de réessayer du travail, le délai d'expiration des travailleurs, les travaux max avant le redémarrage, la limite de mémoire par travailleur et les contrôles plus granulaires par rapport aux files d'attente par défaut où elles doivent être gérées manuellement.
- L'horizon maintient historiquement les mesures d'emploi, permettant d'analyser les tendances du débit et des échecs des emplois.
- Horizon Abstracts sous-jacent «Horizon: Work» Processus cachés de l'utilisation manuelle pour rationaliser le fonctionnement sous sa supervision.
- Le travailleur de la file d'attente par défaut peut toujours être utilisé indépendamment aux côtés ou pour certains emplois si nécessaire, mais Horizon est conçu pour remplacer complètement le besoin de gestion manuelle des travailleurs de file d'attente lors du déploiement.