Temporal¶
In dit artikel
Informatie
Temporal is een open-source platform voor het bouwen van betrouwbare gedistribueerde applicaties. Het lost een van de belangrijkste uitdagingen in moderne ontwikkeling op: het waarborgen van de uitvoering van kritieke processen in onstabiele omgevingen. Het stelt ontwikkelaars in staat zich te concentreren op bedrijfslogica in plaats van het afhandelen van infrastructuurfouten.
Temporal. Belangrijkste functies¶
- Workflow-orchestratie: Biedt robuuste uitvoering van langlopende bedrijfsprocessen. Handelt automatisch fouten en opnieuw pogingen af en garandeert het voltooien van taken.
- Gedistribueerde transacties: Zorgt voor consistente uitvoering van bewerkingen over verschillende services zonder gebruik te maken van gedistribueerde vergrendelingen.
- Time-outs en planning: Staart het instellen van timers en het plannen van taken toe met hoge precisie, zelfs voor lange processen.
- Schaalbaarheid: Ondersteunt horizontale schaalbaarheid om hoge belastingen aan te kunnen. Componenten kunnen onafhankelijk van elkaar worden geschaald.
- Historisch debuggen: Bewaart de geschiedenis van de procesuitvoering, waardoor analyse en debuggen van workflows mogelijk zijn.
- Versiebeheer: Ondersteunt veilige workflow-updates zonder onderbreking van lopende taken.
- Waarnembaarheid: Integreert met monitoring- en tracing-systemen voor applicatiebeheer.
- Multi-tenancy: Biedt isolatie en resourcebeheer voor meerdere teams of applicaties.
Implementatiefuncties¶
| ID | Softwarenaam | Compatibel OS | VM | BM | VGPU | GPU | Min CPU (Kernen) | Min RAM (GB) | Min HDD/SSD (GB) | Aangepast Domein | Actief |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 266 | Temporal | Ubuntu 22.04 | + | + | + | + | 2 | 2 | 30 | Nee | BESTELLEN |
- Vooraf geïnstalleerde afhankelijkheden:
- Docker;
- Git (voor het klonen van repositories).
- Aanvullende componenten:
- Nginx (voor reverse proxy);
- Postgresql (database);
- Elasticsearch (voor het opslaan van workflowgeschiedenis);
- Grafana (voor monitoring);
- Prometheus (voor het verzamelen van metrieken);
- Jaeger (voor gedistribueerd tracing);
- OpenTelemetry Collector (voor het verzamelen van telemetrie).
- Projectmap:
/root/docker-compose - Aanpassingsbestand:
/root/docker-compose/docker-compose-multirole_edited.yaml
Belangrijkste componenten met een webinterface:
| Naam | Lokaal adres en poort | Extern adres |
|---|---|---|
| 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 |
Aan de slag na het implementeren van Temporal¶
Na betaling ontvangt u een melding over de gereedheid van de server op uw geregistreerde e-mailadres. Deze bevat het VPS-IP-adres en inloggegevens voor toegang. Klanten van ons bedrijf beheren de hardware via het serverbeheerpaneel en de API — Invapi.
Na het volgen van de link van de webpanel-tag opent er een autorisatievenster.
Autorisatiegegevens zijn te vinden in het tabblad Configuration >> Tags van het serverbeheerpaneel of in de verzonden e-mail:
- Link voor toegang tot het Temporal-beheerpaneel via de webinterface: in de webpanel-tag;
- Login en Wachtwoord voor het beheren van de server: verstrekt in een e-mail bij de overdracht van de server.
Startscherm en navigatie¶
Na het volgen van de link van de webpanel-tag opent de Temporal-webinterface:

Het hoofdscherm toont een lijst met workflows (Workflows) in de geselecteerde namespace. Het bericht "No Workflows running in this Namespace" geeft aan dat er op dat moment geen actieve processen zijn.
Belangrijkste elementen van de interface:
- Sidebar aan de linkerkant biedt toegang tot verschillende secties van het systeem;
- Top bar toont de huidige namespace (standaard "default");
Start Workflow-knop in de rechterbovenhoek voor het starten van nieuwe processen;- Proces tabel met kolommen Status, Workflow ID, Run ID, Type, Start, Eind.
Functionele mogelijkheden
-
Een nieuw workflowproces starten:
- Klik op de
Start Workflow-knop in de rechterbovenhoek; - Vul de benodigde parameters in het verschijnende formulier in;
- Bevestig het aanmaken van het proces.
- Klik op de
-
Processen bekijken en filteren:
- Gebruik de
Filter-knop om processen te selecteren op basis van verschillende criteria; - Kies een willekeurig proces uit de tabel voor het bekijken van gedetailleerde informatie.
- Gebruik de
-
Codevoorbeelden:
- Toegang tot integratievoorbeelden via GitHub-repository-links:
- samples-go - Go-voorbeelden;
- samples-java - Java-voorbeelden;
- samples-typescript - TypeScript-voorbeelden;
- samples-python - Python-voorbeelden;
- samples-dotnet - .NET-voorbeelden;
- samples-php - PHP-voorbeelden.
-
Instellingen wijzigen:
- UTC-selector in de rechterbovenhoek voor het wijzigen van de tijdzone;
(Tandwiel)-knop is bedoeld voor toegang tot aanvullende interface-instellingen.
Typische gebruiksscenario's:
- Processen monitoren: Regelmatig de status van lopende taken controleren;
- Debuggen: Gedetailleerde analyse van fouten bij falen;
- Workloads beheren: Processen starten, pauzeren en annuleren;
- Nieuwe processen ontwikkelen: Codevoorbeelden gebruiken om aangepaste workflows te maken.
Opmerking
Gedetailleerde informatie over het gebruik van Temporal is te vinden in de officiële ontwikkelaarsdocumentatie.
Temporal testen met Go (optioneel)¶
Informatie
Hieronder staat het proces voor het installeren van benodigde componenten en het testen van Temporal met behulp van een Saga-patroonvoorbeeld in Go. Deze test demonstreert de belangrijkste capaciteit van het platform: het betrouwbare uitvoeren van langlevende bedrijfsprocessen met automatische afhandeling van fouten. Het Saga-patroon lost het probleem van transactie-atOMICiteit in gedistribueerde systemen op door middel van een mechanisme van compenserende acties.
1. Go installeren¶
Voordat u met het testen begint, installeert u Go op de server:
Pakketlijsten bijwerken
Afhankelijkheden installeren Download de nieuwste versie van Go (op het moment van schrijven is dit 1.22.1) Archive uitpakken naar/usr/local Omgevingsvariabelen instellen Wijzigingen activeren in de huidige sessie Installatie verifiëren 2. De Temporal-voorbeeldenrepository klonen¶
Ga naar de home-directory
Kloon de Go-voorbeeldenrepository Navigeer naar de voorbeeldenmap3. Testen met het Saga-voorbeeld¶
Het Saga-patroon wordt gebruikt voor het beheren van gedistribueerde transacties, waarbij het mogelijk is om terug te draaien (compenseren) bij fouten.
Structuur van het Saga-voorbeeld
saga/
├── worker/main.go # Workerproces dat taken afhandelt
├── start/main.go # Initialiseert het workerproces
├── activity.go # Definitie van acties (geld opnemen/storten)
├── workflow.go # Definitie van de reeks acties
└── shared.go # Algemene definities
Test uitvoeren:
-
Start de worker (uitvoeren in het eerste terminalvenster):
De worker registreert zich bij Temporal en wacht op een taak. Er verschijnen logberichten over pogingen om taken op te halen. -
Start de starter (uitvoeren in het tweede terminalvenster):
De starter start het proces van het overmaken van geld van de ene account naar de andere.
Verwacht resultaat:
In de logs van de worker ziet u:
- Geldopname van account 001-001;
- Geldstorting op account 002-002;
- Een speciaal gecreëerde fout in activiteit
StepWithError; - Drie pogingen om de defecte activiteit uit te voeren;
- Start van compenserende acties:
- Terugbetaling van het geld naar het oorspronkelijke account;
- Annulering van de geldopname.
4. Resultaten verifiëren via de Temporal-webinterface¶
- Open de Temporal-webinterface in uw browser (via de webpanel-tag);
- Zoek in de interface de workflow met ID
transfer-money-workflow; - U ziet de volledige uitvoeringsgeschiedenis van de workflow, inclusief alle activiteiten en compenserende acties:

Informatie
In de Temporal-webinterface ziet u dat de transfer-money-workflow een status heeft van "Failed." Dit is geen fout in de configuratie of uitvoering van de test, maar het verwachte gedrag voor het Saga-voorbeeld. Dit voorbeeld is speciaal ontworpen om het compensatiemechanisme te demonstreren bij het tegenkomen van een fout. De activiteit StepWithError genereert opzettelijk een fout na het uitvoeren van de opname- en stortingsbewerkingen, waarmee wordt gedemonstreerd hoe compenserende acties worden gestart. De "Failed"-status in dit voorbeeld geeft aan dat het compensatiemechanisme correct werkte en dat het systeem naar een consistente staat is teruggekeerd na het detecteren van de fout.