Seperti yang disarankan oleh artikel tingkat tinggi tentang pekerjaan latar belakang dan antrian, dyno web Anda perlu berkomunikasi dengan dyno pekerja Anda melalui mekanisme perantara (seringkali antrian).
Untuk mencapai apa yang tampaknya ingin Anda lakukan, ikuti pendekatan umum ini:
- Permintaan web diterima oleh web dyno
- Web dyno menambahkan tugas ke antrean
- Dyno pekerja menerima pekerjaan dari antrian
- Dyno pekerja menjalankan tugas, menulis kemajuan bertahap ke komponen bersama
- Jajak pendapat sisi browser meminta status pekerjaan dari web dyno
- Kueri web dyno berbagi komponen untuk kemajuan pekerjaan latar belakang dan mengirimkan status kembali ke browser
- Worker dyno menyelesaikan eksekusi pekerjaan dan menandainya sebagai selesai di komponen bersama
- Jajak pendapat sisi browser meminta status pekerjaan dari web dyno
- Kueri web dyno berbagi komponen untuk kemajuan pekerjaan latar belakang dan mengirimkan status selesai kembali ke browser
Sejauh implementasi sebenarnya, saya tidak terlalu familiar dengan library terbaik di Node.js, tetapi komponen yang merekatkan proses ini tersedia di Heroku sebagai add-on.
Antrian:AMQP adalah protokol antrean yang didukung dengan baik dan add-on CloudAMQP dapat berfungsi sebagai antrean pesan antara dyno web dan pekerja Anda.
Status bersama:Anda dapat menggunakan salah satu add-on Postgres untuk membagikan status pekerjaan yang sedang diproses atau sesuatu yang lebih berkinerja seperti Memcache atau Redis.
Jadi, untuk meringkas, Anda harus menggunakan komponen add-on perantara untuk berkomunikasi antara dynos di Heroku. Meskipun pendekatan ini melibatkan sedikit lebih banyak rekayasa, hasilnya adalah arsitektur yang dipisahkan dengan benar dan dapat diskalakan.