Filas
Clientes podem sobrecarregar nossos sistemas com requisições válidas de processamento de arquivos em larga escala em questão de segundos. Para gerenciar esses picos com eficiência e garantir um serviço tranquilo para todos os clientes, implementamos mecanismos de enfileiramento.
Como funciona?
- Live Queue: uploads diretos de arquivos colocam Encoding Jobs na Live Queue para processamento imediato, o que funciona como uma via expressa. Jobs live têm prioridade sobre todos os outros Jobs. A Live Queue é compartilhada entre todos os clientes.
- Batch Queue: a Batch Queue é para Jobs maiores que não exigem processamento em tempo
real. A classificação automática em lote depende do importador e de suas regras de importação em massa,
e não simplesmente do número total de arquivos em uma Assembly. Para escolher explicitamente a
Batch Queue, defina
"queue": "batch"no Step. Jobs em lote elegíveis são executados com prioridade menor, usando a capacidade de worker disponível. Eles podem ser executados enquanto Jobs live continuam na fila, caso esses Jobs live não consigam usar essa capacidade. A Batch Queue também é compartilhada entre todos os clientes. - Rotatividade automática: se Jobs live demais forem enviados e você exceder a quantidade de vagas prioritárias de Job do seu plano de assinatura, os Jobs vão escorrer para a Fila de Backup para não afetar o desempenho live de outros clientes. Eles serão enviados de volta para a Live Queue assim que alguns dos seus Jobs live forem concluídos, liberando as vagas prioritárias de Job do seu Workspace.
- Fila de Backup: da mesma forma, se Jobs em lote demais forem enviados, eles também vão escorrer para uma Fila de Backup e serão reenfileirados na Batch Queue compartilhada assim que alguns dos seus Jobs em lote forem concluídos, liberando as vagas de Job em lote do seu Workspace.
Quantas vagas os Jobs custam?
O número de vagas necessárias varia conforme o tipo de Job.
Um Job /video/encode ocupa 60 vagas, enquanto um Job /image/resize usa 5 vagas, por exemplo.
Uma lista de todos os Robots e seus requisitos de vagas está na entrada do FAQ sobre vagas prioritárias de Job.
Quantos Jobs posso processar em paralelo?
Cada plano de assinatura vem com um limite de vagas de Job live e de vagas de Job em lote por região. Por exemplo, se o seu limite de vagas prioritárias de Job for 120, você pode ter 24 redimensionamentos de imagem simultâneos (5 vagas cada) ou 2 codificações de vídeo simultâneas antes que os Jobs comecem a escorrer para a Fila de Backup. Da mesma forma, se você tiver 360 vagas de Job em lote, ter mais de 6 Jobs de vídeo enfileirados na Batch Queue significa que os Jobs seguintes serão enfileirados na Fila de Backup.
Os limites de vagas prioritárias de Job e de vagas de Job em lote do seu plano de assinatura são por região.
Como posso evitar queda de desempenho?
-
Obtenha quantidades maiores de vagas prioritárias de Job e vagas de Job em lote, o que aumenta a taxa de transferência. Fale conosco para valores personalizados.
-
Defina
waitForEncodingcomofalse(disponível, por exemplo, na integração com o Uppy). Isso torna o processamento assíncrono, então tempos de fila de dois minutos não travam a experiência do usuário final. Quando os arquivos estiverem prontos, damos um ping nanotify_urle você notifica seu usuário. Essa abordagem oferece a melhor experiência de usuário e a melhor confiabilidade, permitindo que você habilite Assembly Replays se necessário. Você encontra mais sobre isso na documentação de Assembly Notifications. -
Ao definir
"queue": "batch"em um Step, você mesmo pode rebaixar a prioridade dos Jobs dele, para evitar consumir vagas prioritárias de Job com Jobs que não precisam realmente de tempo de espera zero na fila. Por exemplo:
{
"steps": {
// …
"encode": {
"use": ":original",
"robot": "/video/encode",
"queue": "batch",
// …
},
// …
}
}
Onde posso verificar os tempos de fila atuais na minha região?
Você pode verificar os tempos de fila atuais tanto das Live Queues quanto das Batch Queues na nossa Página de Status e acessá-los programaticamente pelo nosso endpoint da API de Filas (os valores estão em segundos).