Co to jest trwałe zadanie?

Durable Task to implementacja trwałego wykonania przez Microsoft, branżowe podejście do uczynienia zwykłego kodu odpornym na błędy poprzez automatyczne utrzymywanie postępów. To ramy do budowania odpornych na błędy przepływów pracy i orkiestracji jako zwykły kod. 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ę 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 budować w nim aplikacje odporne na błędy.

Co obejmuje trwałe zadanie

Trwałe zadanie 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: Trwałe zadanie 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 rozprasza się na 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, utrzymanie człowieka w pętli 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 niezawodne przestrzeganie zadań przez długi czas i efektywne wykorzystanie tokenów dla złożonych, wieloetapowych procesów 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 dotyczą one pracy zbyt złożonej, zbyt długotrwałej lub zbyt rozproszonej, 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, czyli maszyny wirtualne.

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

Uwaga / Notatka

Durable Task Go SDK jest również dostępny jako opcja open-source wspierana przez społeczność dla scenariuszy hostowanych samodzielnie, ale jest w fazie eksperymentalnej i nie jest jeszcze zalecana do użytku produkcyjnego.

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 oraz dwóch modelach hostingowych: 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 pamięci masowej 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 udostępniania 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