Temporal¶
En este artículo
Información
Temporal es una plataforma de código abierto para construir aplicaciones distribuidas fiables. Resuelve uno de los retos clave del 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. Funcionalidades principales¶
- Orquestación de flujos de trabajo (Workflow Orchestration): Proporciona una ejecución robusta de procesos de negocio de larga duración. Gestiona automáticamente los fallos y los reintentos, garantizando la finalización de las tareas.
- Transacciones distribuidas: Garantiza la ejecución consistente de operaciones entre diferentes servicios sin necesidad de utilizar bloqueos distribuidos.
- Tiempos de espera y programación (Timeouts and Scheduling): Permite establecer temporizadores y programar tareas con alta precisión, incluso para procesos largos.
- Escalabilidad: Admite el escalado horizontal para manejar altas cargas. Los componentes pueden escalarse de forma independiente.
- Depuración histórica (Historical Debugging): Preserva el historial de ejecución de los procesos, lo que permite el análisis y la depuración de los flujos de trabajo.
- Versionado: Admite actualizaciones seguras de los flujos de trabajo sin interrumpir las tareas en ejecución.
- Observabilidad: Se integra con sistemas de monitorización y trazado para el control de la aplicación.
- Multi-tenancy: 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 | PEDIR |
Información
Para obtener información sobre las funcionalidades de implementación de este software, consulte este enlace.
Primeros pasos tras 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 acceso. Los clientes de nuestra empresa gestionan el hardware a través del server management panel and API — Invapi.
Tras seguir el enlace de la etiqueta webpanel, se abrirá una ventana de autorización.
Los datos de autorización pueden encontrarse en la pestaña "Configuration" >> Tags del panel de gestión del servidor o en el correo electrónico enviado:
- Enlace para acceder al panel de gestión de Temporal mediante interfaz web: en la etiqueta webpanel;
- Login y Password para gestionar el servidor: se proporcionan en un correo electrónico tras la entrega del servidor.
Componentes principales con interfaz web:
| Name | Local address and port | External address |
|---|---|---|
| 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 |
Pantalla de inicio y navegación¶
Tras seguir el enlace de la etiqueta webpanel, se abrirá la interfaz web de Temporal:

La pantalla principal muestra una lista de flujos de trabajo (Workflows) en el namespace 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 las diferentes secciones del sistema;
- Top bar muestra el namespace 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 (Workflow Process):
- 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
-
Visualización y filtrado de procesos:
- Utilice el botón
Filterpara seleccionar procesos basados en varios criterios; - Elija cualquier proceso de la tabla para ver información detallada.
- Utilice el botón
-
Ejemplos de código:
- Acceda a los ejemplos de integración mediante los 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 la configuración:
- Selector de UTC en la esquina superior derecha para cambios de zona horaria;
- El botón
(Gear) está destinado a acceder a los ajustes adicionales de la interfaz.
Casos de uso típicos:
- Monitorización de procesos: Comprobació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: Iniciar, pausar y cancelar procesos;
- Desarrollo de nuevos procesos: Uso de ejemplos de código para crear flujos de trabajo personalizados.
Nota
Puede encontrar información detallada sobre el uso de Temporal en la documentación oficial para desarrolladores.
Probar Temporal con Go (Opcional)¶
Información
A continuación se detalla 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 para ejecutar de forma fiable procesos de negocio de larga duración con gestión automática de fallos. El patrón Saga aborda el problema de la atomicidad de las transacciones en sistemas distribuidos mediante un mecanismo de acciones compensatorias.
1. Instalar Go¶
Antes de comenzar las pruebas, instale Go en el servidor:
Actualizar las listas de paquetes
Instalar dependencias Descargar la última versión de Go (a fecha de este escrito, es la 1.22.1) Extraer el archivo en/usr/local Configurar las variables de entorno Activar los cambios en la sesión actual Verificar la instalación 2. Clonar el repositorio de ejemplos de Temporal¶
Ir al directorio personal (home)
Clonar el repositorio de ejemplos de Go Navegar al directorio de ejemplos3. Probar utilizando el ejemplo Saga¶
El patrón Saga se utiliza para la gestión de transacciones distribuidas, garantizando la capacidad de revertir (compensar) en caso de errores.
Estructura del ejemplo Saga
saga/
├── worker/main.go # Proceso Worker que gestiona las tareas
├── start/main.go # Inicializa el proceso worker
├── 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 worker (ejecutar en la primera terminal):
El worker se registrará con Temporal y esperará una tarea. Aparecerán mensajes de log sobre los intentos de obtener tareas. -
Iniciar el starter (ejecutar en la segunda terminal):
El starter inicia el proceso de transferencia de dinero de una cuenta a otra.
Resultado esperado:
En los logs del worker, 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;
- Ejecución de las acciones compensatorias:
- Devolución de fondos a la cuenta original;
- Cancelación del retiro de dinero.
4. Verificar los resultados mediante 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 workflow con ID
transfer-money-workflow; - Verá el historial completo de ejecución del workflow, incluyendo todas las actividades y acciones compensatorias:

Información
En la interfaz web de Temporal, verá que el transfer-money-workflow tiene estado de "Failed.". Esto no es un error en la configuración o ejecución de la prueba, sino el comportamiento esperado para el ejemplo Saga. Este ejemplo está diseñado específicamente para demostrar el mecanismo de compensación al encontrar un error. La actividad StepWithError genera intencionadamente un error tras 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 tras detectar el error.
Realizar un pedido de un servidor Temporal vía API¶
Para instalar este software utilizando la API, siga esta instrucción.