9

Przenosimy nasze apisy z Pythona do węzła. Użyliśmy kolejek zadań w naszym apisie do obsługi aplikacji Python. Czy przy użyciu narzędzia node.js, które jest teraz obsługiwane przez aparat aplikacji, sugerujesz, abyśmy używali kolejek zadań lub chmurki pub/sub do zadań? Jakie są plusy i minusy dla każdego z nich, w tym niezawodność, przenośność itp.z node.js na silniku aplikacji, czy lepiej używać kolejek zadań lub pub/sub

Odpowiedz

10

Kolejki zadań i Pub/Sub mają różne modele przesyłania komunikatów i dlatego są przydatne w różnych sytuacjach. Podczas gdy Pub/Sub używa modelu wydawcy-subskrybenta, Kolejka zadań gromadzi i dystrybuuje zadania dla pracowników.

Użycie Pub/Sub do dystrybucji zadań nie byłoby tak naturalne, jak przy użyciu kolejki zadań. Wszyscy subskrybenci tematu Pub/Sub widzą wszystkie wiadomości, podczas gdy w kolejce zadań wiadomość jest zużywana tylko przez jednego odbiorcę. Z drugiej strony kolejki zadań nie są zaprojektowane w celu nadawania wiadomości.

Obecnie kolejki zadań działają najlepiej w App Engine. Chociaż istnieje eksperymentalny interfejs API REST kolejki zadań, kolejki zadań są macierzyste i działają najlepiej w App Engine. Pub/Sub może być używany z dowolnego miejsca. Podczas gdy zadania zadań zadań są automatycznie dystrybuowane do instancji App Engine, musisz wykonać dodatkową konfigurację do używania Pub/Sub do komunikacji wewnątrz aplikacji.

Kolejki zadań zapewniają również specjalne funkcje, takie jak opóźnianie wiadomości.

Edit:

Niestety wygląda na to, kolejek zadań Push nie są jeszcze gotowe na node.js App Engine wykonywania.

Rozwiązanie Pub/Sub, które Kamal wskazuje poniżej, jest miłym trikiem do symulacji równoważenia obciążenia opartego na mechanizmach przeciągania. Używanie Pub/Sub jest prawdopodobnie właściwą drogą, jeśli jesteś w porządku z trybem przeciągania, chociaż chciałbym wyjaśnić, że interfejs API AE do zadań losowych jest dostępny (https://github.com/google/google-api-nodejs-client/tree/master/apis) dla node.js, gdy używasz pull.

Jedną z rzeczy do rozważenia, czy używasz pull czy push, jest to, że zasady ponownej próby są nieco inne. Elementy kolejki zadań można skonfigurować do ponawiania w nieskończoność, podczas gdy ja myślę, że Pub/Sub przestanie próbować dostarczyć wiadomość, jeśli nie zostanie potwierdzona po 7 dniach.

Inne rzeczy do rozważenia, jeśli zdecydujesz się skorzystać z trybu Push PubSub są:

  • Niektóre cechą kolejce zadań AE, takich jak opóźnienie wiadomości lub configuromg wiadomości z konkretnego ponownie lub czas żyć ustawienia nie są dostępne w PubSub
  • Musisz znać punkty końcowe dla instancji, które mają zużywać zadania z kolejki.

W osobnej notatce (w odpowiedzi na pierwszą odpowiedź poniżej) wygląda na to, że integracja memcache jest obsługiwana. Ma stronę z dokumentami pod adresem https://cloud.google.com/appengine/docs/flexible/nodejs/caching-application-data.

+0

Czy aplikacja node.js działająca w App Engine ma łatwy dostęp i działa bezproblemowo z kolejkami zadań (push, a nie pull)? Przykładowa aplikacja Google do zadań robotów z plikiem node.js używa Pub/Sub, dlatego też pytam. Jeszcze nie widziałem dokumentów Google dotyczących kolejki zadań node.js ani integracji memcache. – philipfc

+0

Możliwe jest ładowanie komunikatów salda przez wielu subskrybentów. Wszystkie _subscriptions_ w temacie Pub/Sub widzą wszystkie wiadomości. Jednak wielu subskrybentów może pobierać wiadomości z tej samej subskrypcji, co zwykle dostarcza każdą wiadomość do jednego z nich (należy jednak pamiętać, że Pub/Sub ma gwarantowane _at-lease-once_ delivery). –

+0

Edytowałem moją oryginalną odpowiedź, aby dołączyć dodatkowe informacje. –