Co to jest trwałe zadanie?

Durable Task to implementacja durable execution firmy Microsoft, branżowe podejście do uczynienia zwykłego kodu odpornym na błędy poprzez automatyczne zachowywanie jego postępu. To szkielet do budowania odpornych na błędy przepływów pracy i orkiestracji w postaci zwykłego kodu. Zamiast zarządzać skomplikowaną logiką powtórek, maszynami stanów czy kolejkami wiadomości, piszesz logikę biznesową jako proste funkcje, a Durable Task zajmuje się za Ciebie utrwalaniem stanu, automatycznym odzyskiwaniem i koordynacją rozproszoną.

Trwałe przepływy pracy zadań mogą być uruchamiane przez godziny, dni, a nawet miesiące, niezawodnie wznawiając się od ostatniego ukończonego kroku w razie awarii, ponownego uruchomienia lub wdrożenia na nowo. Typowe przypadki użycia obejmują transakcje rozproszone, orkiestrację sztucznej inteligencji wielu agentów, potoki przetwarzania danych i zarządzanie infrastrukturą.

Reszta tego artykułu wyjaśnia, gdzie Durable Task się mieści, jakie języki i modele hostingowe obsługuje oraz jak jest zorganizowany, abyś mógł zdecydować, jak tworzyć za jego pomocą aplikacje odporne na awarie.

Co obejmuje Durable Task

Durable Task obejmuje:

Kluczowe przypadki użycia zadan trwałych

Użyj rozszerzenia Durable Task, gdy aplikacja wymaga niezawodnej, długotrwałej aranżacji przepływu pracy w usługach rozproszonych. Typowe scenariusze obejmują:

  • Procesy długotrwałe: Durable Task może zarządzać stanem i postępem procesów działających przez dłuższy czas, mimo przerw lub błędów. Przykłady obejmują przetwarzanie zamówień, potoki danych, trenowanie modelu uczenia maszynowego i długotrwałe symulacje.
  • Scenariusze równoległe i fan-out/fan-in: Durable Task może koordynować pracę, która rozdziela zadania między wielu pracowników działających równolegle na różnych maszynach, a następnie agregować wyniki. Przykłady obejmują przetwarzanie obrazów, zadania redukcji mapy i przepływy pracy ETL.
  • Organizowanie mikrousług i interfejsów API: Rozszerzenie Durable Task może koordynować pracę między usługami rozproszonymi, interfejsami API i maszynami ze złożonym przepływem sterowania i obsługą błędów. Durable Task obsługuje również rozproszone transakcje wykorzystujące wzór saga, gdzie każdy krok ma logikę kompensacyjną, która uruchamia się automatycznie, jeśli kolejny etap się nie powiedzie.
  • Automatyzacja procesów biznesowych: Durable Task może automatyzować złożone, deterministyczne procesy biznesowe, które obejmują wiele kroków, zależności, udział człowieka w procesie oraz obsługę błędów przez długi czas. Przykłady obejmują zarządzanie łańcuchem dostaw, przegląd dokumentów, dołączanie klientów i weryfikację tożsamości.
  • Automatyzacja infrastruktury: Durable Task umożliwia zarządzanie aprowizowaniem, konfiguracją i wdrażaniem infrastruktury za pomocą złożonych zależności i obsługi błędów. Przykłady obejmują zarządzanie zasobami w chmurze i procesy CI/CD.
  • Orkiestracja wieloagentowa: Durable Task może koordynować pracę wielu agentów AI, zapewniając niezawodną realizację zadań zgodnie z założeniami w długich horyzontach czasowych oraz efektywne wykorzystanie tokenów w złożonych, wieloetapowych procesach AI. Przykłady obejmują agentów sztucznej inteligencji na potrzeby głębokich badań, kodowania i obsługi klienta.

Wspólnym motywem w tych scenariuszach jest to, że obejmują pracę zbyt złożoną, zbyt długotrwałą lub zbyt rozproszoną, by można nią niezawodnie zarządzać kodem ad hoc. Durable Task zapewnia podstawowe gwarancje — trwałość, odporność na błędy i koordynację stanową — dzięki czemu możesz wyrazić tę pracę jako prosty kod.

Obsługiwane języki i modele hostingu Durable Task

Durable Task obsługuje wiele języków programowania w dwóch modelach hostingowych: Azure Functions (poprzez rozszerzenie Durable Functions) oraz samodzielnie hostowane (poprzez samodzielne SDK Durable Task). Model hostingu Azure Functions zapewnia w pełni zarządzane, bezserwerowe środowisko obliczeniowe z wbudowanymi funkcjami skalowania i orkiestracji, podczas gdy model self-hosted obsługuje uruchamianie trwałych aplikacji na dowolnej platformie obliczeniowej, takiej jak Azure Container Apps, Azure Kubernetes Service, Azure App Service lub maszyny wirtualne.

Język Azure Functions Samodzielne hostowanie
.NET (C#/F#) Yes Yes
JavaScript/TypeScript Yes Yes
Python Yes Yes
Java Yes Yes
Go No Tak (beta)
PowerShell Yes No

Uwaga / Notatka

Durable Task SDK for Go to otwartoźródłowa beta dla aplikacji hostowanych samodzielnie łączących się z Durable Task Scheduler. Durable Functions nie obsługuje Go.

Aby uzyskać wskazówki dotyczące wyboru między Azure Functions a własnym hostem, zobacz Choose your hosting model.

Architektura trwałych zadań: SDK i backend pamięci stanowej

Rozszerzenie Durable Task ma dwie główne warstwy: zestaw SDK, który jest używany w kodzie aplikacji, oraz zaplecze magazynowania stanu, które zarządza stanem.

Trwały zestaw SDK zadań

Używasz Durable Task SDK do tworzenia orkiestracji, działań i encji w kodzie aplikacji. Wewnętrznie obsługuje mechanizmy trwałego wykonywania — odtwarzanie funkcji orchestratora, zarządzanie lokalnym kontekstem wykonawczym oraz komunikację z backendem pamięci stanowej. Durable Task oferuje kilka opcji SDK w obsługiwanych językach i w obu modelach hostingu: Azure Functions oraz self-hosted.

Aby uzyskać wskazówki dotyczące wybierania między tymi opcjami, zobacz Wybieranie modelu hostingu.

Zaplecze pamięci stanów

Zaplecze magazynu stanu zachowuje stan orkiestracji, utrzymuje historię wykonania i koordynuje rozproszone skalowanie pomiędzy instancjami obliczeniowymi.

Zalecaną opcją przechowywania stanu jest Durable Task Scheduler — w pełni zarządzana usługa Azure, stworzona specjalnie i wysoko zoptymalizowana pod kątem obciążeń Durable Task. Działa zarówno z Durable Functions, jak i samodzielnymi zestawami Durable Task SDK, i zapewnia najbardziej rozbudowany zestaw funkcji bez infrastruktury magazynowej do zarządzania.

Alternatywnie, Durable Functions obsługuje kilka opcji przechowywania typu bring-your-own (BYO). Te opcje dają większą kontrolę nad tym, gdzie zapisujesz stan, ale wymagają samodzielnego przygotowania i zarządzania infrastrukturą bazową. Zaplecza magazynu typu BYO są obecnie dostępne wyłącznie dla Durable Functions.

Aby uzyskać więcej informacji na temat opcji magazynu, zobacz Dostawcy magazynu.

Dodatkowe zasoby Durable Task

Publikacje badawcze

Microsoft opracowuje Durable Task we współpracy z Microsoft Research. W rezultacie zespół tworzy artykuły naukowe i artefakty, w tym:

Omówienie wideo

Poniższy film podkreśla zalety Durable Functions:

Następne kroki