Hàng đợi công việc phân tán, chịu lỗi
- Hatchet thay thế các hệ thống hàng đợi hoặc pub/sub hiện có vốn khó quản lý, cho phép thiết kế tải công việc bền bỉ có thể phục hồi sau lỗi và giải quyết các vấn đề như đồng thời, công bằng và giới hạn tốc độ.
- Thay vì tự quản lý hàng đợi công việc hay hệ thống pub/sub, bạn có thể dùng Hatchet để phân phối hàm giữa một nhóm worker với hạ tầng hoặc cấu hình tối thiểu.
Ưu điểm của Hatchet
- Lập lịch độ trễ cực thấp và thông lượng cao
- Hatchet được xây dựng trên một hàng đợi độ trễ thấp với thời gian khởi động trung bình
25ms, mang lại sự cân bằng tối ưu giữa khả năng tương tác thời gian thực và độ tin cậy cần thiết cho các tác vụ quan trọng.
- Đồng thời, công bằng, giới hạn tốc độ
- Hatchet triển khai sẵn các chiến lược như FIFO, LIFO, Round Robin và Priority Queues, giúp vượt qua những bài toán mở rộng phổ biến chỉ với cấu hình tối thiểu.
- Khả năng phục hồi theo thiết kế
- Với chính sách retry tùy chỉnh và xử lý lỗi tích hợp, Hatchet bảo đảm công việc có thể được khôi phục nhanh chóng sau các lỗi tạm thời.
Khả năng quan sát và kiểm soát tốt hơn
- Observability
- Mọi lần thực thi đều có thể được tìm kiếm đầy đủ, giúp nhanh chóng xác định vấn đề.
- Thực thi bền bỉ (ở mức thực dụng)
- Có thể phát lại sự kiện và khởi động lại việc thực thi theo cách thủ công từ một bước cụ thể trong workflow.
- Cron
- Có thể lập lịch thực thi hàm lặp lại định kỳ.
- Lập lịch một lần
- Có thể lập lịch thực thi hàm vào một thời điểm và ngày cụ thể.
- Bảo vệ trước đột biến tải
- Giảm nhẹ các đợt tăng đột biến lưu lượng và chỉ thực thi trong giới hạn hệ thống có thể xử lý.
- Streaming tiến độ
- Có thể subscribe các cập nhật theo tiến độ của worker nền.
Ví dụ use case
- Công bằng cho Generative AI
- Có thể dùng Hatchet để phân phối yêu cầu công bằng đến các worker, tránh việc một số người dùng bận rộn làm quá tải hệ thống.
- Xử lý batch để lập chỉ mục tài liệu
- Hatchet có thể xử lý các batch lớn gồm tài liệu, hình ảnh và dữ liệu khác, đồng thời tiếp tục từ giữa tiến trình nếu xảy ra lỗi.
- Điều phối workflow cho hệ thống đa phương thức
- Hatchet có thể điều phối đầu vào và đầu ra đa phương thức, đồng thời xử lý toàn bộ việc thực thi theo kiểu DAG.
- Tính chính xác cho xử lý hướng sự kiện
- Có thể phản ứng với các sự kiện bên ngoài hoặc sự kiện nội bộ của hệ thống và tự động phát lại sự kiện.
Bắt đầu nhanh
- Hatchet hỗ trợ SDK mã nguồn mở cho Python, Typescript và Go.
- Để bắt đầu, bạn có thể tham khảo tài liệu của Hatchet hoặc xem kho quickstart.
Kho SDK
- Hatchet mặc định cung cấp Go SDK.
- Typescript SDK cũng có thể sử dụng.
- Nếu gặp vấn đề liên quan đến SDK, bạn có thể gửi issue trong kho tương ứng.
Có phiên bản cloud được quản lý của Hatchet không?
- Có, trong giai đoạn beta, Hatchet đang cung cấp phiên bản cloud cho một số công ty giúp xây dựng và định hình sản phẩm.
Có phiên bản tự host của Hatchet không?
- Có, bạn có thể tìm thấy hướng dẫn cho container Docker mã nguồn mở dùng để tự host trong tài liệu.
So với các lựa chọn thay thế thì thế nào? (Celery, BullMQ)
- Tại sao lại tạo thêm một hàng đợi được quản lý nữa?
- Mục tiêu là có được lợi ích của hàng đợi giao dịch đầy đủ, đặc biệt cho các tác vụ phụ thuộc vào thực thi kiểu DAG, và nhóm phát triển tin tưởng mạnh mẽ rằng Postgres có thể thay thế phần lớn các trường hợp dùng hàng đợi.
- Nhiều hàng đợi dựa trên Redis, và nếu không cẩn thận có thể xảy ra mất dữ liệu do OOM, nhưng khi dùng PG thì có thể tránh được vấn đề này.
Vấn đề
- Bạn có thể gửi các lỗi đã phát hiện thông qua Github issue.
- Vì dự án đang ở giai đoạn đầu, tốt hơn nên liên hệ trước qua Discord trước khi đưa ra các yêu cầu tính năng phức tạp.
Nếu muốn đóng góp
- Hãy tham khảo tài liệu đóng góp và cho biết bạn muốn làm gì trong kênh #contributing trên Discord để dễ định hình hướng đi của dự án và hợp tác thuận lợi hơn.
Ý kiến của GN⁺
- Hatchet có vẻ là một giải pháp giúp giảm độ phức tạp trong quản lý hàng đợi công việc ở các hệ thống phân tán, đồng thời cung cấp tính sẵn sàng cao và khả năng chịu lỗi, đặc biệt hữu ích cho xử lý dữ liệu quy mô lớn và dịch vụ thời gian thực.
- So với các hệ thống hàng đợi khác đang được dùng trên thị trường, độ ổn định và khả năng mở rộng có được nhờ sử dụng Postgres là một ưu điểm đáng chú ý của công nghệ này.
- Những điểm cần cân nhắc khi triển khai Hatchet gồm khả năng tương thích với hạ tầng hiện có, di chuyển dữ liệu và năng lực kỹ thuật của đội ngũ.
- Các tính năng quan sát và kiểm soát nâng cao mà Hatchet cung cấp có thể giúp việc giám sát hiệu năng hệ thống và xử lý sự cố trở nên dễ dàng hơn, từ đó giảm gánh nặng công việc cho đội phát triển và vận hành.
- Vì Hatchet vẫn đang ở giai đoạn beta, cần kiểm chứng đầy đủ về độ ổn định và tính năng, đồng thời nên thử nghiệm kỹ trước khi áp dụng vào hệ thống quy mô lớn.
1 bình luận
Ý kiến trên Hacker News
contextlàm tham số. Họ cảm thấy điều này khiến phải viết khá nhiều mã boilerplate khi viết hàm.SKIP LOCKED, v.v., nhưng rồi đổi việc. Họ tự hỏi liệu Hatchet có phù hợp với use case này không.