Styl architektury Internet-kolejka-proces roboczy

Azure App Service

Podstawowe składniki tej architektury to fronton internetowy, obsługujący żądania klienta, oraz proces roboczy, który wykonuje zadania wsadowe i zadania intensywnie obciążające zasoby oraz uruchamia długotrwałe przepływy pracy. Fronton internetowy komunikuje się z procesem roboczym za pośrednictwem kolejki komunikatów.

Logical diagram of Web-Queue-Worker architecture style.

Oto inne, typowe składniki tej architektury:

  • Co najmniej jedna baza danych.
  • Pamięć podręczna umożliwiająca szybkie odczytywanie wartości z bazy danych.
  • Sieć CDN do udostępniania zawartości statycznej.
  • Usługi zdalne, takie jak usługa poczty e-mail lub usługa wiadomości SMS. Często te funkcje są udostępniane przez osoby trzecie.
  • Dostawca tożsamości do uwierzytelniania.

Element internetowy i proces roboczy są bezstanowe. Stan sesji można przechowywać w rozproszonej pamięci podręcznej. Wszystkie długotrwałe zadania są wykonywane asynchronicznie przez proces roboczy. Proces roboczy może być wyzwalany przez komunikaty w kolejce lub uruchamiany zgodnie z harmonogramem przetwarzania wsadowego. Proces roboczy jest opcjonalny. Jeśli nie ma operacji długotrwałych, proces roboczy można pominąć.

Fronton może się składać z internetowego interfejsu API. Po stronie klienta z internetowego interfejsu API może korzystać aplikacja jednostronicowa, która używa wywołań AJAX, lub natywna aplikacja kliencka.

Kiedy stosować tę architekturę

Architektura Internet-kolejka-proces roboczy jest zwykle implementowana przy użyciu zarządzanych usług obliczeniowych — usługi Azure App Service lub Azure Cloud Services.

Ten styl architektury sprawdza się w następujących scenariuszach:

  • Aplikacje ze stosunkowo prostą domeną.
  • Aplikacje z długotrwałymi przepływami pracy lub operacjami wsadowymi.
  • Sytuacje, w których lepszym rozwiązaniem jest użycie usług zarządzanych zamiast infrastruktury jako usługi (IaaS).

Świadczenia

  • Stosunkowo prosta, przejrzysta architektura.
  • Łatwość wdrażania i zarządzania.
  • Wyraźna separacja problemów.
  • Rozdzielenie frontonu i procesu roboczego dzięki komunikatom asynchronicznym.
  • Możliwość niezależnego skalowania frontonu i procesu roboczego.

Wyzwania

  • Nieuważne projektowanie frontonu i procesu roboczego może spowodować, że staną się one dużymi, monolitycznymi składnikami, co będzie utrudniać ich utrzymywanie i aktualizowanie.
  • Współdzielenie schematów danych lub modułów kodu przez fronton i proces roboczy może prowadzić do występowania ukrytych zależności.
  • Fronton internetowy może działać nieprawidłowo po pomyślnym utrwalonej bazie danych, ale przed emitowaniem komunikatów do kolejki. Może to spowodować ewentualne problemy ze spójnością, ponieważ proces roboczy nie będzie wykonywał swojej części logiki. Techniki, takie jak wzorzec transakcyjnej skrzynki odbiorczej, mogą służyć do rozwiązywania tego problemu, ale wymagają zmiany routingu komunikatów wychodzących na pierwszą pętlę wstecz przez oddzielną kolejkę. Jedną z bibliotek, która zapewnia obsługę tej techniki, jest sesja transakcyjna NServiceBus.

Najlepsze rozwiązania

Architektura Internet-kolejka-proces roboczy w usłudze Azure App Service

W tej sekcji opisano zalecaną architekturę Internet-kolejka-proces roboczy, która korzysta z usługi Azure App Service.

Physical diagram of Web-Queue-Worker architecture style.

Pobierz plik programu Visio z tą architekturą.

Przepływ pracy

Aby uzyskać więcej informacji, zobacz architekturę referencyjną aplikacji internetowej usługi App Service oraz sposób tworzenia aplikacji biznesowych opartych na komunikatach za pomocą sieci NServiceBus i usługi Azure Service Bus.

Inne uwagi

  • Nie wszystkie transakcje muszą przechodzić przez kolejkę i proces roboczy, a następnie trafiać do magazynu. Fronton internetowy może bezpośrednio wykonywać proste operacje odczytu/zapisu. Procesy robocze obsługują zadania intensywnie obciążające zasoby oraz długotrwałe przepływy pracy. W niektórych przypadkach proces roboczy nie jest potrzebny.

  • Wbudowana funkcja automatycznego skalowania usługi App Service umożliwia skalowanie w poziomie liczby wystąpień maszyn wirtualnych. Jeśli wzorzec obciążenia aplikacji jest przewidywalny, utwórz harmonogram automatycznego skalowania. W przeciwnym razie użyj reguł automatycznego skalowania opartych na metrykach.

  • Rozważ umieszczenie aplikacji internetowej i aplikacji funkcji w oddzielnych planach usługi App Service. W ten sposób można je skalować niezależnie.

  • Utwórz oddzielne plany usługi App Service dla celów produkcyjnych i testowych. W przypadku używania tego samego planu w środowisku produkcyjnym i testowym testy będą uruchamiane na maszynach wirtualnych w środowisku produkcyjnym.

  • Wdrożeniami zarządzaj za pomocą miejsc wdrożenia. Ta metoda umożliwia wdrożenie zaktualizowanej wersji w miejscu przejściowym, a następnie zamianę na nową wersję. Umożliwia to również powrót do poprzedniej wersji, jeśli wystąpi problem z aktualizacją.