Aller au contenu

Temporal

Dans cet article

Information

Temporal est une plateforme open‑source pour construire des applications distribuées fiables. Elle résout l'un des principaux défis du développement moderne : garantir l'exécution de processus critiques dans des environnements instables. Elle permet aux développeurs de se concentrer sur la logique métier plutôt que de gérer les pannes d'infrastructure.

Temporal. Caractéristiques principales

  • Orchestration de workflows : exécution robuste de processus métier de longue durée. Gère automatiquement les échecs et les reprises, garantissant la complétion des tâches.
  • Transactions distribuées : assure l'exécution cohérente des opérations sur différents services sans utiliser de verrous distribués.
  • Timeouts et planification : permet de définir des minuteries et de planifier des tâches avec une haute précision, même pour de longs processus.
  • Scalabilité : prend en charge l'extension horizontale pour gérer des charges élevées. Les composants peuvent être mis à l'échelle indépendamment.
  • Débogage historique : conserve l'historique de l'exécution des processus, permettant l'analyse et le débogage des workflows.
  • Versionnage : prend en charge les mises à jour sécurisées des workflows sans interrompre les tâches en cours.
  • Observabilité : s'intègre aux systèmes de surveillance et de traçage pour le contrôle de l'application.
  • Multi‑tenancy : fournit l'isolation et la gestion des ressources pour plusieurs équipes ou applications.

Fonctionnalités de déploiement

ID Nom du logiciel Système d'exploitation compatible VM BM VGPU GPU Min CPU (Cœurs) Min RAM (Go) Min HDD/SSD (Go) Actif
266 Temporal Ubuntu 22.04 + + + + 2 2 30 COMMANDER
  • Dépendances préinstallées :
  • Docker
  • Git (pour le clonage de référentiels)
  • Composants supplémentaires :
  • Nginx (pour le reverse proxy)
  • PostgreSQL (base de données)
  • Elasticsearch (pour le stockage de l'historique des workflows)
  • Grafana (pour la surveillance)
  • Prometheus (pour la collecte de métriques)
  • Jaeger (pour le traçage distribué)
  • OpenTelemetry Collector (pour la collecte de télémétrie)
  • Répertoire du projet : /root/docker-compose
  • Fichier de personnalisation : /root/docker-compose/docker-compose-multirole_edited.yaml

Principaux composants avec interface web :

Nom Adresse locale et port Adresse externe
Temporal UI localhost:8080 https://temporal{server_id_from_invapi}.hostkey.in
Grafana localhost:8085 https://temporal{server_id_from_invapi}.hostkey.in/grafana/
Prometheus localhost:9090 https://temporal{server_id_from_invapi}.hostkey.in/prometheus/
Prometheus Metrics - https://temporal{server_id_from_invapi}.hostkey.in/prometheus/metrics

Démarrage après le déploiement de Temporal

Après paiement, une notification concernant la disponibilité du serveur sera envoyée à votre adresse e‑mail enregistrée. Elle comprendra l’adresse IP du VPS et les identifiants de connexion. Les clients de notre entreprise gèrent le matériel via le panneau de gestion du serveur et l’APIInvapi.

Après avoir suivi le lien provenant de la balise webpanel, une fenêtre d’autorisation s’ouvrira.

Les données d’autorisation se trouvent dans l’onglet Info >> Tags du panneau de gestion du serveur ou dans l’e‑mail envoyé : - Lien d’accès au panneau de gestion Temporal via l’interface web : dans la balise webpanel; - Login et Password pour gérer le serveur : fournis dans un e‑mail lors de la remise du serveur.

Écran d'accueil et navigation

Après avoir suivi le lien provenant de la balise webpanel, l'interface web Temporal s'ouvrira :

Temporal UI

L'écran principal affiche une liste de workflows (Workflows) dans l'espace de noms sélectionné. Le message « No Workflows running in this Namespace » indique l'absence de processus actifs à ce moment-là.

Éléments principaux de l'interface :

  • Sidebar à gauche fournit l'accès à différentes sections du système ;
  • Top bar affiche l'espace de noms actuel (par défaut, « default ») ;
  • Start Workflow button dans le coin supérieur droit pour démarrer de nouveaux processus ;
  • Process table avec les colonnes Status, Workflow ID, Run ID, Type, Start, End.

Capacités fonctionnelles

  1. Démarrage d'un nouveau processus de workflow :
  2. Cliquez sur le bouton Start Workflow dans le coin supérieur droit ;
  3. Remplissez les paramètres nécessaires dans le formulaire qui apparaît ;
  4. Confirmez la création du processus.

  5. Affichage et filtrage des processus :

  6. Utilisez le bouton Filter pour sélectionner les processus selon divers critères ;
  7. Choisissez n'importe quel processus dans le tableau pour consulter les informations détaillées.

  8. Exemples de code :

  9. Accédez aux exemples d'intégration via les liens vers les dépôts GitHub :

    • samples-go – Go examples ;
    • samples-java – Java examples ;
    • samples-typescript – TypeScript examples ;
    • samples-python – Python examples ;
    • samples-dotnet – .NET examples ;
    • samples-php – PHP examples.
  10. Modification des paramètres :

  11. Sélecteur UTC dans le coin supérieur droit pour les changements de fuseau horaire ;
  12. (Gear) bouton destiné à accéder aux paramètres supplémentaires de l'interface.

Cas d'utilisation typiques :

  • Monitoring Processes : vérification régulière de l'état des tâches en cours ;
  • Debugging : analyse détaillée des erreurs en cas d'échec ;
  • Managing Workloads : démarrage, pause et annulation de processus ;
  • Developing New Processes : utilisation des exemples de code pour créer des workflows personnalisés.

Note

Des informations détaillées sur l'utilisation de Temporal peuvent être trouvées dans la documentation officielle du développeur.

Tester Temporal avec Go (facultatif)

Information

Voici le processus d'installation des composants nécessaires et de test de Temporal à l'aide d'un exemple de pattern Saga en Go. Ce test démontre la capacité clé de la plateforme à exécuter de manière fiable des processus métier de longue durée avec une gestion automatique des échecs. Le pattern Saga résout le problème de l'atomicité des transactions dans les systèmes distribués grâce à un mécanisme d'actions compensatoires.

1. Installer Go

Avant de commencer les tests, installez Go sur le serveur :

Mettre à jour les listes de paquets

apt update
****Installer les dépendances****

apt install -y wget git curl
Télécharger la dernière version de Go (au moment de l'écriture, c'est 1.22.1)

wget https://golang.org/dl/go1.22.1.linux-amd64.tar.gz
Extraire l'archive vers /usr/local

tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz
Définir les variables d'environnement

echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
Activer les changements dans la session courante

source ~/.bashrc
Vérifier l'installation

go version

2. Cloner le dépôt d'exemples Temporal

Aller dans le répertoire personnel

cd ~
Cloner le dépôt d'exemples Go

git clone https://github.com/temporalio/samples-go.git
Naviguer vers le répertoire d'exemples

cd samples-go

3. Tester avec l'exemple Saga

Le modèle Saga est utilisé pour gérer les transactions distribuées, assurant la possibilité de revenir en arrière (compensations) en cas d'erreurs.

Structure de l'exemple Saga

saga/
├── worker/main.go     # Worker process handling tasks
├── start/main.go      # Initializes the worker process
├── activity.go        # Definition of actions (withdraw/deposit funds)
├── workflow.go        # Sequence of actions definition
└── shared.go          # Common definitions

Exécuter le test :

  1. Démarrer le worker (exécuter dans le premier terminal) :

    cd ~/samples-go
    go run saga/worker/main.go
    
    Le worker s'enregistrera auprès de Temporal et attendra une tâche. Des messages de journal indiquant les tentatives de récupération de tâches apparaîtront.

  2. Démarrer le starter (exécuter dans le deuxième terminal) :

    cd ~/samples-go
    go run saga/start/main.go
    
    Le starter initie le processus de transfert d'argent d'un compte à un autre.

Résultat attendu :

Dans les journaux du worker, vous verrez :

  1. Retrait d'argent du compte 001-001 ;
  2. Dépôt d'argent sur le compte 002-002 ;
  3. Une erreur spécialement créée dans l'activité StepWithError ;
  4. Trois tentatives d'exécution de l'activité défectueuse ;
  5. Lancement des actions compensatoires :
    • Retour des fonds au compte d'origine ;
    • Annulation du retrait d'argent.

4. Vérifier les résultats via l'interface web Temporal

  1. Ouvrez l'interface web Temporal dans votre navigateur (via la balise webpanel) ;
  2. Dans l'interface, trouvez le workflow avec l'ID transfer-money-workflow ;
  3. Vous verrez l'historique complet d'exécution du workflow, incluant toutes les activités et actions compensatoires :

Temporal UI

Information

Dans l'interface web Temporal, vous verrez que le transfer-money-workflow a un statut "Failed." Ce n'est pas une erreur de configuration ou d'exécution du test mais un comportement attendu pour l'exemple Saga. Cet exemple est spécialement conçu pour démontrer le mécanisme de compensation lorsqu'une erreur est rencontrée. L'activité StepWithError génère intentionnellement une erreur après les opérations de retrait et de dépôt, démontrant comment les actions compensatoires sont initiées. Le statut « Failed » dans cet exemple indique que le mécanisme de compensation a fonctionné correctement et que le système est revenu à un état cohérent après la détection de l'erreur.

Commander un serveur Temporal via l'API

Pour installer ce logiciel en utilisant l'API, suivez les instructions suivantes.

**

Certains contenus de cette page ont été créés ou traduits à l'aide de l'IA.**