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
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.
- 1. Lepiej używać zależności zadań lub task.doLast w Gradle?
- 2. Menedżer kolejek zadań z interfejsem RPC
- 3. Kolejka zadań w pliku node.js
- 4. Czy mogę używać org.apache.http.client.HttpClient w silniku aplikacji Google?
- 5. xstream na silniku aplikacji Google
- 6. Lepiej używać plików wielojęzycznych lub 1?
- 7. Czy lepiej jest używać monady State lub rekurencyjnie przekazywać stan?
- 8. Czy lepiej byłoby używać Asp.net mvc lub usług internetowych?
- 9. Czy lepiej używać Bitmapy lub EncodedImage w BlackBerry?
- 10. Redis: jak (lub powinienem) usunąć kanały pubsub
- 11. Parsowanie JSON na silniku aplikacji Google (java)
- 12. Czy lepiej jest używać funkcji .delegate()?
- 13. Framework prędkości na silniku aplikacji Google
- 14. Praca z subdomeną w silniku aplikacji Google
- 15. Lepiej używać dyktafonu klawiszy całkowitych lub bardzo długiej listy?
- 16. OAuth w silniku aplikacji Google
- 17. Płaszczyzna HTML5: lepiej rysować ponownie obiekty lub używać bitmap?
- 18. Jak używać kolejek priorytetowych w Scali?
- 19. Które lepiej używać w CSS, procentach lub pikselach?
- 20. Czy lepiej jest zadeklarować zmienną wewnątrz lub na zewnątrz pętli?
- 21. jqGrid lub dataTable, które lepiej?
- 22. Dobry sposób na generowanie identyfikatorów GUID na silniku aplikacji?
- 23. Google PubSub - Zliczanie wiadomości w temacie
- 24. CSS: Wydajność, lepiej używać calc lub pozycji absolutnej
- 25. Czy lepiej używać aliasów kolumn z słowem kluczowym AS lub bez niego?
- 26. Sterowanie pamięcią podręczną w silniku aplikacji Google
- 27. Izolacja transakcji w silniku aplikacji Google
- 28. Wiele kolejek kompilacji w Jenkins
- 29. Czy mogę uruchomić php mysql w silniku aplikacji Google?
- 30. Czy istnieje sposób, aby skomentować lub lepiej zorganizować plik bower.json?
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
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). –
Edytowałem moją oryginalną odpowiedź, aby dołączyć dodatkowe informacje. –