post-image

Giới thiệu về Laravel Horizon

Tổng quan

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.

Dashboard (Bảng quản lý)

3d6e5720 f4e6 4dde bd3e f9703a2d8375

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:

a26d2bbe 75c7 4000 942d ec0006449cb1

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:

067196ee 4e3c 4f99 9f46 cff388e87bc7

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:

7e752d80 aa9b 4ea2 8caf 33ea558e31a7

Balancing (Cân bằng)

0b9d5bee e12c 420d 835c baf0d3f7c776

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

7181c319 e164 431c 9886 924d8db87f2b

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)

f73d8080 177e 44be 88d3 f58ff9b3e026

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 OtwellMohamed SaidDavid 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

Các bạn có thể tham khảo các bài viết hay về Laravel tại đây.


Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.

Leave a Reply

Your email address will not be published. Required fields are marked *