Índice analítico[Ocultar][Mostrar]
Hai unha posibilidade bastante decente de que transmitises algo se pasaches tempo en liña.
A transmisión en tempo real é un dos usos máis habituais das aplicacións máis coñecidas de Internet, xa sexa a través de YouTube, Spotify, Netflix ou cen outras.
Non obstante, tendo en conta o común que é o streaming, é sinxelo dalo por feito. Por exemplo: que é o streaming, exactamente?
Calquera material multimedia, xa sexa en directo ou gravado, que se envía a través de Internet a ordenadores e dispositivos móbiles e se reproduce en tempo real denomínase streaming.
Os tipos comúns de material en streaming inclúen podcasts, webcasts, películas, programas de televisión e vídeos musicais.
Os elementos multimedia, como música, vídeo e outros tipos, planifícanse e transfírense en paquetes de datos consecutivos para que se poidan transmitir ao instante.
Un dispositivo axeitado, acceso a un servizo ou aplicación de transmisión en tempo real e unha conexión a Internet de alta velocidade rápida e fiable son todo o que necesitas para transmitir.
Nota: Usaremos un servizo de transmisión de vídeo como exemplo.
Esta publicación analizará en profundidade o deseño do sistema do servizo de transmisión e os factores clave a ter en conta ao desenvolver aplicacións de transmisión de vídeo.
Requisitos do sistema
Entre os servizos de transmisión de vídeo máis populares do mundo están YouTube e Netflix. Para mellorar a experiencia do usuario, a súa arquitectura inclúe unha serie de elementos.
Este servizo inclúe películas populares, facturación, sistemas de recomendación baseados en IA e funcións de ver máis tarde, pero concentrarémonos nos elementos esenciais.
Cualidades básicas
Incluímos as seguintes capacidades no noso concepto para a streaming de video servizo:
- Os creadores de contido poden publicar vídeos.
- Os espectadores poden usar moitos dispositivos para ver vídeos (móbil, televisión, etc.).
- Nos vídeos, os usuarios poden comentar, gústame ou non.
- Os títulos dos vídeos pódense usar para buscalos.
- Para mostrar estas estatísticas aos usuarios, o sistema pode almacenar vistas, gústame e non me gusta.
Obxectivos do sistema
- Non debería haber almacenamento en búfer para que os espectadores poidan ver vídeos en tempo real.
- O almacenamento para o vídeo debe ser fiable. Non debes perder os vídeos que cargaches.
- Cun aumento de usuarios, o sistema debería ser escalable.
- A baixa latencia e a alta dispoñibilidade deberían ser características do sistema. Nesta situación, a coherencia non é tan importante porque está ben que un usuario espere un tempo antes de ver unha película que acaba de enviar.
Un único servidor non pode xestionar o volume de datos xa que o sistema debe xestionar un tráfico forte de forma regular. Utilizarase un grupo de servidores para dar servizo ao sistema.
Non debería haber ningún impacto notable na velocidade para os clientes aínda que un servidor falle.
Arquitectura de alto nivel
Un programa de transmisión de vídeo pode aceptar un dos tres tipos diferentes de solicitudes:
- Cargar (escribir)
- Busca (ler)
- Ver (ler)
Dado que as consultas de lectura (busca e visualización) adoitan ser varias veces máis frecuentes que as solicitudes de escritura (carga), cada unha delas é xestionada por un clúster separado de servidores.
Debido a que o programa é intensivo en lectura, terás que configurar máis servidores para xestionar as solicitudes de lectura que as cargas.
Cada solicitude feita por un cliente envíase ao microservizo adecuado equilibrador de carga cando se recibe.
Servizo de carga
O servizo de carga, que procesa o vídeo, súbeo aos servidores de Open Connect e faino accesible a todos os usuarios, cumpre unha solicitude de carga.
Servizo de busca
O equilibrador de carga envía a solicitude de busca ao microservizo de busca, que despois a envía á busca Elastic de Netflix. O cliente recibe a resposta da busca Elastic.
Elastic search, un motor de busca de código aberto de texto completo incriblemente escalable, é usado por Netflix para buscar en millóns de vídeos.
Netflix usa a busca elástica para analizar as operacións de atención ao cliente.
Ver servizo
A maioría das solicitudes de visualización non se enviarán ao equilibrador de carga nin aos servidores de Netflix. Pola contra, os usuarios conectaranse aos ISP locais e alimentaranse directamente desde o servidor Open Connect máis próximo.
Non obstante, se non se pode acceder ao vídeo solicitado, enviarase ao equilibrador de carga e ao microservizo de visualización.
Despois búscase o vídeo na base de datos de metadatos, obtense da ruta especificada nos metadatos e transmítese ao cliente.
Por suposto, esta técnica inclúe a latencia, polo que practicamente todas as solicitudes de visualización ofrécense a través de Open Connect.
Cargar vídeos
O obxectivo principal de YouTube é cargar unha película ou un vídeo. Un servizo de transmisión de vídeo debe superar unha serie de obstáculos antes de facer un vídeo accesible aos seus consumidores.
Mantendo en anacos
Cada vídeo enviado dividirase en numerosos ficheiros máis pequenos en lugar de manterse como un único ficheiro grande.
Isto é esencial xa que os produtores de contido poden enviar vídeos enormes. É posible que un único ficheiro grande tarde un tempo en procesarse ou transmitirse.
O espectador non terá que descargar o vídeo completo para reproducilo se se garda e se pon á súa disposición en anacos.
Para garantir que haxa pouca latencia entre os fragmentos e que o usuario teña unha experiencia de visualización fluida, o cliente solicitará primeiro o primeiro fragmento ao servidor e despois solicitará o seguinte mentres ese fragmento se reproduce.
Fila de procesamento
Cada vídeo ten numerosos fragmentos e Netflix utilizará varios traballadores simultáneos para analizalos, polo que é necesaria unha cola de procesamento. Ao engadilos á cola, isto faise máis sinxelo.
Os traballos serán recollidos polos traballadores (ou codificadores, que trataremos a continuación), codificados en varios formatos e despois almacenados no almacenamento de ficheiros distribuído.
Codificación de vídeo
É fundamental converter e gardar os fragmentos de vídeo en varios formatos para que os espectadores poidan acceder a eles mediante a tecnoloxía e a conexión a Internet que mellor lles funcione.
Os espectadores poden ver o vídeo nun portátil, teléfono, televisión ou outros gadgets. Os formatos óptimos para varios dispositivos difiren entre si.
Nun sentido semellante, varios espectadores poderían utilizar varios anchos de banda para acceder a Internet.
Algúns espectadores poderían reproducir películas de alta resolución con facilidade dependendo da velocidade da súa conexión a Internet ou do seu ancho de banda, mentres que aqueles con menor ancho de banda poderán reproducir vídeos de baixa calidade moito máis facilmente.
Abre Conectar
Cando utilizas o teu navegador para solicitar Netflix.com, pídeselle ao teu ISP (Proveedor de servizos de Internet) que estableza unha conexión entre o teu ordenador e o servidor de Netflix.
O teu ISP contacta co enderezo IP de Netflix no teu nome e devolveche o resultado. A audiencia dunha nación remota como Tokio experimentará importantes atrasos na transmisión e recepción de sinais debido á concentración destes servidores en EE.
Cos vídeos, os atrasos son moito máis preocupantes xa que hai que transmitir moitos datos ao espectador e, se é así, atrasase a transmisión e a experiencia do usuario resentirase.
Netflix utiliza unha técnica intelixente para solucionar o problema. Coñécese como Open Connect (OC). Open Connect é o CDN que usa Netflix (Content Delivery Network).
Co fin de almacenar en caché a información en liña e entregala rapidamente aos consumidores reducindo a distancia física entre o usuario e o material, CDN é unha rede de servidores espallados e centros de datos asociados.
Equilibrio de carga
A aplicación única o servidor non é capaz de xestionar o volume de solicitudes (incluídas as solicitudes de carga, busca e visualización) que chegan cada segundo.
Debe haber un equilibrador de carga para distribuír eficazmente a carga de traballo entre os numerosos servidores xa que hai varios servidores implicados.
Netflix emprega hash constante para distribuír cargas entre servidores porque pode xestionar fallos do servidor e acomodar a instalación de servidores adicionais con facilidade.
Dado que a popularidade de cada vídeo varía, os servidores reais que albergan estas películas poden experimentar unha carga desigual. Usando redireccións HTTP dinámicas, que permiten que un servidor ocupado desvíe unha nova solicitude a un servidor aberto, podemos solucionar este problema.
Consideracións ao desenvolver unha aplicación de transmisión de vídeo
Busca e desenvolve o teu nicho
Con tantos tipos diferentes de material dispoñible, desde entretemento ata educación e fitness, é fundamental construír un diferenciador cunha especialidade especializada. Podes crear unha plataforma para documentais ou películas independentes.
Monetización da aplicación
A interrupción dos patróns tradicionais de monetización pode producir innovación e crecemento. Os plans sempre deben adaptarse ao público obxectivo.
Como os operadores xa monopolizaron o mercado, podes probar a monetizar as subscricións gratuítas con anuncios ou colocación de produtos.
Xunto con isto, se queres construír unha plataforma global de servizos de transmisión en directo, debes ter en conta as necesidades de varias moedas.
Mellor experiencia
O rendemento do programa debería mellorarse para circunstancias de punta, como Internet lenta ou usuarios con acceso restrinxido.
Transmisión de vídeos
Netflix non só transmite contido, senón que tamén utiliza técnicas de enxeñería de usuarios e suxestións personalizadas para manter os usuarios enganchados ao servizo.
Planifica establecer un servizo de streaming similar a Netflix con énfase na análise de datos e na personalización do usuario.
Xestionar os moitos roles da aplicación
Na aplicación Netflix, a vista do usuario é simplemente un dos varios roles de usuario. A planificación é necesaria para varios usuarios e o seu acceso, incluído o administrador, o propietario do vídeo, os socios, os moderadores, etc.
Conclusión
En conclusión, así é como os servizos de transmisión de vídeo como Netflix, YouTube e outros vídeos incorporados fan un seguimento destes e móstranso a millóns de consumidores.
Aínda que cada unha destas aplicacións pode ter algunhas características adicionais que as diferencian, a funcionalidade fundamental baséase nos mesmos algoritmos.
Fixen o mellor posible para darche unha visión xeral da arquitectura do sistema de servizos de transmisión, pero hai moito máis en segundo plano.
Espero sinceramente que este coñecemento sexa valioso e que o faga uso.
Deixe unha resposta