Temporal¶
Dans cet article
Information
Temporal est une plateforme open-source pour construire des applications distribuées fiables. Elle répond à l'un des défis clés 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 sur la gestion des pannes d'infrastructure.
Temporal. Fonctionnalités principales¶
- Orchestration de workflows : Fournit une exécution robuste de processus métier de longue durée. Gère automatiquement les pannes et les tentatives, garantissant l'achèvement des tâches.
- Transactions distribuées : Assure une exécution cohérente des opérations à travers différents services sans utiliser de verrous distribués.
- Délais d'expiration et planification : Permet de définir des minuteries et de planifier des tâches avec une grande précision, même pour les processus longs.
- Évolutivité : Prend en charge l'évolutivité 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.
- Gestion des versions : 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-locataire : 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 (GB) | Min HDD/SSD (GB) | Domaine personnalisé | Actif |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 266 | Temporal | Ubuntu 22.04 | + | + | + | + | 2 | 2 | 30 | Non | COMMANDER |
- Dépendances préinstallées :
- Docker ;
- Git (pour le clonage de référentiels).
- Composants supplémentaires :
- Nginx (pour le proxy inverse) ;
- Postgresql (base de données) ;
- Elasticsearch (pour le stockage de l'historique des workflows) ;
- Grafana (pour la surveillance) ;
- Prometheus (pour la collecte des métriques) ;
- Jaeger (pour la traçabilité distribuée) ;
- 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
Composants principaux avec une interface web :
| Nom | Adresse et port locaux | 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 |
Prise en main après le déploiement de Temporal¶
Après le paiement, une notification concernant la disponibilité du serveur sera envoyée à votre adresse e-mail enregistrée. Elle contiendra l'adresse IP du VPS et les identifiants de connexion pour l'accès. Les clients de notre entreprise gèrent le matériel via le panneau de gestion des serveurs et l'API — Invapi.
Après avoir suivi le lien depuis la balise webpanel, une fenêtre d'autorisation s'ouvrira.
Les données d'autorisation peuvent être trouvées dans l'onglet Configuration >> Tags du panneau de gestion du serveur ou dans l'e-mail envoyé :
- Lien pour accéder au panneau de gestion Temporal via l'interface web : dans la balise webpanel ;
- Login et Password pour la gestion du serveur : fournis par e-mail lors de la remise du serveur.
Écran d'accueil et navigation¶
Après avoir suivi le lien depuis la balise webpanel, l'interface web Temporal s'ouvrira :

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 sur la gauche permet d'accéder aux différentes sections du système ;
- Top bar affiche l'espace de noms actuel (par défaut, "default") ;
- Bouton
Start Workflowdans 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
-
Démarrage d'un nouveau processus de workflow :
- Cliquez sur le bouton
Start Workflowdans le coin supérieur droit ; - Remplissez les paramètres nécessaires dans le formulaire qui apparaît ;
- Confirmez la création du processus.
- Cliquez sur le bouton
-
Affichage et filtrage des processus :
- Utilisez le bouton
Filterpour sélectionner des processus en fonction de divers critères ; - Choisissez n'importe quel processus dans le tableau pour afficher des informations détaillées.
- Utilisez le bouton
-
Exemples de code :
- Accédez aux exemples d'intégration via les liens vers les référentiels GitHub :
- samples-go - exemples Go ;
- samples-java - exemples Java ;
- samples-typescript - exemples TypeScript ;
- samples-python - exemples Python ;
- samples-dotnet - exemples .NET ;
- samples-php - exemples PHP.
-
Modification des paramètres :
- Sélecteur UTC dans le coin supérieur droit pour changer de fuseau horaire ;
- Bouton
(Gear) destiné à accéder aux paramètres supplémentaires de l'interface.
Cas d'utilisation typiques :
- Surveillance des processus : Vérification régulière de l'état des tâches en cours ;
- Débogage : Analyse détaillée des erreurs en cas de panne ;
- Gestion de la charge de travail : Démarrage, mise en pause et annulation des processus ;
- Développement de nouveaux processus : Utilisation d'exemples de code pour créer des workflows personnalisés.
Remarque
Des informations détaillées sur l'utilisation de Temporal peuvent être trouvées dans la documentation officielle pour les développeurs.
Test de Temporal avec Go (Facultatif)¶
Information
Ci-dessous se trouve le processus d'installation des composants nécessaires et de test de Temporal à l'aide d'un exemple de modèle 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 pannes. Le modèle 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
Installer les dépendances Télécharger la dernière version de Go (à ce jour, il s'agit de la 1.22.1) Extraire l'archive dans/usr/local Définir les variables d'environnement Activer les modifications dans la session actuelle Vérifier l'installation 2. Cloner le référentiel d'exemples Temporal¶
Aller dans le répertoire personnel
Cloner le référentiel d'exemples Go Naviguer vers le répertoire des exemples3. Tester à l'aide de l'exemple Saga¶
Le modèle Saga est utilisé pour gérer les transactions distribuées, garantissant la possibilité de revenir en arrière (compenser) en cas d'erreur.
Structure de l'exemple Saga
saga/
├── worker/main.go # Processus worker gérant les tâches
├── start/main.go # Initialise le processus worker
├── activity.go # Définition des actions (retrait/dépôt de fonds)
├── workflow.go # Définition de la séquence d'actions
└── shared.go # Définitions communes
Exécuter le test :
-
Démarrer le worker (exécuter dans le premier terminal) :
Le worker s'enregistrera auprès de Temporal et attendra une tâche. Des messages journal concernant les tentatives d'obtention de tâches apparaîtront. -
Démarrer le starter (exécuter dans le deuxième terminal) :
Le starter initie le processus de transfert d'argent d'un compte à un autre.
Résultat attendu :
Dans les journaux du worker, vous verrez :
- Retrait d'argent du compte 001-001 ;
- Dépôt d'argent sur le compte 002-002 ;
- Une erreur spécialement créée dans l'activité
StepWithError; - Trois tentatives d'exécution de l'activité défectueuse ;
- Lancement d'actions compensatoires :
- Retour des fonds vers le compte d'origine ;
- Annulation du retrait d'argent.
4. Vérifier les résultats via l'interface web Temporal¶
- Ouvrez l'interface web Temporal dans votre navigateur (via la balise webpanel) ;
- Dans l'interface, trouvez le workflow avec l'ID
transfer-money-workflow; - Vous verrez l'historique d'exécution complet du workflow, y compris toutes les activités et actions compensatoires :

Information
Dans l'interface web Temporal, vous verrez que le transfer-money-workflow a un statut de "Failed." Il ne s'agit pas d'une erreur dans la configuration ou l'exécution du test, mais d'un comportement attendu pour l'exemple Saga. Cet exemple est spécialement conçu pour démontrer le mécanisme de compensation lors de la rencontre d'une erreur. L'activité StepWithError génère intentionnellement une erreur après avoir effectué 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.