All Products
Search
Document Center

Microservices Engine:Mengelola konkurensi dan prioritas pekerjaan di SchedulerX

Last Updated:Mar 12, 2026

Saat periode penjadwalan puncak, lonjakan pekerjaan yang dimulai secara bersamaan dapat membebani sumber daya backend dan menyebabkan kegagalan. SchedulerX menyediakan dua mekanisme untuk mencegah hal ini:

  • Concurrency limiting — Batasi jumlah pekerjaan yang berjalan secara bersamaan dalam satu aplikasi. Pekerjaan berlebih akan masuk ke antrian secara otomatis alih-alih dibuang.

  • Priority-based preemption — Tetapkan prioritas pada pekerjaan sehingga pekerjaan dengan prioritas lebih tinggi dijalankan terlebih dahulu dibandingkan pekerjaan berprioritas lebih rendah ketika slot antrian tersedia.

Gunakan kedua mekanisme ini secara terpisah atau gabungkan keduanya untuk membangun priority queue yang menjaga stabilitas sistem sekaligus memastikan pekerjaan penting dijalankan terlebih dahulu.

Kapan menggunakan masing-masing mekanisme

SkenarioPendekatan yang direkomendasikanMengapa
Ratusan pekerjaan batch harian dimulai pukul 00.00 dan membebani sistemHanya concurrency limitingMeratakan eksekusi dengan mengantrekan pekerjaan berlebih
Sinkronisasi data real-time harus dijalankan sebelum laporan harianConcurrency limiting + priority-based preemptionPekerjaan berprioritas tinggi menggantikan pekerjaan berprioritas rendah dalam antrian
Penjadwalan burst selama jam sibuk, tetapi setiap pekerjaan selesai dengan cepatHanya concurrency limitingMencegah kehabisan sumber daya tanpa menambah kompleksitas prioritas
Workload campuran di mana beberapa pekerjaan sensitif terhadap waktu dan yang lain tidakConcurrency limiting + priority-based preemptionMenjamin pekerjaan yang sensitif terhadap waktu mendapatkan slot berikutnya yang tersedia

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Kelompok aplikasi SchedulerX. Lihat Create an application group

  • Setidaknya satu pekerjaan yang telah dibuat dalam kelompok aplikasi tersebut

Tetapkan batas konkurensi untuk aplikasi

Batasi jumlah pekerjaan yang berjalan secara konkuren dalam satu aplikasi. Ketika batas tercapai, pekerjaan baru akan menunggu dalam antrian dan tidak dibuang.

  1. Buka kelompok aplikasi Anda dan buka bagian Advanced Configuration.

  2. Aktifkan Flow Control. Secara default, Flow Control dinonaktifkan.

  3. Tetapkan parameter Number of concurrent task instances ke jumlah maksimum pekerjaan yang dapat berjalan secara bersamaan.

    Flow Control configuration

  4. Untuk memverifikasi konfigurasi, buat tiga pekerjaan dalam kelompok aplikasi, lalu klik Run once di kolom Operation untuk setiap pekerjaan.

    Three jobs created

  5. Di panel navigasi sebelah kiri, klik Instances, lalu klik tab Task instance List. Pekerjaan pertama yang dipicu (hello_jobA) sedang berjalan. Pekerjaan lainnya (hello_jobB dan hello_jobC) menunggu dalam antrian.

  6. Setelah hello_jobA selesai, hello_jobB secara otomatis berpindah dari antrian ke slot eksekusi.

Siapkan priority-based preemption

Gabungkan batas konkurensi dengan prioritas pekerjaan sehingga pekerjaan berprioritas lebih tinggi menggantikan pekerjaan berprioritas lebih rendah ketika slot antrian tersedia.

Cara kerja priority preemption

Mekanisme ini mengikuti prinsip yang sama dengan Yet Another Resource Negotiator (YARN) priority queues, di mana sumber daya dialokasikan berdasarkan tingkat prioritas pekerjaan.

YARN priority-based queue mechanism

Ketika beberapa pekerjaan dalam antrian dan sebuah slot tersedia, SchedulerX memilih pekerjaan dengan prioritas tertinggi—bukan pekerjaan yang dikirim pertama kali.

Tetapkan prioritas dan uji preemption

  1. Tetapkan prioritas untuk setiap pekerjaan. Pekerjaan dengan prioritas lebih tinggi dijadwalkan terlebih dahulu dalam aplikasi yang sama.

    Job priority configuration

  2. Aktifkan Flow Control untuk aplikasi (misalnya, dts-all.hxm) dan atur Number of concurrent task instances menjadi 1 sehingga hanya satu pekerjaan yang berjalan dalam satu waktu. Kemudian, buat tiga pekerjaan dengan prioritas tinggi, menengah, dan rendah.

    Throttling setup with priorities

  3. Picu pekerjaan dalam urutan berikut: prioritas menengah, prioritas rendah, prioritas tinggi.

  4. Klik Instances di panel navigasi sebelah kiri, lalu klik tab Task instance List. Karena tidak ada pekerjaan dalam antrian saat pekerjaan berprioritas menengah dipicu, pekerjaan tersebut langsung dijalankan.

  5. Setelah pekerjaan berprioritas menengah selesai dan slot tersedia, pekerjaan berprioritas tinggi menggantikan pekerjaan berprioritas rendah dan dijalankan berikutnya—meskipun pekerjaan berprioritas rendah dikirim lebih awal.

Catatan penggunaan

  • Throttling berbasis antrian paling efektif untuk skenario burst scheduling di mana banyak pekerjaan dipicu dalam jendela waktu singkat. Jika aplikasi Anda terus-menerus menjadwalkan pekerjaan setiap menit dengan workload berat, antrian dapat menumpuk. Untuk penjadwalan frekuensi tinggi, gunakan throttling sisi client atau tingkatkan kapasitas pemrosesan Anda sebagai gantinya.

  • Pengaturan prioritas berlaku hanya dalam satu aplikasi. Pekerjaan berprioritas tinggi di satu aplikasi tidak memengaruhi penjadwalan pekerjaan di aplikasi lain.

FAQ

Apakah pengaturan prioritas di aplikasi saya memengaruhi aplikasi lain?

Tidak. Prioritas pekerjaan hanya berlaku dalam aplikasi tempat pengaturan tersebut dikonfigurasi. Pengaturan ini tidak berdampak pada penjadwalan di aplikasi lain.

Haruskah saya menggunakan throttling berbasis antrian untuk pekerjaan yang berjalan setiap menit?

Tidak, jika workload per menitnya secara konsisten berat. Throttling berbasis antrian dirancang untuk skenario burst di mana lonjakan pekerjaan mengenai sistem sekaligus. Untuk pekerjaan per menit dengan volume tinggi yang berkelanjutan, gunakan throttling sisi client atau tingkatkan infrastruktur pemrosesan Anda agar sesuai dengan beban tersebut.

Langkah berikutnya