Saltar a contenido

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 APIInvapi.

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:

Temporal UI

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 Workflow en la esquina superior derecha para iniciar nuevos procesos;
  • Process table con columnas Status, Workflow ID, Run ID, Type, Start, End.

Capacidades funcionales

  1. Iniciar un nuevo proceso de flujo de trabajo:

    • Haga clic en el botón Start Workflow en la esquina superior derecha;
    • Complete los parámetros necesarios en el formulario que aparece;
    • Confirme la creación del proceso.
  2. Ver y filtrar procesos:

    • Utilice el botón Filter para seleccionar procesos basándose en varios criterios;
    • Seleccione cualquier proceso de la tabla para ver información detallada.
  3. 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.
  4. 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

apt update
Instalar dependencias

apt install -y wget git curl
Descargar la última versión de Go (a fecha de esta redacción, es la 1.22.1)

wget https://golang.org/dl/go1.22.1.linux-amd64.tar.gz
Extraer el archivo en /usr/local

tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz
Establecer variables de entorno

echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
echo 'export GOPATH=$HOME/go' >> ~/.bashrc
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bashrc
Activar cambios en la sesión actual

source ~/.bashrc
Verificar instalación

go version

2. Clonar el repositorio de ejemplos de Temporal

Ir al directorio principal

cd ~
Clonar el repositorio de ejemplos de Go

git clone https://github.com/temporalio/samples-go.git
Navegar al directorio de ejemplos

cd samples-go

3. 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:

  1. Iniciar el trabajador (ejecutar en la primera terminal):

    cd ~/samples-go
    go run saga/worker/main.go
    
    El trabajador se registrará en Temporal y esperará una tarea. Aparecerán mensajes de registro sobre los intentos de obtener tareas.

  2. Iniciar el iniciador (ejecutar en la segunda terminal):

    cd ~/samples-go
    go run saga/start/main.go
    
    El iniciador inicia el proceso de transferencia de dinero de una cuenta a otra.

Resultado esperado:

En los registros del trabajador, verá:

  1. Retiro de dinero de la cuenta 001-001;
  2. Depósito de dinero en la cuenta 002-002;
  3. Un error creado específicamente en la actividad StepWithError;
  4. Tres intentos de ejecutar la actividad con error;
  5. 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

  1. Abra la interfaz web de Temporal en su navegador (a través de la etiqueta webpanel);
  2. En la interfaz, busque el flujo de trabajo con ID transfer-money-workflow;
  3. 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.

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×