Scenariusze usługi Azure Functions
Często tworzymy systemy reagujące na serię zdarzeń krytycznych. Niezależnie od tego, czy tworzysz internetowy interfejs API, odpowiadasz na zmiany bazy danych, przetwarzasz strumienie zdarzeń lub komunikaty, usługa Azure Functions może służyć do ich implementowania.
W wielu przypadkach funkcja integruje się z szeregiem usług w chmurze w celu zapewnienia zaawansowanych funkcji implementacji. Poniżej przedstawiono typowy (ale w żaden sposób wyczerpujący) zestaw scenariuszy dla usługi Azure Functions.
Wybierz język programowania w górnej części artykułu.
Przetwarzanie przekazywania plików
Istnieje kilka sposobów użycia funkcji do przetwarzania plików w kontenerze magazynu obiektów blob lub poza nim. Aby dowiedzieć się więcej na temat opcji wyzwalania w kontenerze obiektów blob, zobacz Praca z obiektami blob w dokumentacji najlepszych rozwiązań.
Na przykład w rozwiązaniu handlu detalicznego system partnerski może przesyłać informacje o katalogu produktów jako pliki do magazynu obiektów blob. Za pomocą funkcji wyzwalanej przez obiekt blob można weryfikować, przekształcać i przetwarzać pliki w głównym systemie podczas ich przekazywania.
Poniższe samouczki używają wyzwalacza obiektu blob (opartego na usłudze Event Grid) do przetwarzania plików w kontenerze obiektów blob:
Na przykład użycie wyzwalacza obiektu blob z subskrypcją zdarzeń w kontenerach obiektów blob:
[FunctionName("ProcessCatalogData")]
public static async Task Run([BlobTrigger("catalog-uploads/{name}", Source = BlobTriggerSource.EventGrid, Connection = "<NAMED_STORAGE_CONNECTION>")]Stream myCatalogData, string name, ILogger log)
{
log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myCatalogData.Length} Bytes");
using (var reader = new StreamReader(myCatalogData))
{
var catalogEntry = await reader.ReadLineAsync();
while(catalogEntry !=null)
{
// Process the catalog entry
// ...
catalogEntry = await reader.ReadLineAsync();
}
}
}
Przesyłanie strumieniowe i przetwarzanie zdarzeń w czasie rzeczywistym
Tak wiele danych telemetrycznych jest generowanych i zbieranych z aplikacji w chmurze, urządzeń IoT i urządzeń sieciowych. Usługa Azure Functions może przetwarzać te dane niemal w czasie rzeczywistym jako ścieżkę gorącą, a następnie przechowywać je w usłudze Azure Cosmos DB do użycia na pulpicie nawigacyjnym analizy.
Funkcje mogą również używać wyzwalaczy zdarzeń o małych opóźnieniach, takich jak Event Grid, i danych wyjściowych czasu rzeczywistego, takich jak SignalR, do przetwarzania danych niemal w czasie rzeczywistym.
Na przykład użycie wyzwalacza usługi Event Hubs do odczytu z centrum zdarzeń i powiązania wyjściowego w celu zapisu w centrum zdarzeń po debatowaniu i przekształcaniu zdarzeń:
[FunctionName("ProcessorFunction")]
public static async Task Run(
[EventHubTrigger(
"%Input_EH_Name%",
Connection = "InputEventHubConnectionString",
ConsumerGroup = "%Input_EH_ConsumerGroup%")] EventData[] inputMessages,
[EventHub(
"%Output_EH_Name%",
Connection = "OutputEventHubConnectionString")] IAsyncCollector<SensorDataRecord> outputMessages,
PartitionContext partitionContext,
ILogger log)
{
var debatcher = new Debatcher(log);
var debatchedMessages = await debatcher.Debatch(inputMessages, partitionContext.PartitionId);
var xformer = new Transformer(log);
await xformer.Transform(debatchedMessages, partitionContext.PartitionId, outputMessages);
}
- Przesyłanie strumieniowe na dużą skalę za pomocą usług Azure Event Hubs, Functions i Azure SQL
- Przesyłanie strumieniowe na dużą skalę za pomocą usług Azure Event Hubs, Functions i Cosmos DB
- Przesyłanie strumieniowe na dużą skalę za pomocą usługi Azure Event Hubs z producentem platformy Kafka, usługą Functions z wyzwalaczem platformy Kafka i usługą Cosmos DB
- Przesyłanie strumieniowe na dużą skalę za pomocą usług Azure IoT Hub, Functions i Azure SQL
- Wyzwalacz usługi Azure Event Hubs dla usługi Azure Functions
- Wyzwalacz platformy Apache Kafka dla usługi Azure Functions
Uczenie maszynowe i AI
Oprócz przetwarzania danych usługa Azure Functions może służyć do wnioskowania na temat modeli. Rozszerzenie powiązania usługi Azure OpenAI umożliwia łatwe integrowanie funkcji i zachowań usługi Azure OpenAI z wykonywaniem kodu funkcji.
Funkcje mogą łączyć się z zasobami openAI, aby włączyć uzupełnianie tekstu i czatu, korzystać z asystentów i korzystać z osadzania i wyszukiwania semantycznego.
Funkcja może również wywoływać model TensorFlow lub usługi Azure AI do przetwarzania i klasyfikowania strumienia obrazów.
- Samouczek: uzupełnianie tekstu przy użyciu interfejsu Azure OpenAI
- Przykład: przekazywanie plików tekstowych i uzyskiwanie dostępu do danych przy użyciu różnych funkcji openAI
- Przykład: podsumowanie tekstu przy użyciu usługi AI Cognitive Language Service
- Przykład: uzupełnianie tekstu przy użyciu usługi Azure OpenAI
- Przykład: zapewnianie umiejętności asystenta w modelu
- Przykład: generowanie osadzania
- Przykład: korzystanie z wyszukiwania semantycznego
- Samouczek: uzupełnianie tekstu przy użyciu interfejsu Azure OpenAI
- Przykład: uzupełnianie tekstu przy użyciu usługi Azure OpenAI
- Przykład: zapewnianie umiejętności asystenta w modelu
- Przykład: generowanie osadzania
- Przykład: korzystanie z wyszukiwania semantycznego
- Samouczek: uzupełnianie tekstu przy użyciu interfejsu Azure OpenAI
- Samouczek: stosowanie modeli uczenia maszynowego w usłudze Azure Functions przy użyciu języka Python i biblioteki TensorFlow
- Samouczek: wdrażanie wstępnie wytrenowanego modelu klasyfikacji obrazów w usłudze Azure Functions przy użyciu rozwiązania PyTorch
- Przykład: uzupełnianie tekstu przy użyciu usługi Azure OpenAI
- Przykład: zapewnianie umiejętności asystenta w modelu
- Przykład: generowanie osadzania
- Przykład: korzystanie z wyszukiwania semantycznego
- Przykład: czat przy użyciu elementu ChatGPT
- Przykład: LangChain z usługą Azure OpenAI i ChatGPT
- Samouczek: uzupełnianie tekstu przy użyciu interfejsu Azure OpenAI
- Przykład: uzupełnianie tekstu przy użyciu usługi Azure OpenAI
- Przykład: zapewnianie umiejętności asystenta w modelu
- Przykład: generowanie osadzania
- Przykład: korzystanie z wyszukiwania semantycznego
Uruchamianie zaplanowanych zadań
Funkcje umożliwiają uruchamianie kodu na podstawie zdefiniowanego harmonogramu cron.
Dowiedz się, jak utworzyć funkcję w witrynie Azure Portal, która jest uruchamiana zgodnie z harmonogramem.
Na przykład baza danych klienta usług finansowych może być analizowana pod kątem zduplikowanych wpisów co 15 minut, aby uniknąć komunikacji wychodzącej do tego samego klienta.
[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */15 * * * *")]TimerInfo myTimer, ILogger log)
{
if (myTimer.IsPastDue)
{
log.LogInformation("Timer is running late!");
}
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
// Perform the database deduplication
}
Tworzenie skalowalnego internetowego interfejsu API
Funkcja wyzwalana przez protokół HTTP definiuje punkt końcowy HTTP. Te punkty końcowe uruchamiają kod funkcji, który może łączyć się z innymi usługami bezpośrednio lub przy użyciu rozszerzeń powiązań. Punkty końcowe można tworzyć w internetowym interfejsie API.
Możesz również użyć punktu końcowego funkcji wyzwalanej przez protokół HTTP jako integracji elementu webhook, takiego jak elementy webhook usługi GitHub. W ten sposób można tworzyć funkcje przetwarzające dane ze zdarzeń usługi GitHub. Aby dowiedzieć się więcej, zobacz Monitorowanie zdarzeń usługi GitHub przy użyciu elementu webhook w usłudze Azure Functions.
Przykłady można znaleźć w następujących tematach:
[FunctionName("InsertName")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
[CosmosDB(
databaseName: "my-database",
collectionName: "my-container",
ConnectionStringSetting = "CosmosDbConnectionString")]IAsyncCollector<dynamic> documentsOut,
ILogger log)
{
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
string name = data?.name;
if (name == null)
{
return new BadRequestObjectResult("Please pass a name in the request body json");
}
// Add a JSON document to the output container.
await documentsOut.AddAsync(new
{
// create a random ID
id = System.Guid.NewGuid().ToString(),
name = name
});
return new OkResult();
}
- Artykuł: Tworzenie bezserwerowych interfejsów API w programie Visual Studio przy użyciu usługi Azure Functions i integracji usługi API Management
- Trenowanie: uwidacznianie wielu aplikacji funkcji jako spójny interfejs API przy użyciu usługi Azure API Management
- Przykład: zaimplementuj wzorzec geode, wdrażając interfejs API w regionach rozproszonych platformy Azure.
- Wyzwalacz HTTP usługi Azure Functions
- Przykład: aplikacja internetowa z interfejsem API języka C# i usługą Azure SQL DB w usłudze Static Web Apps i Functions
- Wyzwalacz HTTP usługi Azure Functions
Tworzenie bezserwerowego przepływu pracy
Funkcje są często składnikiem obliczeniowym w topologii przepływu pracy bezserwerowego, takiego jak przepływ pracy usługi Logic Apps. Można również tworzyć długotrwałe aranżacje przy użyciu rozszerzenia Durable Functions. Aby uzyskać więcej informacji, zobacz Durable Functions overview (Omówienie rozszerzenia Durable Functions).
Reagowanie na zmiany bazy danych
Istnieją procesy, w których może być konieczne rejestrowanie, inspekcja lub wykonywanie innych operacji podczas przechowywania zmian danych. Wyzwalacze funkcji zapewniają dobry sposób otrzymywania powiadomień o zmianach danych w celu zainicjowania takiej operacji.
Rozważ następujące przykłady:
- Artykuł: Łączenie usługi Azure Functions z usługą Azure Cosmos DB przy użyciu programu Visual Studio Code
- Artykuł: Łączenie usługi Azure Functions z usługą Azure SQL Database przy użyciu programu Visual Studio Code
- Artykuł: Czyszczenie bazy danych Azure SQL Database przy użyciu usługi Azure Functions
Tworzenie niezawodnych systemów komunikatów
Usługi Functions z usługami obsługi komunikatów platformy Azure umożliwiają tworzenie zaawansowanych rozwiązań do obsługi komunikatów opartych na zdarzeniach.
Można na przykład użyć wyzwalaczy w kolejkach usługi Azure Storage jako sposobu łączenia szeregu wykonań funkcji. Możesz też użyć kolejek i wyzwalaczy usługi Service Bus dla systemu zamawiania online.
W poniższym artykule pokazano, jak zapisywać dane wyjściowe w kolejce magazynu.
W tych artykułach pokazano, jak wyzwalać z kolejki lub tematu usługi Azure Service Bus.