Temporal¶
En este artículo
Información
Temporal es una plataforma de código abierto para crear aplicaciones distribuidas confiables. Aborda uno de los desafíos clave en el desarrollo moderno: garantizar la ejecución de procesos críticos en entornos inestables. Permite a los desarrolladores centrarse en la lógica de negocio en lugar de gestionar fallos de infraestructura.
Temporal. Características principales¶
- Orquestación de flujos de trabajo: Proporciona una ejecución robusta de procesos de negocio de larga duración. Gestiona automáticamente los fallos y reintentos, garantizando la finalización de las tareas.
- Transacciones distribuidas: Garantiza la ejecución consistente de operaciones a través de diferentes servicios sin utilizar bloqueos distribuidos.
- Tiempo de espera y programación: Permite establecer temporizadores y programar tareas con alta precisión, incluso para procesos largos.
- Escalabilidad: Admite escalado horizontal para manejar cargas elevadas. Los componentes pueden escalarse de forma independiente.
- Depuración histórica: Conserva el historial de ejecución de procesos, permitiendo el análisis y la depuración de flujos de trabajo.
- Control de versiones: Admite actualizaciones seguras de flujos de trabajo sin interrumpir las tareas en ejecución.
- Observabilidad: Se integra con sistemas de monitoreo y rastreo para el control de la aplicación.
- Multitenencia: Proporciona aislamiento y gestión de recursos para múltiples equipos o aplicaciones.
Funcionalidades de implementación¶
| ID | Nombre del software | SO compatible | VM | BM | VGPU | GPU | CPU mín. (núcleos) | RAM mín. (GB) | HDD/SSD mín. (GB) | Dominio personalizado | Activo |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 266 | Temporal | Ubuntu 22.04 | + | + | + | + | 2 | 2 | 30 | No | ORDER |
- Dependencias preinstaladas:
- Docker;
- Git (para clonar repositorios).
- Componentes adicionales:
- Nginx (para proxy inverso);
- Postgresql (base de datos);
- Elasticsearch (para almacenamiento del historial de flujos de trabajo);
- Grafana (para monitoreo);
- Prometheus (para recopilación de métricas);
- Jaeger (para rastreo distribuido);
- OpenTelemetry Collector (para recopilación de telemetría).
- Directorio del proyecto:
/root/docker-compose - Archivo de personalización:
/root/docker-compose/docker-compose-multirole_edited.yaml
Componentes principales con interfaz web:
| Nombre | Dirección y puerto local | Dirección externa |
|---|---|---|
| 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 |
Primeros pasos después de implementar Temporal¶
Tras el pago, se enviará una notificación sobre la disponibilidad del servidor a su dirección de correo electrónico registrada. Incluirá la dirección IP del VPS y las credenciales de inicio de sesión para el acceso. Los clientes de nuestra empresa gestionan el hardware a través del panel de gestión de servidores y API — Invapi.
Al hacer clic en el enlace desde la etiqueta webpanel, se abrirá una ventana de autorización.
Los datos de autorización se pueden encontrar en la pestaña Configuration >> Tags del panel de gestión de servidores o en el correo electrónico enviado:
- Enlace para acceder al panel de gestión de Temporal a través de la interfaz web: en la etiqueta webpanel;
- Login y Password para gestionar el servidor: proporcionados en un correo electrónico al entregar el servidor.
Pantalla de inicio y navegación¶
Al hacer clic en el enlace desde la etiqueta webpanel, se abrirá la interfaz web de Temporal:

La pantalla principal muestra una lista de flujos de trabajo (Workflows) en el espacio de nombres seleccionado. El mensaje "No Workflows running in this Namespace" indica la ausencia de procesos activos en ese momento.
Elementos principales de la interfaz:
- Sidebar a la izquierda proporciona acceso a diferentes secciones del sistema;
- Top bar muestra el espacio de nombres actual (por defecto, "default");
- Botón
Start Workflowen la esquina superior derecha para iniciar nuevos procesos; - Process table con columnas Status, Workflow ID, Run ID, Type, Start, End.
Capacidades funcionales
-
Iniciar un nuevo proceso de flujo de trabajo:
- Haga clic en el botón
Start Workflowen la esquina superior derecha; - Complete los parámetros necesarios en el formulario que aparece;
- Confirme la creación del proceso.
- Haga clic en el botón
-
Ver y filtrar procesos:
- Utilice el botón
Filterpara seleccionar procesos basándose en varios criterios; - Seleccione cualquier proceso de la tabla para ver información detallada.
- Utilice el botón
-
Ejemplos de código:
- Acceda a ejemplos de integración a través de enlaces al repositorio de GitHub:
- samples-go - ejemplos en Go;
- samples-java - ejemplos en Java;
- samples-typescript - ejemplos en TypeScript;
- samples-python - ejemplos en Python;
- samples-dotnet - ejemplos en .NET;
- samples-php - ejemplos en PHP.
-
Cambiar configuración:
- Selector UTC en la esquina superior derecha para cambiar la zona horaria;
- Botón
Gear destinado a acceder a configuraciones adicionales de la interfaz.
Casos de uso típicos:
- Monitoreo de procesos: Verificación regular del estado de las tareas en ejecución;
- Depuración: Análisis detallado de errores en caso de fallos;
- Gestión de cargas de trabajo: Inicio, pausa y cancelación de procesos;
- Desarrollo de nuevos procesos: Uso de ejemplos de código para crear flujos de trabajo personalizados.
Nota
Información detallada sobre el uso de Temporal se puede encontrar en la documentación oficial para desarrolladores.
Prueba de Temporal con Go (Opcional)¶
Información
A continuación se muestra el proceso para instalar los componentes necesarios y probar Temporal utilizando un ejemplo del patrón Saga en Go. Esta prueba demuestra la capacidad clave de la plataforma de ejecutar de manera confiable procesos de negocio de larga duración con manejo automático de fallos. El patrón Saga aborda el problema de la atomicidad de transacciones en sistemas distribuidos a través de un mecanismo de acciones compensatorias.
1. Instalar Go¶
Antes de comenzar las pruebas, instale Go en el servidor:
Actualizar listas de paquetes
Instalar dependencias Descargar la última versión de Go (a fecha de esta redacción, es la 1.22.1) Extraer el archivo en/usr/local Establecer variables de entorno Activar cambios en la sesión actual Verificar instalación 2. Clonar el repositorio de ejemplos de Temporal¶
Ir al directorio principal
Clonar el repositorio de ejemplos de Go Navegar al directorio de ejemplos3. Probar usando el ejemplo de Saga¶
El patrón Saga se utiliza para gestionar transacciones distribuidas, garantizando la capacidad de revertir (compensar) en caso de errores.
Estructura del ejemplo de Saga
saga/
├── worker/main.go # Proceso de trabajador que maneja tareas
├── start/main.go # Inicializa el proceso de trabajador
├── activity.go # Definición de acciones (retirar/depositar fondos)
├── workflow.go # Definición de la secuencia de acciones
└── shared.go # Definiciones comunes
Ejecutar la prueba:
-
Iniciar el trabajador (ejecutar en la primera terminal):
El trabajador se registrará en Temporal y esperará una tarea. Aparecerán mensajes de registro sobre los intentos de obtener tareas. -
Iniciar el iniciador (ejecutar en la segunda terminal):
El iniciador inicia el proceso de transferencia de dinero de una cuenta a otra.
Resultado esperado:
En los registros del trabajador, verá:
- Retiro de dinero de la cuenta 001-001;
- Depósito de dinero en la cuenta 002-002;
- Un error creado específicamente en la actividad
StepWithError; - Tres intentos de ejecutar la actividad con error;
- Lanzamiento de acciones compensatorias:
- Devolución de fondos a la cuenta original;
- Cancelación del retiro de dinero.
4. Verificar resultados a través de la interfaz web de Temporal¶
- Abra la interfaz web de Temporal en su navegador (a través de la etiqueta webpanel);
- En la interfaz, busque el flujo de trabajo con ID
transfer-money-workflow; - Verá el historial completo de ejecución del flujo de trabajo, incluidas todas las actividades y acciones compensatorias:

Información
En la interfaz web de Temporal, verá que el transfer-money-workflow tiene un estado de "Failed." Esto no es un error en la configuración o ejecución de la prueba, sino un comportamiento esperado para el ejemplo de Saga. Este ejemplo está diseñado específicamente para demostrar el mecanismo de compensación al encontrar un error. La actividad StepWithError genera intencionalmente un error después de realizar las operaciones de retiro y depósito, demostrando cómo se inician las acciones compensatorias. El estado "Failed" en este ejemplo indica que el mecanismo de compensación funcionó correctamente y el sistema volvió a un estado consistente después de detectar el error.
Solicitar un servidor Temporal a través de la API¶
Para instalar este software utilizando la API, siga esta instrucción.
Parte del contenido de esta página fue creado o traducido utilizando IA.