Hatchet v1 Dilancarkan: Platform Pengorkestraan Tugas Berasaskan Postgres Yang Berskala Sehingga 25K Pertanyaan Setiap Saat

BigGo Editorial Team
Hatchet v1 Dilancarkan: Platform Pengorkestraan Tugas Berasaskan Postgres Yang Berskala Sehingga 25K Pertanyaan Setiap Saat

Hatchet, platform pengorkestraan tugas latar belakang yang dibina pada PostgreSQL, telah secara rasmi melancarkan versi v1. Platform ini bertujuan untuk menyelesaikan cabaran biasa yang dihadapi oleh pembangun apabila menguruskan tugas latar belakang pada skala besar, menawarkan alternatif kepada sistem giliran tugas tradisional seperti Celery atau BullMQ, serta pengorkestraan aliran kerja seperti Temporal dan Airflow.

Tugas latar belakang adalah penting untuk aplikasi moden, membantu memindahkan kerja dari pelayan web dan memastikan operasi kritikal selesai walaupun semasa lonjakan trafik. Walaupun banyak pembangun bermula dengan giliran mudah yang disokong oleh Redis atau RabbitMQ, penyelesaian ini sering menjadi sukar untuk dinyahpepijat dan dipantau apabila aplikasi berkembang dalam kerumitan.

Seni Bina Berasaskan PostgreSQL Dengan Kebolehskalaan Mengagumkan

Pasukan Hatchet membuat perubahan seni bina yang ketara dalam pelancaran v1 mereka, beralih dari corak FOR UPDATE SKIP LOCKED tradisional yang biasa digunakan dalam giliran berasaskan PostgreSQL. Menurut pembangun, pendekatan ini tidak berskala dengan baik melebihi 25,000 pertanyaan setiap saat, terutamanya apabila berurusan dengan banyak pekerja dan timbunan tugas yang besar.

Pada asalnya kami telah menggabungkan beberapa jadual aliran kerja kami dengan jadual pemantauan kami... Jadual ini menggunakan UUID sebagai kunci utama, kerana kami mahukan UUID melalui API dan bukannya ID yang bertambah secara automatik. UUID menyebabkan beberapa sakit kepala kemudian apabila cuba menghapuskan kumpulan data dan mencegah pembengkakan indeks.

Pasukan tersebut melaksanakan beberapa pengoptimuman, termasuk memisahkan jadual pemantauan dari jadual giliran untuk mencegah isu seperti pembengkakan jadual, penampan bacaan dan penulisan untuk mengurangkan beban pangkalan data, dan menukar jadual bervolum tinggi untuk menggunakan lajur identiti dan bukannya UUID. Perubahan ini telah meningkatkan prestasi dan kestabilan secara ketara di bawah beban berat.

Model Pelaksanaan Tugas Yang Fleksibel

Hatchet menyokong pelbagai corak pelaksanaan tugas, memenuhi keperluan pembangun yang berbeza. Platform ini menawarkan kedua-dua giliran tugas tradisional untuk kerja latar belakang yang mudah dan pengorkestraan aliran kerja yang lebih kompleks melalui graf terarah asiklik (DAG) dan corak pelaksanaan yang tahan lama.

Untuk pembangun yang datang dari sistem seperti Celery atau SQS, Hatchet menyediakan fungsi giliran yang biasa dengan pemantauan yang lebih baik. Untuk mereka yang memerlukan aliran kerja yang lebih kompleks, platform ini menyokong penjanaan anak dan corak pelaksanaan yang tahan lama serupa dengan aliran kerja dan aktiviti Temporal.

Seorang pengguna menekankan sokongan Pydantic kelas pertama dalam SDK v1 sebagai kelebihan utama untuk pembangun yang beralih dari Celery, menyatakan bahawa keselamatan jenis meningkatkan pengalaman pembangun secara ketara. Kombinasi SDK Python dan TypeScript juga membolehkan fleksibiliti yang lebih besar dalam pelaksanaan, dengan sokongan Go juga tersedia.

Ciri-ciri Utama Hatchet

  • Baris Gilir: Baris gilir tugas yang tahan lama untuk pelaksanaan tugas yang boleh dipercayai
  • Sokongan Bahasa: SDK untuk Python, TypeScript, dan Go
  • Pengorkestraan Tugas: Sokongan untuk DAG (Graf Asiklik Terarah)
  • Kawalan Aliran: Logik bersyarat dan percabangan
  • Penjadualan: Pelaksanaan tugas berasaskan masa
  • Pengurusan Keserentakan: Kawalan keserentakan dinamik
  • Pengehadan Kadar: Mengawal kadar pelaksanaan tugas
  • Pemantauan: Papan pemuka web masa nyata
  • Pilihan Penempatan: Perkhidmatan awan atau hos sendiri

Kaedah Penempatan

  • Hatchet Cloud: Perkhidmatan terurus
  • Hatchet Lite: Pilihan hos sendiri yang disatukan
  • Docker Compose: Penempatan pelbagai kontena
  • Kubernetes: Carta Helm tersedia

Perbandingan

  • berbanding Temporal: Lebih fokus pada pembangun aplikasi berbanding pengorkestraan aliran kerja
  • berbanding Baris Gilir Tugas (BullMQ, Celery): Pemantauan lebih baik, pelaksanaan lebih tahan lama
  • berbanding Platform DAG (Airflow, Prefect, Dagster): Lebih fokus pada keperluan aplikasi daripada saluran data
  • berbanding Cloud Tasks: Keupayaan pengorkestraan lebih kompleks tetapi sokongan webhook yang serupa

Pengalaman Pembangun dan Pemantauan

Hatchet memberi penekanan yang ketara pada kebolehperhatian dan pengalaman pembangun. Tidak seperti banyak sistem giliran tugas di mana pemantauan menjadi mencabar pada skala besar, Hatchet memisahkan infrastruktur pemantauannya dari jadual giliran, membolehkan pembangun untuk membuat pertanyaan pada kedua-dua giliran aktif dan data tugas sejarah tanpa penurunan prestasi.

Platform ini termasuk papan pemuka web masa nyata yang menawarkan kebolehlihatan yang lebih baik berbanding alat seperti Flower dari Celery. Fokus pada pemantauan ini menangani masalah biasa yang dibangkitkan oleh pengguna - memahami apa yang berlaku apabila tugas gagal dan bagaimana untuk menyahpepijat isu dengan berkesan.

Sesetengah pengguna telah menyatakan terdapat beberapa kekurangan dalam papan pemuka dan dokumentasi, walaupun pasukan tersebut kelihatan responsif terhadap maklum balas. Pemisahan pemantauan dari jadual giliran juga membolehkan pilihan untuk menjalankan pemantauan pada pangkalan data yang benar-benar berasingan jika perlu, memberikan fleksibiliti tambahan untuk penempatan skala tinggi.

Pilihan Penempatan dan Integrasi

Hatchet tersedia sebagai perkhidmatan awan dan juga sebagai penyelesaian hos sendiri. Untuk hos sendiri, pasukan menyediakan pilihan hatchet-lite yang menggabungkan semua perkhidmatan dalaman, serta pilihan penempatan yang lebih kompleks melalui Docker Compose dan carta Helm untuk Kubernetes.

Platform ini juga menyokong pekerja webhook, membolehkan tugas mencetuskan titik akhir HTTP dan bukannya memerlukan pekerja jangka panjang yang berdedikasi. Pendekatan ini memberikan fleksibiliti yang serupa dengan perkhidmatan seperti Google Cloud Tasks, walaupun sesetengah pengguna menyatakan bahawa fungsi ini kelihatan kurang menonjol dalam dokumentasi berbanding ciri-ciri lain.

Walaupun fokus utama Hatchet adalah pada pembangun Python, TypeScript, dan Go, pasukan tersebut mengikuti permintaan untuk SDK bahasa tambahan. Seni bina platform yang menggunakan gRPC untuk komunikasi pekerja mungkin menimbulkan cabaran untuk integrasi API langsung tanpa menggunakan SDK rasmi.

Memandangkan pengurusan tugas latar belakang terus menjadi komponen kritikal dalam seni bina aplikasi moden, pendekatan Hatchet yang menggabungkan kebolehpercayaan PostgreSQL dengan ciri-ciri pengorkestraan lanjutan menjadikannya pilihan yang menarik untuk pasukan pembangunan yang ingin menskalakan keupayaan pemprosesan latar belakang mereka.

Rujukan: Run Background Tasks at Scale