Lire en anglais

Partager via


Démarrage rapide : Définir une application Durable Functions de façon à utiliser le fournisseur de stockage Netherite

Utilisez Durable Functions, une fonctionnalité d’Azure Functions, pour écrire des fonctions avec état dans un environnement serverless. Durable Functions gère l’état, les points de contrôle et les redémarrages dans votre application.

Durable Functions offre plusieurs fournisseurs de stockage, également appelés back-ends, pour le stockage de l’orchestration et de l’état d’exécution de l’entité. Par défaut, les nouveaux projets sont configurés pour utiliser le fournisseur Stockage Azure. Dans ce guide de démarrage rapide, vous allez configurer une application Durable Functions de façon à utiliser le fournisseur de stockage Netherite.

Note

  • Netherite a été conçu et développé par Microsoft Research pour des scénarios à haut débit. Dans certains tests de référence, le débit a augmenté de plus d’un ordre de grandeur en comparaison avec le fournisseur Stockage Azure par défaut. Pour plus d’informations sur les cas d’utilisation du fournisseur de stockage Netherite, consultez la documentation relative aux fournisseurs de stockage.

  • La migration des données du hub de tâches entre les fournisseurs de stockage n’est actuellement pas prise en charge. Les applications de fonction comportant déjà des données d’exécution partent d’un nouveau hub de tâches vide après avoir basculé vers le back-end Netherite. De même, le contenu du hub de tâches créé avec MSSQL ne peut pas être conservé si vous basculez vers un autre fournisseur de stockage.

  • Actuellement, le back-end Netherite n’est pas pris en charge par Durable Functions lors de l’exécution sur le plan Flex Consumption.

Prérequis

Au cours des étapes suivantes, il est supposé que vous partez d’une application Durable Functions existante dont vous connaissez le fonctionnement.

Plus spécifiquement, ce guide de démarrage rapide implique que vous avez déjà effectué les opérations suivantes :

  • Vous avez créé un projet Azure Functions sur votre ordinateur local.
  • Vous avez ajouté Durable Functions à votre projet avec une fonction d’orchestrateur et une fonction cliente qui la déclenche.
  • Vous avez configuré le projet pour le débogage local.
  • Vous avez appris à déployer un projet Azure Functions sur Azure.

Si ces prérequis ne sont pas satisfaits, nous vous recommandons de commencer par l’un des guides de démarrage rapide suivants :

Ajouter l’extension Netherite (.NET uniquement)

Note

Si votre application utilise des bundles d’extensions, ignorez cette section. Les bundles d’extensions suppriment la nécessité d’une gestion manuelle des extensions.

Tout d’abord, installez la dernière version de l’extension du fournisseur de stockage Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Netherite à partir de NuGet. Pour .NET, vous incluez généralement une référence à celle-ci dans votre fichier .csproj et générez le projet.

Pour installer l’extension, vous pouvez utiliser la commande CLI Azure Functions Core Tools suivante :

Invite de commandes Windows
func extensions install --package <package name depending on your worker model> --version <latest version>

Pour plus d’informations sur l’installation des extensions Azure Functions avec l’interface CLI Core Tools, consultez func extensions install.

Configurer local.settings.json pour le développement local

Le back-end Netherite nécessite une chaîne de connexion à Azure Event Hubs pour s’exécuter sur Azure. Toutefois, pour le développement local, la fourniture de la chaîne "SingleHost" contourne la nécessité d’utiliser Event Hubs.

Dans local.settings.json, affectez la valeur SingleHost à EventHubsConnection :

JSON
{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "EventHubsConnection": "SingleHost",
    "FUNCTIONS_WORKER_RUNTIME": "<dependent on your programming language>"
  }
}

Note

La valeur de FUNCTIONS_WORKER_RUNTIME dépend du langage de programmation que vous utilisez. Pour plus d’informations, consultez les informations de référence sur le runtime.

Mise à jour de host.json

Modifiez la section du fournisseur de stockage dans le fichier host.json afin d’affecter la valeur Netherite à type :

JSON
{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "storageProvider": {
        "type": "Netherite"
        }
    }
  }
}

Cet extrait de code est une configuration de base. Plus tard, vous souhaiterez peut-être ajouter des paramètres.

Tester les topologies localement

Votre application est maintenant prête pour le développement local. Vous pouvez démarrer l’application de fonction pour la tester. L’une des façons de démarrer l’application consiste à exécuter func host start à la racine de votre application, puis à exécuter une fonction d’orchestrateur de base.

Pendant l’exécution de l’application de fonction, Netherite publie des informations de chargement sur ses partitions actives dans un tableau Stockage Azure nommé DurableTaskPartitions. Vous pouvez utiliser l’Explorateur Stockage Azure pour vérifier qu’il fonctionne comme prévu. Si Netherite s’exécute correctement, la table n’est pas vide. Pour obtenir un exemple, consultez la capture d’écran suivante.

Capture d’écran montrant des données dans la table DurableTaskPartitions dans l’Explorateur Stockage Azure.

Pour plus d’informations sur le contenu de la table DurableTaskPartitions, consultez Table de partition.

Note

Si vous utilisez l’émulation de stockage local sur un système d’exploitation Windows, vérifiez que vous utilisez l’émulateur de stockage Azurite et non le composant antérieur Émulateur de stockage Azure. L’émulation de stockage local avec Netherite est prise en charge uniquement via Azurite.

Exécuter l’application dans Azure

Pour exécuter votre application dans Azure, créez une application Azure Functions.

Configurer Event Hubs

Vous devez configurer un espace de noms Event Hubs pour exécuter Netherite dans Azure. Vous pouvez également le configurer si vous préférez utiliser Event Hubs pendant le développement local.

Note

Un espace de noms Event Hubs entraîne un coût continu, qu’il soit utilisé ou non par Durable Functions. Microsoft propose un compte d’abonnement Azure gratuit de 12 mois si vous explorez Azure pour la première fois.

Créer un espace de noms Event Hubs

Effectuez les étapes pour créer un espace de noms Event Hubs dans le portail Azure. Lorsque vous créez l’espace de noms, vous pouvez être invité à :

  • Sélectionnez un groupe de ressources. Utiliser le même groupe de ressources que celui utilisé par l’application de fonction.
  • Sélectionner un plan et approvisionner des unités de débit. Sélectionnez les valeurs par défaut. Vous pouvez modifier ce paramètre ultérieurement.
  • Sélectionner une durée de rétention. Sélectionnez la valeur par défaut. Ce paramètre n’a aucun effet sur Netherite.

Obtenir la chaîne de connexion Event Hubs

Pour obtenir la chaîne de connexion de votre espace de noms Event Hubs, accédez à votre espace de noms Event Hubs dans le portail Azure. Sélectionnez Stratégies d’accès partagé, puis RootManagedSharedAccessKey. Un champ nommé Clé primaire de chaîne de connexion s’affiche, et la valeur de ce champ est la chaîne de connexion.

Capture d’écran montrant la recherche de la clé primaire de chaîne de connexion dans le portail Azure.

Ajouter la chaîne de connexion comme paramètre d’application

Maintenant, ajoutez votre chaîne de connexion en tant que paramètre d’application dans votre application de fonction. Pour l’ajouter dans le portail Azure, accédez à l’affichage de votre application de fonction, sélectionnez Configuration, puis Nouveau paramètre d’application. Vous pouvez affecter EventHubsConnection pour mapper à votre chaîne de connexion. Les captures d’écran suivantes montrent quelques exemples.

Capture d’écran montrant l’affichage de l’application de fonction, Configuration et la sélection de Nouveau paramètre d’application.

Capture d’écran montrant l’entrée d’EventHubsConnection comme nom, et la chaîne de connexion comme valeur.

Activer la mise à l’échelle du runtime (Elastic Premium uniquement)

Note

Ignorez cette section si votre application n’est pas dans le plan Elastic Premium.

Si votre application s’exécute sur le plan Elastic Premium, nous vous recommandons d’activer la surveillance de la mise à l’échelle au moment de l’exécution pour une meilleure mise à l’échelle. Accédez à Configuration, sélectionnez Paramètres d’exécution de la fonction, et définissez Surveillance de l’échelle d’exécution sur Activé.

Capture d’écran montrant comment activer la surveillance de l’échelle d’exécution dans le portail.

Vérifiez que votre application utilise une architecture 64 bits (Windows uniquement)

Note

Ignorez cette section si votre application s’exécute sur Linux.

Netherite nécessite une architecture 64 bits. À compter d’Azure Functions V4, 64 bits doit être la valeur par défaut. Vous pouvez généralement valider ce paramètre dans le portail Azure. Sous Configuration, sélectionnez Paramètres généraux, puis vérifiez que Plateforme est définie sur 64 bits. Si cette option n’est pas visible dans le portail, il est possible que vous utilisiez déjà une plateforme 64 bits. Par exemple, les applications Linux n’affichent pas ce paramètre, car elles prennent uniquement en charge l’architecture 64 bits.

Capture d’écran montrant comment configurer un runtime pour utiliser 64 bits dans le portail.

Déployer

Vous pouvez maintenant déployer votre code dans le cloud et y exécuter vos tests ou votre charge de travail. Pour vérifier que Netherite est correctement configuré, vous pouvez consulter les métriques d’Event Hubs dans le portail pour vous assurer qu’il y a une activité.

Note

Pour plus d’informations sur le déploiement de votre projet sur Azure, passez en revue les instructions de déploiement correspondant à votre langage de programmation dans Prérequis.

  • Pour plus d’informations sur l’architecture, la configuration et le comportement de la charge de travail de Netherite, y compris les tests de référence de performances, nous vous recommandons de consulter la documentation de Netherite.