Saya sedang dalam tahap desain proyek di mana pengguna akhir akan mengirimkan permintaan dari halaman web yang akan memunculkan pekerjaan proses asinkron yang berjalan lama. Apakah ada "praktik terbaik" untuk masalah ini? Apakah layanan web dan broker layanan adalah cara yang baik untuk pergi? Apakah antrian pengiriman pesan Microsoft berlaku di sini?
web-development
async
John Ruf
sumber
sumber
Jawaban:
Saya tidak tahu tentang "praktik terbaik". Saya tahu kesalahan paling umum.
Kesalahan Pertama: DOS Yourself
Anda menggunakan webhandler untuk memproses pekerjaan yang sudah berjalan lama. Ini bisa buruk atau sangat buruk tergantung pada persentase klik Anda yang menjadi pekerjaan lama, berapa lama mereka berjalan dan berapa banyak lalu lintas berkelanjutan yang Anda dapatkan.
Anda ingin memastikan bahwa Anda tidak mendapatkan lebih dari 1 pekerjaan jangka panjang dalam periode waktu yang dibutuhkan untuk menyelesaikan pekerjaan jangka panjang itu. Jika Anda melakukannya, Anda DOS sendiri. Ini juga akan semakin buruk semakin banyak lalu lintas yang Anda dapatkan dengan asumsi persentase dan waktu tetap konsisten. Itu salah satu masalah yang memaksakan diri membatasi pertumbuhan lalu lintas.
Kesalahan Kedua: Pemijahan dari webhandler
Memunculkan proses dari penangan web untuk menangani proses yang berjalan lama bisa rumit, dan akibatnya juga rentan kesalahan.
Pilihan
Saya biasanya menggunakan
at(1)
untuk memisahkan secara bersih dari webhandler tanpa forking.Anda juga dapat menggunakan implementasi polling dengan
cron
.Anda dapat berkomunikasi dengan proses server lain yang menangani pemrosesan. Komunikasi itu dapat dilakukan dengan
sockets
,,pipes
atau abstraksi tingkat yang lebih tinggi seperti panggilan http REST atau routing pesan antrian.sumber
Saya kira Anda berbicara tentang lebih dari beberapa menit.
Jika beberapa menit, Anda bisa meluncurkan utas pekerja di latar belakang dan menampilkan beberapa kemajuan pada UI. Banyak aplikasi web menggunakan metode itu.
Jika lebih dari, katakan 5 menit, Anda mungkin ingin mendelegasikan tugas ke layanan khusus. Salah satu contohnya adalah laporan yang dihasilkan oleh Google Analytics.
Antrian Microsoft Messaging dapat digunakan untuk mengirimkan informasi dari suatu sistem ke sistem lain, atau komponen ke komponen lain.
sumber