Както подсказва статията на високо ниво за фонови задачи и опашка, вашият уеб динамометр ще трябва да комуникира с работния ви динамометр чрез междинен механизъм (често опашка).
За да постигнете това, което изглежда, че се надявате да направите, следвайте този общ подход:
- Уеб заявката е получена от уеб dyno
- Уеб dyno добавя задание към опашката
- Worker dyno получава задание извън опашката
- Worker dyno изпълнява задача, записвайки нарастващ напредък към споделен компонент
- Проучването от страна на браузъра изисква състоянието на заданието от уеб dyno
- Уеб dyno запитва споделен компонент за напредъка на фоновата работа и изпраща състоянието обратно на браузъра
- Worker dyno завършва изпълнението на заданието и го маркира като завършено в споделения компонент
- Проучването от страна на браузъра изисква състоянието на заданието от уеб dyno
- Уеб dyno запитва споделен компонент за напредъка на фоновата работа и изпраща завършеното състояние обратно на браузъра
Що се отнася до реалното внедряване, не съм много запознат с най-добрите библиотеки в Node.js, но компонентите, които свързват този процес заедно, са налични в Heroku като добавки.
Опашка:AMQP е добре поддържан протокол за опашка и добавката CloudAMQP може да служи като опашка за съобщения между вашия уеб и работния динамометр.
Споделено състояние:Можете да използвате една от добавките на Postgres, за да споделите състоянието на работа, която се обработва, или нещо по-ефективно, като Memcache или Redis.
Така че, за да обобщим, трябва да използвате междинен допълнителен компонент за комуникация между dynos на Heroku. Въпреки че този подход включва малко повече инженерство, резултатът е правилно отделена и мащабируема архитектура.