Antrean tugas terdistribusi yang toleran terhadap kegagalan
- Hatchet memungkinkan perancangan beban kerja yang tahan lama untuk menggantikan antrean atau sistem pub/sub yang sulit dikelola, dengan kemampuan pulih dari kegagalan serta menyelesaikan masalah seperti konkurensi, keadilan, dan pembatasan laju.
- Alih-alih mengelola sendiri antrean tugas atau sistem pub/sub, Anda dapat menggunakan Hatchet untuk mendistribusikan fungsi ke serangkaian worker dengan konfigurasi atau infrastruktur yang minimal.
Kelebihan Hatchet
- Penjadwalan latensi ultra-rendah dan throughput tinggi
- Hatchet dibangun di atas antrean berlatensi rendah dengan waktu mulai rata-rata
25ms, sehingga menghadirkan keseimbangan yang sangat baik antara kemampuan interaksi real-time dan keandalan yang dibutuhkan untuk pekerjaan mission-critical.
- Konkurensi, keadilan, pembatasan laju
- Strategi seperti FIFO, LIFO, Round Robin, dan Priority Queues diimplementasikan sebagai strategi bawaan Hatchet untuk mengatasi masalah penskalaan umum dengan konfigurasi minimal.
- Ketahanan yang dirancang sejak awal
- Dengan kebijakan retry kustom dan penanganan error yang terintegrasi, Hatchet memastikan tugas dapat dipulihkan dengan cepat dari kegagalan sementara.
Visibilitas dan kontrol yang ditingkatkan
- Observabilitas
- Semua eksekusi dapat dicari sepenuhnya, sehingga masalah dapat diidentifikasi dengan cepat.
- Eksekusi tahan lama yang (praktis)
- Anda dapat memutar ulang event dan memulai ulang eksekusi secara manual dari tahap tertentu dalam workflow.
- Cron
- Anda dapat menjadwalkan eksekusi fungsi secara berulang.
- Penjadwalan sekali jalan
- Anda dapat menjadwalkan eksekusi fungsi pada waktu dan tanggal tertentu.
- Perlindungan terhadap lonjakan
- Mengurangi lonjakan traffic dan hanya menjalankan beban yang dapat ditangani sistem.
- Streaming progresif
- Anda dapat berlangganan pembaruan sesuai progres worker latar belakang.
Contoh use case
- Keadilan untuk Generative AI
- Hatchet dapat digunakan untuk mendistribusikan permintaan ke worker secara adil agar pengguna yang sangat sibuk tidak membebani sistem secara berlebihan.
- Pemrosesan batch untuk pengindeksan dokumen
- Hatchet dapat menangani pemrosesan batch skala besar untuk dokumen, gambar, dan data lainnya, serta melanjutkan pekerjaan dari titik tengah saat terjadi kegagalan.
- Orkestrasi workflow untuk sistem multimodal
- Hatchet dapat mengoordinasikan input dan output multimodal, serta menangani eksekusi bergaya DAG secara menyeluruh.
- Ketepatan untuk pemrosesan berbasis event
- Dapat merespons event eksternal maupun event internal sistem, serta secara otomatis memutar ulang event.
Memulai dengan cepat
- Hatchet mendukung SDK open source untuk Python, Typescript, dan Go.
- Untuk memulai, Anda dapat merujuk ke dokumentasi Hatchet atau melihat repositori quickstart.
Repositori SDK
- Hatchet pada dasarnya menyediakan SDK Go.
- SDK Typescript juga tersedia.
- Jika Anda mengalami masalah terkait SDK, Anda dapat mengajukan issue di repositori terkait.
Apakah ada versi cloud terkelola dari Hatchet?
- Ya, selama periode beta mereka menyediakan versi cloud untuk beberapa perusahaan yang membantu membangun dan membentuk produk.
Apakah ada versi self-hosted dari Hatchet?
- Ya, petunjuk untuk container Docker open source untuk self-hosting dapat ditemukan di dokumentasi.
Bagaimana perbandingannya dengan alternatif lain? (Celery, BullMQ)
- Mengapa membuat antrean terkelola lain?
- Mereka ingin menghadirkan manfaat antrean transaksional secara menyeluruh, terutama untuk eksekusi bergaya DAG, dan sangat meyakini bahwa Postgres dapat menggantikan sebagian besar use case antrean.
- Banyak antrean dibangun di atas Redis, dan jika tidak berhati-hati dapat terjadi kehilangan data akibat OOM, tetapi dengan menggunakan PG masalah ini dapat dihindari.
Masalah
- Anda dapat mengirimkan bug yang ditemukan melalui issue GitHub.
- Karena proyek ini masih berada pada tahap awal, sebaiknya hubungi mereka terlebih dahulu melalui Discord sebelum mengajukan permintaan fitur yang kompleks.
Jika ingin berkontribusi
- Lihat dokumentasi kontribusi, dan beri tahu apa yang ingin Anda kerjakan di channel #contributing di Discord agar lebih mudah membentuk arah proyek dan berkolaborasi.
Opini GN⁺
- Hatchet tampak sebagai solusi yang mengurangi kompleksitas pengelolaan antrean tugas dalam sistem terdistribusi serta menyediakan high availability dan toleransi terhadap kegagalan, khususnya berguna untuk pemrosesan data skala besar dan layanan real-time.
- Dibandingkan sistem antrean lain yang digunakan di pasar saat ini, stabilitas dan skalabilitas yang diperoleh dengan menggunakan Postgres merupakan keunggulan yang patut diperhatikan.
- Hal-hal yang perlu dipertimbangkan saat mengadopsi Hatchet mencakup kompatibilitas dengan infrastruktur yang ada, migrasi data, dan kapabilitas teknis tim.
- Fitur visibilitas dan kontrol tingkat lanjut yang disediakan Hatchet dapat mempermudah pemantauan performa sistem dan pemecahan masalah, sehingga mengurangi beban kerja developer dan tim operasional.
- Karena Hatchet masih berada pada tahap beta, diperlukan verifikasi yang memadai dari sisi stabilitas dan fungsionalitas, serta pengujian yang cukup sebelum diterapkan pada sistem berskala besar.
1 komentar
Komentar Hacker News