sql >> Databáze >  >> NoSQL >> Redis

Jak komunikovat Web and Worker dynos s Node.js na Heroku?

Jak naznačuje článek na vysoké úrovni o úlohách na pozadí a řazení do front, váš webový dynos bude muset komunikovat s vaším pracovním dynos prostřednictvím zprostředkujícího mechanismu (často fronty).

Chcete-li dosáhnout toho, co zní, jako byste doufali, postupujte podle tohoto obecného přístupu:

  • Webový požadavek přijímá webový dyno
  • Web dyno přidá úlohu do fronty
  • Worker dyno obdrží úlohu mimo frontu
  • Worker dyno provede úlohu a zapíše přírůstkový postup do sdílené komponenty
  • Dotazování na straně prohlížeče požaduje stav úlohy z webového dyno
    • Web dyno se dotazuje sdílené komponenty na průběh úlohy na pozadí a odešle stav zpět do prohlížeče
  • Worker dyno dokončí provádění úlohy a označí ji jako dokončenou ve sdílené komponentě
  • Dotazování na straně prohlížeče požaduje stav úlohy z webového dyno
    • Web dyno se dotazuje na sdílenou komponentu pro průběh úlohy na pozadí a odešle dokončený stav zpět do prohlížeče

Pokud jde o skutečnou implementaci, nejsem příliš obeznámen s nejlepšími knihovnami v Node.js, ale komponenty, které spojují tento proces dohromady, jsou k dispozici na Heroku jako doplňky.

Fronta:AMQP je dobře podporovaný protokol fronty a doplněk CloudAMQP může sloužit jako fronta zpráv mezi vaším webem a pracovním dynos.

Sdílený stav:Ke sdílení stavu zpracovávané úlohy nebo něčeho výkonnějšího, jako je Memcache nebo Redis, můžete použít jeden z doplňků Postgres.

Abychom to shrnuli, musíte použít přechodnou doplňkovou komponentu pro komunikaci mezi dynos na Heroku. I když tento přístup vyžaduje trochu více inženýrství, výsledkem je správně oddělená a škálovatelná architektura.



  1. vložit novou hodnotu do vnitřního pole mongodb - mongodb/php

  2. Jak zkontrolovat připojení k mongodb

  3. Uložte vnořený hash v redis prostřednictvím aplikace node.js

  4. Optimalizace výkonu Nodejs