"Estado de tareas y gestión del ciclo de vida" para la función de descifrado Computación Capacidad de tareas asincrónicas

Introducción: En el nivel de ejecución de funciones, Function Compute también proporciona el concepto de gestión del ciclo de vida de las tareas. Los usuarios pueden determinar la lógica de ejecución cuando el sistema inicializa y recicla instancias de tareas de acuerdo con sus necesidades, para realizar un ciclo de vida de tiempo de ejecución completo. administrar Este artículo presentará los dos aspectos del estado de ejecución de tareas y la gestión del tiempo de ejecución, respectivamente.

autor: poco a poco

prefacio

Hay un concepto muy importante en el sistema de tareas, es decir, el ciclo de gestión de estado y vida de la tarea. Su esencia es la gestión del ciclo de vida de las tareas. El estado subdividido ayuda a comprender más claramente lo que está sucediendo en el sistema cuando se usa, para que pueda operarse de acuerdo con la situación comercial de manera específica. Función Compute Serverless Task proporciona una variedad de estados que se pueden consultar y proporciona puntos de tiempo para las transiciones entre estados. A nivel de ejecución de funciones, Function Compute también proporciona el concepto de gestión del ciclo de vida de las tareas. Los usuarios pueden determinar la lógica de ejecución cuando el sistema inicializa y recicla instancias de tareas de acuerdo con sus necesidades, para lograr una gestión completa del ciclo de vida del tiempo de ejecución. Este artículo presentará los dos aspectos del estado de ejecución de tareas y la gestión del tiempo de ejecución, respectivamente.

Estado de tareas y gestión del ciclo de vida

gestión de estado de tareas

1.png

Cuando un usuario envía una tarea y recibe una respuesta de envío exitosa, la tarea ha ingresado al proceso de administración del sistema de su ciclo de vida. El cambio de estado de una tarea es administrado por una máquina de estado interna y el estado externo está expuesto para admitir consultas en tiempo real. El diagrama de transición de estado completo se muestra a continuación:

2.png

Figura 1

  1. Después de que el usuario activa una tarea, la tarea se pone en cola, cambia al estado En cola y devuelve el éxito del activador;

  2. La tarea se elimina de la cola en el servicio de backend de Cómputo de funciones, y la tarea pasa al estado Eliminado de la cola;

  3. El backend verifica la configuración de la tarea. si

  4. Si el período de validez de los mensajes asincrónicos está configurado y la diferencia entre el tiempo en que el mensaje está fuera de la cola y el tiempo en que está en la cola supera el período de validez, la tarea se descarta y cambia al estado Expirado. terminación de tareas;

  5. Si la función correspondiente a la tarea ha sido eliminada, o hay un error al crear la instancia, el mensaje será descartado y la tarea cambiará a estado No válido;

  6. Después de verificar, la tarea ingresa oficialmente al estado En ejecución. En este punto, la tarea ha desencadenado la ejecución real;

  7. Después de ejecutar la tarea, cambiará a los siguientes estados de acuerdo con el retorno:

  8. Reintentando: el usuario ha configurado la cantidad de reintentos (el valor predeterminado es 3) y la ejecución de la tarea falla, ingresará al estado de reintento y luego cambiará al estado En ejecución;

  9. Failed:任务执行失败,且超过了重试次数。此时会将任务状态改为 Failed;

  10. Succeeded:任务执行成功。

  11. 如果在整个状态流转过程用户触发 Cancel,则任务会先变更为 Stopping 状态,并尝试停止任务执行。当任务停止执行成功后,任务进入 Stopped 状态。

任务运行时管理及生命周期

当任务状态进入 Running 后,任务的实际执行便已交给函数计算的运行时。在安全性方面,函数计算会按照 VM 对不同账号进行隔离,同一个账号下的函数可能运行于同一个 VM 中。VM 内有一个负责管理容器的客户端,来实际触发函数的执行,并收集执行结果。

用户的运行实例有几个不同的状态:

3.png

图 2

函数计算对上述所有实例状态变化的过程均提供接口,支持用户侧配置相应的逻辑。

  1. 创建完成 -> 执行请求阶段:支持 Initializer 功能,支持初始化实例操作。用户可以配置诸如全局变量、连接池初始化等相关操作;
  2. 执行中 -> 执行完成后 Pause 实例:支持 PreFreeze 接口,支持在函数 Pause 实例前执行用户侧的自定义逻辑;
  3. 执行中 -> 外部 cancel:函数计算会强制 Restart 用户实例,在 Restart 前支持 PreStop 接口。用户可以配置优雅停止的相关逻辑,以便支持 Cancel 时的自定义行为;
  4. 完成后 Pause -> 销毁实例:当一段时间没有请求后,函数计算将销毁实例。此时会调用 PreStop 接口,用户可以配置销毁容器的行为(如关闭连接池等)。

4.png

图 3

任务的停止操作

目前阶段函数计算支持了停止单一任务的操作。当用户操作停止时,支持配置 PreStop 接口,在停止前进行一系列的资源回收工作。停止操作用户可以使用 SDK 或控制台来进行调用。以 Go 语言为例,停止一次执行的伪代码如下所示:

import fc "github.com/aliyun/fc-go-sdk"

func CancelJob() {
    stopInput := fc.NewStopStatefulAsyncInvocationInput("ServiceName", "FunctionName", "TaskUUID")
    output, err := fcClient.StopStatefulAsyncInvocation(stopInput)
    ...
}

总结

Tarea sin servidor proporciona detalles de estado de cada tarea y persiste estos detalles en tiempo real. Los usuarios pueden consultar esta información de estado en tiempo real según sea necesario y realizar las operaciones correspondientes de acuerdo con las condiciones comerciales y de ejecución. En la fase de ejecución de una tarea, Function Compute proporciona interfaces relevantes en el proceso de transición de estado de todas las instancias y admite la lógica definida por el usuario antes y después de la ejecución de la tarea. En combinación con la función PreStop y la función Cancelar tarea de detención, los usuarios pueden implementar fácilmente la operación elegante de la tarea.

revisión anterior

Sistema de procesamiento de tareas asincrónicas, ¿cómo resolver el problema de la alta concurrencia de negocios que consume mucho tiempo?

Función Compute Asynchronous Task Capability Introducción: activación y eliminación de duplicados de tareas

Cree un sitio web real en 1 minuto con Serverless

5.png

¡Cree su primer sitio web personal en 1 minuto con Serverless!

¡Crédito gratis, fácil de empezar! Xiaobai también puede construir un sitio web muy rápidamente: no es necesario considerar el servidor y el código fuente del sitio web, le brindamos recursos informáticos gratuitos, servidores de administración de operación y mantenimiento. Después de completar la experiencia de la escena durante el evento, tendrá la oportunidad de recibir un cupón de 10 yuanes de Tmall Supermarket. (recomendado para experiencia en PC)

Hora del evento: 20 de junio-1 de julio de 2022 (recogida en días laborables)

Grupo de preguntas y respuestas: búsqueda de DingTalk "44700570"

Dirección de la experiencia: Haga clic para leer el texto original o escanee el código QR

Enlace original: click.aliyun.com/m/100034918…

Este artículo es contenido original de Alibaba Cloud y no se puede reproducir sin permiso.

Supongo que te gusta

Origin juejin.im/post/7121648959923159077
Recomendado
Clasificación