Maison  >  Article  >  cadre php  >  Qu’est-ce que Laravel Horizon ? A quoi ça sert ?

Qu’est-ce que Laravel Horizon ? A quoi ça sert ?

藏色散人
藏色散人avant
2021-09-20 16:47:432277parcourir

Ce qui suit est une introduction à Laravel Horizon de la colonne LaravelJ'espère que cela sera utile aux amis dans le besoin !

Présentation de Laravel Horizon

Aujourd'hui, je suis fier d'annoncer Laravel Horizon, qui fournit un magnifique tableau de bord et un système de configuration basé sur le code pour les files d'attente Laravel Redis.

En plus d'un nouveau système de configuration basé sur le code, Horizon dispose également d'une magnifique interface utilisateur de tableau de bord, Il est entièrement open source et gratuit pour toute la communauté Laravel. Nous publierons une version bêta demain , j'espère que vous l'aimerez. .

Note du traducteur : depuis octobre 2019, Horizon a publié la version 3.4.1

Dashboard

Qu’est-ce que Laravel Horizon ? A quoi ça sert ?
Horizon Dashboard est une belle application Vue d'une seule page accessible via un simple composer require laravel /horizon s'installe directement dans les applications existantes. Il fournit des informations en temps réel sur les charges de travail des files d'attente, les tâches récentes, les tâches ayant échoué, les nouvelles tentatives de tâches, les mesures de débit et d'exécution, ainsi que le nombre de processus. Contrôlez l'authentification du tableau de bord via un simple rappel enregistré avec Horizon::auth, vous donnant un contrôle total sur l'accès à votre tableau de bord. composer require laravel / horizon直接安装到现有应用程序中。 它提供对队列工作负载,最近的作业,失败的作业,作业重试,吞吐量和运行时指标以及进程计数的实时洞察。 通过Horizon :: auth注册的简单回调控制仪表板的身份验证,从而使您可以完全控制对仪表板的访问。

配置

Horizon 是配置 Laravel 队列的绝佳新方法。 与 Laravel 的调度程序类似,所有队列工作者都可以通过代码配置:

在您的代码中拥有此配置意味着这一切都在源代码控制之下,从而使您的团队可以轻松地进行协作。在config/horizon.php文件中,我们配置要创建的进程数量、需要处理的队列、队列超时时间以及需要传递给 queue:work Artisan 命令的其他任何设置 。

然后,要启动所有的队列工作者,只需要一个简单的命令:php artisan horizon。 不需要其他命令行选项。 该命令将读取 Horizon 配置并配置所有必需的工作进程。

将 Horizon 安装并部署到生产环境后,您可以通过修改配置文件并重新部署来修改整个队列工作者的配置。

失败的任务

Horizon 提供了清晰详细的界面,用于检查和重试失败的任务(是的,我们都有)。 您可以查看该任务的异常堆栈跟踪,标签和最近重试记录。 将失败的任务详细信息直接在页面上显示真是太好了。 由于重试是链接到失败的原始任务,因此您不再需要盲目地尝试在控制台输入queue:retry并确定其重试是成功完成还是再次失败:

标签监控

Horizon 允许您为任务分配标签,包括 EmailBroadcastsNotificationsQueued Listeners。 实际上,Horizon 会根据附加到队列的 Eloquent Model 智能地给大多数任务打上标签。

您可以通过这些标签轻松地搜索到队列任务,从而查看特定的客户任务或者程序中的其他队列任务。 此功能使您可以快速关注高价值客户,或为刚提交支持工单的客户找到失败的任务:

平衡

Horizon 可以根据队列的工作负载自动平衡队列中的队列工作进程。 例如,如果default 队列为空,但notifications队列中充满了队列任务,则 Horizon 可以自动将notifications的任务分配到default队列中,以帮助快速处理这些任务。

队列赶上后,Horizon 将确保在所有队列中公平地重新分配任务。

指标图表

Horizon 提供吞吐量和平均运行时间图表,使您可以查看单个任务或整个队列的吞吐量和运行时间趋势。 这些指标快照是使用horizon:snapshot

Configuration🎜🎜Horizon est une excellente nouvelle façon de configurer les files d'attente Laravel. Semblable au planificateur de Laravel, tous les travailleurs de file d'attente sont configurables via le code : 🎜🎜Avoir cette configuration dans votre code signifie que tout est sous contrôle source, ce qui facilite la collaboration de votre équipe. Dans le fichier config/horizon.php, nous configurons le nombre de processus à créer, les files d'attente à traiter, le délai d'expiration de la file d'attente et d'autres paramètres qui doivent être transmis à la file d'attente :work Commande artisanale Tout réglage. 🎜🎜Ensuite, pour démarrer tous les files d'attente, juste une simple commande : php artisan horizon. Aucune autre option de ligne de commande n'est requise. Cette commande lit la configuration d'Horizon et configure tous les processus de travail requis. 🎜🎜Après avoir installé et déployé Horizon dans un environnement de production, vous pouvez modifier l'intégralité de la configuration du gestionnaire de file d'attente en modifiant le fichier de configuration et en redéployant. 🎜🎜Tâches échouées🎜🎜Horizon fournit une interface claire et détaillée pour inspecter et réessayer les tâches ayant échoué (oui, nous les avons tous). Vous pouvez afficher la trace de la pile d'exceptions, l'étiquette et l'enregistrement des nouvelles tentatives récentes pour la tâche. Ce serait bien d'afficher les détails des tâches ayant échoué directement sur la page. Puisque la nouvelle tentative est liée à la tâche d'origine qui a échoué, vous n'avez plus besoin d'essayer aveuglément de taper queue:retry dans la console et de déterminer si sa nouvelle tentative s'est terminée avec succès ou a échoué à nouveau : 🎜🎜 Surveillance des balises 🎜 🎜Horizon vous permet d'attribuer des balises aux tâches, notamment E-mail, Diffusions, Notifications et Écouteurs en file d'attente. En fait, Horizon marque intelligemment la plupart des tâches en fonction du modèle éloquent attaché à la file d'attente. 🎜🎜Vous pouvez facilement rechercher des tâches de file d'attente via ces balises pour afficher les tâches client spécifiques ou d'autres tâches de file d'attente dans le programme. Cette fonctionnalité vous permet de vous concentrer rapidement sur les clients à forte valeur ajoutée ou de rechercher les tâches ayant échoué pour les clients qui viennent de soumettre un ticket d'assistance : 🎜🎜Balance🎜🎜 Les processus de travail Horizon Queue au sein d'une file d'attente peuvent être automatiquement équilibrés en fonction de la charge de travail de la file d'attente. Par exemple, si la file d'attente par défaut est vide mais que la file d'attente notifications est remplie de tâches en file d'attente, Horizon peut automatiquement attribuer des tâches de notifications à file d'attente par défaut pour aider à traiter ces tâches rapidement. 🎜🎜Une fois les files d'attente rattrapées, Horizon veillera à ce que les tâches soient redistribuées équitablement entre toutes les files d'attente. 🎜🎜Graphique des indicateurs🎜🎜Horizon fournit des graphiques de débit et de durée d'exécution moyenne, vous permettant d'afficher le débit et la durée d'exécution de tâches individuelles ou de la tendance d'une flotte entière. Ces instantanés de métriques sont capturés à l'aide de la commande horizon:snapshot, qui peut être configurée pour s'exécuter toutes les minutes à l'aide du planificateur de tâches intégré de Laravel. Cela vous permet de repérer rapidement la dégradation des performances après le déploiement. 🎜

Notifications

Lorsque l'une de vos files d'attente atteint une certaine charge, Horizon enverra des notifications Slack et SMS. Vous pouvez facilement configurer des seuils de temps d'attente pour déterminer quand les notifications sont envoyées. Cela signifie que vous savez toujours quand la file d'attente a besoin de plus de processus. Une fois notifié, la configuration basée sur le code d'Horizon vous permet d'apporter rapidement des modifications de configuration pour ajouter davantage de processus.

Conclusion et remerciements

Je voudrais remercier tout particulièrement Mohamed Said, David Hemphill et Steve Schoger, qui ont tous contribué à la conception et au développement d'Horizon. Steve a conçu l'interface utilisateur, David Hemphill a implémenté l'interface en tant qu'application Vue et Mohamed a connecté le front-end au backend Horizon que j'ai implémenté.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer