오늘 저는 Laravel Redis 대기열을 위한 아름다운 대시보드와 코드 기반 구성 시스템을 제공하는 Laravel Horizon을 발표하게 된 것을 자랑스럽게 생각합니다.
새로운 코드 기반 구성 시스템 외에도 Horizon에는 아름다운 대시보드 UI도 있습니다. 완전한 오픈 소스이며 전체 Laravel 커뮤니티에 무료입니다. 내일 베타 버전을 출시할 예정입니다, 마음에 드셨으면 좋겠습니다. .
역자 주: 2019년 10월 현재 Horizon은 버전 3.4.1
Dashboard
Horizon Dashboard는 간단한 composer require laravel을 통해 액세스할 수 있는 아름다운 단일 페이지 Vue 애플리케이션입니다. /horizon
은 기존 애플리케이션에 직접 설치됩니다. 대기 중인 워크로드, 최근 작업, 실패한 작업, 작업 재시도, 처리량 및 런타임 지표, 프로세스 수에 대한 실시간 통찰력을 제공합니다. Horizon::auth
로 등록된 간단한 콜백을 통해 대시보드 인증을 제어하면 대시보드에 대한 액세스를 완전히 제어할 수 있습니다. composer require laravel / horizon
直接安装到现有应用程序中。 它提供对队列工作负载,最近的作业,失败的作业,作业重试,吞吐量和运行时指标以及进程计数的实时洞察。 通过Horizon :: auth
注册的简单回调控制仪表板的身份验证,从而使您可以完全控制对仪表板的访问。
配置
Horizon 是配置 Laravel 队列的绝佳新方法。 与 Laravel 的调度程序类似,所有队列工作者都可以通过代码配置:
在您的代码中拥有此配置意味着这一切都在源代码控制之下,从而使您的团队可以轻松地进行协作。在config/horizon.php
文件中,我们配置要创建的进程数量、需要处理的队列、队列超时时间以及需要传递给 queue:work
Artisan 命令的其他任何设置 。
然后,要启动所有的队列工作者,只需要一个简单的命令:php artisan horizon
。 不需要其他命令行选项。 该命令将读取 Horizon 配置并配置所有必需的工作进程。
将 Horizon 安装并部署到生产环境后,您可以通过修改配置文件并重新部署来修改整个队列工作者的配置。
失败的任务
Horizon 提供了清晰详细的界面,用于检查和重试失败的任务(是的,我们都有)。 您可以查看该任务的异常堆栈跟踪,标签和最近重试记录。 将失败的任务详细信息直接在页面上显示真是太好了。 由于重试是链接到失败的原始任务,因此您不再需要盲目地尝试在控制台输入queue:retry
并确定其重试是成功完成还是再次失败:
标签监控
Horizon 允许您为任务分配标签,包括 Email
、Broadcasts
、Notifications
和Queued Listeners
。 实际上,Horizon 会根据附加到队列的 Eloquent Model 智能地给大多数任务打上标签。
您可以通过这些标签轻松地搜索到队列任务,从而查看特定的客户任务或者程序中的其他队列任务。 此功能使您可以快速关注高价值客户,或为刚提交支持工单的客户找到失败的任务:
平衡
Horizon 可以根据队列的工作负载自动平衡队列中的队列工作进程。 例如,如果default
队列为空,但notifications
队列中充满了队列任务,则 Horizon 可以自动将notifications
的任务分配到default
队列中,以帮助快速处理这些任务。
队列赶上后,Horizon 将确保在所有队列中公平地重新分配任务。
指标图表
Horizon 提供吞吐量和平均运行时间图表,使您可以查看单个任务或整个队列的吞吐量和运行时间趋势。 这些指标快照是使用horizon:snapshot
config/horizon.php
파일에서 생성할 프로세스 수, 처리할 대기열, 대기열 시간 초과 및 대기열에 전달해야 하는 기타 매개변수를 구성합니다. :work
Artisan 명령 모든 설정. 🎜🎜그런 다음 모든 대기열 작업자를 시작하려면 php artisan horizon
이라는 간단한 명령만 입력하면 됩니다. 다른 명령줄 옵션은 필요하지 않습니다. 이 명령은 Horizon 구성을 읽고 필요한 모든 작업자 프로세스를 구성합니다. 🎜🎜Horizon을 설치하고 프로덕션 환경에 배포한 후 구성 파일을 수정하고 다시 배포하여 전체 대기열 작업자 구성을 수정할 수 있습니다. 🎜🎜Failed Tasks🎜🎜Horizon은 실패한 작업을 검사하고 재시도하기 위한 명확하고 상세한 인터페이스를 제공합니다(예, 우리 모두가 갖고 있습니다). 해당 작업에 대한 예외 스택 추적, 레이블, 최근 재시도 기록을 볼 수 있습니다. 실패한 작업 세부 정보가 페이지에 직접 표시되면 좋을 것입니다. 재시도는 실패한 원래 작업에 연결되어 있으므로 더 이상 콘솔에 queue:retry
를 맹목적으로 입력하고 재시도가 성공적으로 완료되었는지 또는 다시 실패했는지 확인하려고 할 필요가 없습니다. 🎜🎜 태그 모니터링 🎜 🎜Horizon을 사용하면 이메일
, 방송
, 알림
및 대기 중인 리스너
를 포함한 작업에 태그를 할당할 수 있습니다. 실제로 Horizon은 대기열에 연결된 Eloquent 모델을 기반으로 대부분의 작업에 지능적으로 태그를 지정합니다. 🎜🎜이 태그를 통해 대기열 작업을 쉽게 검색하여 특정 고객 작업이나 프로그램의 다른 대기열 작업을 볼 수 있습니다. 이 기능을 사용하면 가치가 높은 고객에게 빠르게 집중하거나 방금 지원 티켓을 제출한 고객의 실패한 작업을 찾을 수 있습니다. 🎜🎜Balance🎜🎜 대기열 내의 Horizon Queue 작업자 프로세스는 대기열의 워크로드에 따라 자동으로 밸런싱될 수 있습니다. 예를 들어 기본
대기열이 비어 있지만 알림
대기열이 대기 중인 작업으로 채워져 있는 경우 Horizon은 알림
에서 로 작업을 자동으로 할당할 수 있습니다. >기본
대기열을 사용하면 이러한 작업을 빠르게 처리할 수 있습니다. 🎜🎜대기열이 따라잡으면 Horizon은 작업이 모든 대기열에 공정하게 재분배되도록 합니다. 🎜🎜지표 차트🎜🎜Horizon은 처리량 및 평균 런타임 차트를 제공하여 개별 작업 또는 전체 차량 추세에 대한 처리량 및 런타임을 볼 수 있습니다. 이러한 메트릭 스냅샷은 horizon:snapshot
명령을 사용하여 캡처됩니다. 이 명령은 Laravel에 내장된 작업 스케줄러를 사용하여 매분 실행되도록 설정할 수 있습니다. 이를 통해 배포 후 성능 저하를 빠르게 발견할 수 있습니다. 🎜알림
대기열 중 하나가 특정 로드에 도달하면 Horizon은 Slack과 SMS 알림을 모두 보냅니다. 알림이 전송되는 시기를 결정하기 위해 대기 시간 임계값을 쉽게 구성할 수 있습니다. 이는 대기열에 더 많은 프로세스가 필요한 시기를 항상 알 수 있음을 의미합니다. 알림을 받으면 Horizon의 코드 기반 구성을 통해 신속하게 구성을 변경하여 더 많은 프로세스를 추가할 수 있습니다.
결론 및 감사
Horizon의 디자인과 개발에 기여한 Mohamed Said, David Hemphill 및 Steve Schoger에게 특별한 감사의 말씀을 전하고 싶습니다. Steve는 사용자 인터페이스를 디자인했고 David Hemphill은 인터페이스를 Vue 애플리케이션으로 구현했으며 Mohamed는 프런트 엔드를 내가 구현한 Horizon 백엔드에 연결했습니다.