Elevada Disponibilidade com Serviços de Multimédia e Vídeo a Pedido (VOD)

Logótipo dos Serviços de Multimédia v3


Aviso

Os Serviços de Multimédia do Azure serão descontinuados a 30 de junho de 2024. Para obter mais informações, veja o Guia de Extinção do AMS.

Elevada disponibilidade para VOD

Existe um padrão de conceção de elevada disponibilidade chamado Geodes na documentação arquitetura do Azure. Descreve como os recursos duplicados são implementados em diferentes regiões geográficas para proporcionar escalabilidade e resiliência. Pode utilizar os serviços do Azure para criar uma arquitetura deste tipo para abranger muitas considerações de design de elevada disponibilidade, como redundância, monitorização do estado de funcionamento, balanceamento de carga e cópia de segurança e recuperação de dados. Uma dessas arquiteturas é descrita abaixo com detalhes sobre cada serviço utilizado na solução, bem como como os serviços individuais podem ser utilizados para criar uma arquitetura de elevada disponibilidade para a sua aplicação VOD.

Sample

Existe um exemplo disponível para se familiarizar com a elevada disponibilidade dos Serviços de Multimédia e do Vídeo a Pedido (VOD). Também vai mais detalhadamente sobre como os serviços são utilizados para um cenário VOD. O exemplo não se destina a ser utilizado na produção na sua forma atual. Reveja cuidadosamente o código de exemplo e o leia-me, especialmente a secção em Modos de Falha antes de o integrar numa aplicação de produção. Uma implementação de produção de elevada disponibilidade para Vídeo a Pedido (VOD) também deve rever cuidadosamente a respetiva estratégia de Rede de Entrega de Conteúdos (CDN). Veja o código no GitHub.

Descrição geral dos serviços

Os serviços utilizados neste exemplo de arquitetura incluem:

Ícone Nome Descrição
Este é o ícone da conta dos Serviços de multimédia. Conta dos serviços de multimédia Description:
Uma conta dos Serviços de Multimédia é o ponto de partida para gerir, encriptar, codificar, analisar e transmitir conteúdo multimédia em fluxo no Azure. Está associado a um recurso da conta de Armazenamento do Azure. A conta e todo o armazenamento associado têm de estar na mesma subscrição do Azure.

Utilização vod:
Estes são os serviços que utiliza para codificar e fornecer os seus recursos de vídeo e áudio. Para elevada disponibilidade, configuraria, pelo menos, duas contas dos Serviços de Multimédia, cada uma numa região diferente. Saiba mais sobre os Serviços de Multimédia do Azure.
Este é o ícone da Conta de armazenamento. Conta de armazenamento Description:
Uma conta de armazenamento do Azure contém todos os objetos de dados do Armazenamento do Azure: blobs, ficheiros, filas, tabelas e discos. Os dados são acessíveis a partir de qualquer parte do mundo através de HTTP ou HTTPS.

Cada conta dos Serviços de Multimédia, em cada região, teria uma conta de armazenamento na mesma região.

Utilização vod:
Pode armazenar dados de entrada e saída para processamento e transmissão em fluxo VOD. Saiba mais sobre o Armazenamento do Azure.
Este é o ícone da Fila de Armazenamento do Azure. Fila de Armazenamento do Azure Description:
O Armazenamento de Filas do Azure é um serviço para armazenar um grande número de mensagens que podem ser acedidas a partir de qualquer local no mundo através de chamadas autenticadas com HTTP ou HTTPS.

Utilização vod:
As filas podem ser utilizadas para enviar e receber mensagens para coordenar atividades entre diferentes módulos. O exemplo utiliza uma Fila de Armazenamento do Azure, mas o Azure fornece outros tipos de filas, como o Service Bus e As Filas Fiáveis do Service Fabric, que podem corresponder melhor às suas necessidades. Saiba mais sobre a Fila do Azure.
Este é o ícone do Azure Cosmos DB. Azure Cosmos DB Description:
O Azure Cosmos DB é o serviço de bases de dados multi-modelo distribuído globalmente da Microsoft que dimensiona de forma independente o débito e o armazenamento em qualquer número de regiões do Azure em todo o mundo.

Utilização vod:
As tabelas podem ser utilizadas para armazenar registos de estado de saída da tarefa e para controlar o estado de funcionamento de cada instância dos Serviços de Multimédia. Também pode controlar/registar o estado de cada chamada à API dos Serviços de Multimédia. Saiba mais sobre o Azure Cosmos DB.
Este é o ícone identidade gerida. Identidade Gerida Description:
A identidade gerida é uma funcionalidade de Azure AD que fornece uma identidade gerida automaticamente no Azure AD. Pode ser utilizado para autenticar em qualquer serviço que suporte Azure AD autenticação, incluindo Key Vault, sem armazenar credenciais no código.

Utilização vod:
Funções do Azure pode utilizar a Identidade Gerida para autenticar em instâncias dos Serviços de Multimédia para ligar a Key Vault. Saiba mais sobre a Identidade Gerida.
Este é o ícone de Key Vault. Key Vault Description:
O Azure Key Vault pode ser utilizado para armazenar de forma segura e controlar fortemente o acesso a tokens, palavras-passe, certificados, chaves de API e outros segredos. Também pode ser utilizada como uma solução de Gestão de Chaves. O Azure Key Vault torna mais fácil criar e controlar as chaves de encriptação utilizadas para encriptar os seus dados. Pode facilmente aprovisionar, gerir e implementar certificados TLS/SSL (Transport Layer Security/Secure Sockets Layer) públicos e privados para utilização com o Azure e recursos ligados internos. Os segredos e chaves podem ser protegidos por software ou HSMs validados fips 140-2 de Nível 2.

Utilização vod:
Key Vault pode ser utilizado para configurar políticas de acesso para o principal de serviço da sua aplicação. Pode ser utilizado para armazenar o cadeia de ligação para contas de armazenamento. Utilizamos Key Vault para armazenar cadeias de ligação para contas de armazenamento e cosmos db. Também pode utilizar Key Vault para armazenar a configuração geral do cluster. Para cada Instância do Serviço de Multimédia, pode armazenar o ID da subscrição, o nome do grupo de recursos e o nome da conta. Para obter mais detalhes, veja como é utilizado no exemplo. Saiba mais sobre Key Vault.
Este é o ícone de Funções do Azure. Funções do Azure Description:
Execute pequenos blocos de código (denominados "funções") sem se preocupar com a infraestrutura da aplicação com Funções do Azure. Saiba mais sobre Funções do Azure.

Utilização vod:
Funções do Azure pode ser utilizado para armazenar os módulos de anfitrião da sua aplicação VOD. Os módulos para uma aplicação VOD podem incluir:

Módulo de Agendamento de Tarefas
O módulo de agendamento de tarefas destinar-se-ia a submeter novas tarefas para um cluster dos Serviços de Multimédia (duas ou mais instâncias em regiões diferentes). Controlaria o estado de funcionamento de cada instância dos Serviços de Multimédia e enviaria uma nova tarefa para a instância em bom estado de funcionamento seguinte.

Módulo de Estado da Tarefa
O módulo de estado da tarefa estaria a escutar eventos de estado de saída da tarefa provenientes de Azure Event Grid serviço. Armazenaria eventos no arquivo de eventos para minimizar o número de chamadas às APIs dos Serviços de Multimédia pelo resto dos módulos.

Módulo de Estado de Funcionamento da Instância
Este módulo iria controlar as tarefas submetidas e determinar o estado de funcionamento de cada instância dos Serviços de Multimédia. Controlaria os trabalhos concluídos, os trabalhos falhados e os trabalhos que nunca terminaram.

Módulo de Aprovisionamento
Este módulo aprovisionaria recursos processados. Copiaria dados de recursos para todas as instâncias dos Serviços de Multimédia e configuraria o serviço Azure Front Door para garantir que os recursos poderiam ser transmitidos em fluxo mesmo que algumas instâncias dos Serviços de Multimédia não estivessem disponíveis. Também configuraria localizadores de transmissão em fluxo.

Módulo de Verificação de Tarefas
Este módulo iria monitorizar cada tarefa submetida, submeter novamente tarefas falhadas e executar a limpeza de dados da tarefa assim que uma tarefa fosse concluída com êxito.
Este é o ícone de Serviço de Aplicações. Serviço de Aplicações (e planear) Description:
Serviço de Aplicações do Azure é um serviço baseado em HTTP para alojar aplicações Web, APIs REST e back-ends móveis. Suporta .NET, .NET Core, Java, Node.js, PHP ou Python. As aplicações são executadas e dimensionadas em ambientes baseados em Windows e Linux.

Utilização vod:
Cada módulo seria alojado por um Serviço de Aplicações. Saiba mais sobre Serviço de Aplicações.
Este é o ícone do Azure Front Door. Azure Front Door Description:
O Azure Front Door é utilizado para definir, gerir e monitorizar o encaminhamento global do tráfego da Web ao otimizar o melhor desempenho e a ativação pós-falha global rápida para elevada disponibilidade.

Utilização vod:
O Azure Front Door pode ser utilizado para encaminhar o tráfego para pontos finais de transmissão em fluxo. Saiba mais sobre o Azure Front Door.
Este é o ícone de Azure Event Grid. Azure Event Grid Description:
Criado para arquiteturas baseadas em eventos, o Event Grid tem suporte incorporado para eventos provenientes de serviços do Azure, como blobs de armazenamento e grupos de recursos. Também tem suporte para eventos de tópicos personalizados. Os filtros podem ser utilizados para encaminhar eventos específicos para diferentes pontos finais, multicast para vários pontos finais e para garantir que os eventos são entregues de forma fiável. Maximiza a disponibilidade ao distribuir nativamente vários domínios de falha em todas as regiões e entre zonas de disponibilidade.

Utilização vod:
O Event Grid pode ser utilizado para controlar todos os eventos da aplicação e armazená-los para manter o estado da tarefa. Saiba mais sobre Azure Event Grid.
Este é o ícone do Application Insights. Application Insights Description:
O Application Insights, uma funcionalidade do Azure Monitor, é um serviço extensível de APM (Gestão de Desempenho de Aplicações) para programadores e profissionais do DevOps. É utilizado para monitorizar aplicações em direto. Deteta anomalias de desempenho e inclui ferramentas de análise para diagnosticar problemas e compreender o que os utilizadores fazem com uma aplicação. Foi concebido para o ajudar a melhorar continuamente o desempenho e a usabilidade.

Utilização vod:
Todos os registos podem ser enviados para o Application Insights. Seria possível ver que instância processou cada tarefa ao procurar mensagens de trabalho criadas com êxito. Pode conter todos os metadados de tarefa submetidos, incluindo o identificador exclusivo e as informações do nome da instância. Saiba mais sobre o Application Insights.

Arquitetura

Este diagrama de alto nível mostra a arquitetura do exemplo fornecido para começar a utilizar a elevada disponibilidade e os serviços de multimédia.

Diagrama de Arquitetura de Alto Nível do Vídeo a Pedido (VOD)

Melhores práticas

Regiões

  • Crie duas (ou mais) contas dos Serviços de Multimédia do Azure. As duas contas têm de estar em regiões diferentes. Para obter mais informações, veja Regiões nas quais o serviço dos Serviços de Multimédia do Azure é implementado.
  • Carregue o suporte de dados para a mesma região a partir da qual está a planear submeter a tarefa.
  • Se, em seguida, precisar de submeter novamente a tarefa para outra região, pode utilizar JobInputHttp ou utilizar Copy-Blob para copiar os dados do contentor asset de origem para um contentor de Recursos na região alternativa.

Monitorização

  • Subscreva JobStateChange mensagens em cada conta através de Azure Event Grid.

    • Utilize o SDK Microsoft.Azure.EventGrid (que suporta eventos dos Serviços de Multimédia nativamente).
    • Também pode consumir eventos do Event Grid através de Funções do Azure.

    Para obter mais informações:

    • Veja o exemplo de Análise de Áudio que mostra como monitorizar uma tarefa com Azure Event Grid incluindo adicionar uma contingência caso as mensagens de Azure Event Grid sejam atrasadas por algum motivo.
  • Quando cria uma tarefa:

    • Selecione aleatoriamente uma conta na lista de contas atualmente utilizadas (esta lista normalmente conterá ambas as contas, mas se forem detetados problemas, poderá conter apenas uma conta). Se a lista estiver vazia, crie um alerta para que um operador possa investigar.
    • Crie um registo para controlar cada tarefa de voo e a região/conta utilizada.
  • Quando o processador JobStateChange receber uma notificação de que uma tarefa atingiu o estado agendado, registe a hora em que entra no estado agendado e a região/conta utilizada.

  • Quando o processador JobStateChange receber uma notificação de que uma tarefa atingiu o estado de processamento, marque o registo da tarefa como processamento e registe a hora em que entra no estado de processamento.

  • Quando o processador JobStateChange receber uma notificação de que uma tarefa atingiu um estado final (Concluída/Erro/Cancelada), marque o registo da tarefa adequadamente.

  • Ter um processo separado que analisa periodicamente os seus registos das tarefas

    • Se tiver tarefas no estado agendado que não tenham avançado para o estado de processamento num período de tempo razoável para uma determinada região, remova essa região da sua lista de contas atualmente utilizadas. Dependendo dos seus requisitos comerciais, pode decidir cancelar essas tarefas imediatamente e submetê-las novamente para a outra região. Em alternativa, pode dar-lhes mais tempo para avançarem para o estado seguinte.
    • Se uma região tiver sido removida da lista de contas, monitorize-a para recuperação antes de a adicionar novamente à lista. O estado de funcionamento regional pode ser monitorizado através das tarefas existentes na região (se não tiverem sido canceladas e submetidas novamente), adicionando a conta de volta à lista após um período de tempo e pelos operadores que monitorizam as comunicações do Azure sobre falhas que podem estar a afetar os Serviços de Multimédia do Azure.

Obter ajuda e suporte

Pode contactar os Serviços de Multimédia com perguntas ou seguir as nossas atualizações através de um dos seguintes métodos: