PDF de programación - Utilización de programación funcional distribuida y clusters Linux en el desarrollo de servidores de vídeo bajo demanda

Imágen de pdf Utilización de programación funcional distribuida y clusters Linux en el desarrollo de servidores de vídeo bajo demanda

Utilización de programación funcional distribuida y clusters Linux en el desarrollo de servidores de vídeo bajo demandagráfica de visualizaciones

Actualizado el 7 de Febrero del 2020 (Publicado el 10 de Abril del 2017)
1.025 visualizaciones desde el 10 de Abril del 2017
1,1 MB
13 paginas
Creado hace 22a (14/07/2001)
Utilización de programación funcional

distribuida y clusters Linux en el desarrollo

de servidores de vídeo bajo demanda∗

M. Barreiro, V. M. Gulías, J. Mosquera, J. J. Sánchez

Universidade da Coruña

Departamento de Computación

Campus de Elviña – 15071 A Coruña (SPAIN)
e-mail: {enano,gulias,mosky,juanjo}@lfcia.org

Resumen

El vídeo bajo demanda (VoD) es un servicio que permite al usuario solicitar cual-
quier contenido multimedia en cualquier momento, sin estar sujeto a programaciones
preestablecidas. La mayoría de las soluciones actuales de este tipo poseen un coste
elevado, además de poca flexibilidad y escalabilidad.

El servidor que se describe en este artículo, diseñado con una arquitectura
jerárquica, implementado mediante un lenguaje de programación funcional (Er-
lang) y construido sobre una arquitectura de clusters Linux de bajo coste (Beo-
wulf), presenta características que permiten satisfacer la mayoría de los requisitos
tradicionales que se le plantean a un servicio de este tipo.

El sistema resultante se puede adaptar con flexibilidad a la topología de red
subyacente y puede escalarse para soportar un número creciente de usuarios concu-
rrentes, todo ello con una solución de bajo coste, utilizando ordenadores de consumo.
Después un diseño inicial del sistema, donde la estructura jerárquica era estática
y de tres capas especializadas (streaming, caché y almacenamiento masivo), y tras
las primeras implementaciones y pruebas de rendimiento y adaptación, se ha ido
evolucionando la arquitectura hacia un número variable de capas, compuestas por
módulos con una interfaz conocida, dotando a la solución de una mayor capacidad
de adaptación y versatilidad.

Keywords: Programación Funcional, Programación Distribuida, Cluster, Linux,
Erlang, Vídeo bajo Demanda.

1 Introducción

Un servidor de Vídeo Bajo Demanda (Video On Demand, VoD) es un sistema que pro-
porciona servicios de vídeo, en los cuales un usuario puede solicitar un VO (Video Object)
en cualquier momento, sin restricciones temporales preestablecidas.

∗Parcialmente financiado por FEDER TIC-1FD97-1759, Xunta de Galicia PGIDT99COM10502 y

UDC 2000-5050252026

Los servicios de películas bajo demanda, herramientas de aprendizaje a distancia, o
servicios informativos que permitan al usuario visualizar únicamente las noticias que le
interesan, son algunos de los muchos ejemplos de aplicaciones multimedia que pueden
hacer uso de este tipo de servidores.

Los sistemas de vídeo bajo demanda deben satisfacer una serie de requisitos derivados

de su funcionalidad, entre los cuales destacan:

• Gran capacidad de almacenamiento: en la mayoría de sus aplicaciones, el sistema
deberá ser capaz de ofertar al usuario un amplio abanico de objetos multimedia,
que serán almacenados de algún modo en la arquitectura del servidor.

• Gran ancho de banda: el hecho de que los contenidos multimedia se caracterizan por
hacer uso de un elevado ancho de banda, unido a la necesidad de dar servicio a un
número elevado de usuarios, hace necesario que el servidor sea capaz de aprovechar
un gran ancho de banda.

• Tiempo de respuesta predecible: cuando un usuario solicite un objeto de vídeo, el
sistema debe ser capaz de realizar, mediante estimaciones estadísticas que hagan
uso del estado del sistema en ese momento, una aproximación del tiempo de espera.
Además, el servidor debe tratar en todo momento de que el tiempo de espera sea
el mínimo posible para todos los usuarios.

• Soportar a gran número de usuarios concurrentes: el sistema debe ser capaz de
gestionar un número elevado de peticiones, que pueden realizarse al mismo tiempo.
• Tolerancia a fallos: un servidor de estas características, con un funcionamiento de
24 horas al día, necesita poseer mecanismos, tanto hardware como software, de
reacción ante posibles fallos, cambio de código en caliente, etc.

Además de los requisitos tradicionales en este tipo de servidores, a la solución pre-
sentada en este artículo se le han añadido otros tres, muy importantes, que condicionan
las decisiones de diseño:

• Escalabilidad: el sistema debe ser capaz de dar servicio a un número reducido de
usuarios en un contexto simple (escalabilidad hacia abajo), y de crecer mediante
un incremento de los recursos utilizados en él, para dar soporte a un número cada
vez mayor de usuarios concurrentes (escalabilidad hacia arriba).

• Adaptabilidad: se ha intentado diseñar un sistema que sea adaptable a la topología

de red subyacente, haciendo un uso optimizado de las capacidades de dicha red.

• Bajo coste: se plantea el reto de satisfacer todos los requisitos anteriores con una ar-
quitectura que permita reducir el coste de implementación y puesta en explotación
de un sistema de estas características.

En el presente artículo se plantea el diseño de un servidor de vídeo, su implementación,
y las decisiones posteriores de rediseño y mejora, que permiten satisfacer de un modo
óptimo todos los requisitos planteados con anterioridad. Para ello, se ha utilizado una
arquitectura jerárquica y el paradigma funcional de programación, combinado con la
programación paralela (Erlang).

El artículo está estructurado del siguiente modo: en la sección 2 se hace un resumen
del estado del arte relacionado con la implementación de servidores de VoD, en la sec-
ción 3 se hace una introducción al servidor de video propuesto, describiendo además el

cluster Beowulf utilizado para su implementación y las tecnologías clave usadas durante
el desarrollo. Finalmente, en la sección 4, se exponen una serie de refinamientos a la idea
original, encaminados a que el servidor cubra las necesidades en producción del sistema.

2 Estado del arte

En los últimos años las empresas más importantes que comercializan productos multi-
media han desarrollado sistemas relacionados con el vídeo bajo demanda.

Algunas de las soluciones están más adaptadas a redes de bajo ancho de banda,
como es el caso del RealVideo Server, de Real Networks, que hace uso de tecnologías de
caché de los streams para optimizar el uso de una red con las características de Internet, o
Microsoft Windows Media Server, que utiliza protocolos propietarios y puede ser utilizado
en entornos de un mayor ancho de banda con un rendimiento menor.

Otras soluciones se enfocan más a entornos LAN o MAN, con mayor disponibilidad
de ancho de banda. Las más representativas son el Darwing Streaming Server [1], de
Apple, que es la versión de código abierto del Quicktime Streaming Server, y sólo es un
servidor de streaming RTP, sin incluir la gestión del almacenamiento distribuida como la
que forma parte de la solución que se presenta; DB2 Digital Library Video Charger [19],
de IBM; Oracle Video Server [13, 14], quizá el más utilizado de todos, con arquitec-
tura cliente/servidor, pero con limitaciones de escalabilidad; Kassenna MediaBase, una
evolución del WebForce MediaBase, de SGI, con características comunes al diseño pre-
sentado en este trabajo (modular, separación de funciones de adquisición, distribución y
streaming, basado en sistemas UNIX), pero una menor flexibilidad y capacidad de adap-
tación; Philips WebCine Server [15], servidor de streaming MPEG4 basado en Linux;
Cisco IP/TV [7], solución cerrada con herramientas orientadas al mercado de formación;
y el sistema de SUN: StorEdge Media Central [17]. También existen soluciones de caja
negra, que consisten en la combinación de un hardware especializado con alguno de los
productos anteriores.

En general, el análisis en detalle de estos productos, conduce a la conclusión de que

la mayoría representan soluciones caras, cerradas, no escalables y no adaptables.

En el contexto académico la mayoría de los proyectos poseen un carácter altamente
experimental. En [4] se analiza una solución jerárquica para la construcción de servidores
multimedia que ha sido tomada como fuente de inspiración para algunas de las ideas del
servidor presentado en este proyecto. El Stony Brook Video Server Project [5, 6, 18] inten-
ta crear un servidor distribuido que proporcione al usuario características de indexación,
búsqueda y streaming de vídeos, y está desarrollada con una interesante arquitectura
cliente servidor, adaptada para redes locales. En [8] se presenta una alternativa total-
mente distinta a la expuesta en este artículo, utilizando una arquitectura de memoria
compartida.

Un estudio más detallado de algunas de estas soluciones se puede encontrar en [16].

3 VoDKA: un servidor VoD funcional distribuido

Para satisfacer todas las necesidades expuestas anteriormente, se propone una arqui-
tectura innovadora, basada en un sistema de almacenamiento distribuido y jerárquico,
construida sobre clusters Linux formados por componentes de consumo [3]: VoDKA
(Video on Demand Kernel Architecture).

La arquitectura jerárquica permite dividir la funcionalidad del sistema entre los dis-
tintos niveles, dando lugar a una especialización mayor, que hace viable la satisfación
de requisitos incompatibles a priori. Por ejemplo: la difícil convivencia entre un alma-
cenamiento de alta capacidad y bajo coste y una elevada velocidad de respuesta tiene
solución en la división en varias capas, que se describirá en detalle en la sección 3.1.

Las conclusiones obtenidas tras la implementación del sistema con este primer plan-
teamiento han permitido refinar el diseño de la arquitectura, dando lugar a una solución
todavía más óptima, cuyas características se detallan en la sección 4.

En las fases de análisis y diseño del sistema se han usado patrones de diseño [10],
con sus correspondientes adaptaciones en el lenguaje de programación utilizado, y beha-
viours [9] (que representan la equivalencia a los patrones de diseño a más bajo nivel).

El lenguaje de programación en el que se ha basado el desarrollo del sistema es
Erlang/OTP [2], que presenta un
  • Links de descarga
http://lwp-l.com/pdf2692

Comentarios de: Utilización de programación funcional distribuida y clusters Linux en el desarrollo de servidores de vídeo bajo demanda (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad