Giới thiệu về Laravel Horizon
Bài đăng này đã không được cập nhật trong 3 năm
Laravel Horizon là một hệ thống quản lý, cấu hình Redis queues hoàn toàn mới, vô cùng đẹp mắt, open source và miễn phí cho toàn bộ cộng đồng Laravel. Laravel Horizon sẽ được tung ra bản beta vào ngày mai (27/07/2017).
Dashboard (Bảng quản lý)
Horizon dashboard chỉ chạy trên một page duy nhất rất đẹp sử dụng Vue.js, được cài đặt trực tiếp tới ứng dụng của bạn một cách đơn giản thông qua composer composer require laravel/horizon
. Nó cung cấp bảng thống kê real-time về queue workloads, recent jobs, failed jobs, job retries, throughput và runtime metrics, và process counts. Việc authentication tới dashboard được controlled bằng cách gọi callback registered thông qua Horizon::auth
, cho phép bạn có full control truy cập tới dashboard.
Configuration (Cấu hình)
Horizon là một cách mới tuyệt vời để cấu hình queues cho Laravel. Tương tự như Laravel's schedular, tất cả queue worker được cấu hình trong code:
Có configuration này trong code có nghĩa là nó nằm dưới sự kiểm soát của source code, làm cho nó trở nên đơn giản khi làm việc với dev team. Trong file config/horizon.php
, Tôi có thể cấu số lượng processes sẽ được xử lý, queue timeouts, và các thiết lập khác mà tôi muốn truyền vào queue:work
Artisan command.
Sau, để start các queue workers, tôi chỉ cần chạy một command duy nhất và đơn giản command: php artisan horizon
. Không cần thêm một command nào khác. Command này sẽ đọc Horizon configuration và cung cấp toàn bộ những gì cần thiết cho các worker processes.
Một khi Horizon đã được cài đặt và deploy lên production, bạn có thể modify toàn bộ worker configuration bằng cách modify configuration file và deploy lại.
Failed Jobs (Các Queue Jobs bị lỗi trong quá trình thực thi)
Horizon cung cấp một giao diện rõ ràng, chi tiết để xem xét và retry các failed jobs. Bạn có thể xem exception stack trace, tags, và recent retries. Thật là tuyệt vời khi recent job retries được hiển thị trực tiếp trên trang chi tiết failed job. Bởi vì recent retries được liên kết với failed job ban đầu, bạn không cần phải sử dụng câu lệnh queue:retry
ngay sau khi phát hiện failed job thông qua console và đợi retry kết thúc success hay fail một lần nữa:
Tag Monitoring
Horizon cho phép bạn gán "tags" cho các jobs, bao gồm mailables, broadcasts, notifications, và queued listeners. Trên thực tế, Horizon sẽ tự động tag các jobs một cách thông minh và tự động tùy thuộc vào các Eloquent model gắn liền với job. Tính năng này giúp bạn có thể dễ dàng tìm kiếm các jobs của bạn thông qua các tags:
Balancing (Cân bằng)
Horizon có thể tự động cân bằng các queue worker processes dựa trên lượng processes giữa các queues. Ví dụ, nếu queue “default” rỗng, nhưng queue “notifications” lại đầy, Horizon có thể tự động phân bổ các workers tới queue “notifications” giúp cho các jobs được xử lý nhanh hơn.
Một khi queue đã bắt kịp, Horizon sẽ đảm bảo rằng các processes được phân phối lại một cách công bằng trên tất cả các queues.
Metrics
Horizon cung cấp biểu đồ throughput và runtime, cho phép bạn xem xu hướng throughput and runtime của từng job hoặc toàn bộ một queue. Những metrics snapshot được chụp lại bằng cách sử dụng command horizon:snapshot
, có thể được lên lịch để chạy mỗi phút bằng cách sử dụng Laravel’s built-in scheduler. Điều này cho phép bạn nhanh chóng tìm ra sự xuống cấp của performance sau khi deploy.
Notifications (Thông báo)
Horizon gửi thông báo thông qua cả Slack và SMS khi queue của bạn quá đầy. Bạn có thể dễ dàng cấu hình ngưỡng thời gian chờ để xác định khi nào một thông báo sẽ được gửi. Điều này có nghĩa là bạn luôn ý thức được khi queue của bạn cần thêm workers. Khi bạn nhận được thông báo, cấu hình dựa trên code-driven của Horizon cho phép bạn thực hiện thay đổi cấu hình nhanh để thêm nhiều workers hơn.
Kết luận và cảm ơn
Một lời cảm ơn đặc biệt đến Taylor Otwell, Mohamed Said, David Hemphill, và Steve Schoger, những người đã đóng góp cho thiết kế và phát triển của Horizon. Steve thiết kế giao diện người dùng, David Hemphill đã triển khai giao diện với một page duy nhất ứng dụng Vue và Mohamed kết nối front-end với Horizon back-end, đặc biệt là Taylor Otwell - người tạo ra Horizon và là tác giả của bài viết Introducing Laravel Horizon.
Bài viết gốc được đăng tải tại đây: Introducing Laravel Horizon
All rights reserved