lunes, 7 de junio de 2010

P2P video caching

Han pasado más de dos años desde mi última entrada, así que ahora me dedicaré a escribir entradas cortas, para intentar escribir más cosas que se me ocurren.

Ahora mismo estamos trabajando en P2P video caching (PVC). ¿Cuál es la idea detrás del PVC? Bueno, es algo parecido a tener un cliente estilo BitTorrent para YouTube. Sería algo así como tener los contenidos (vídeos) en los propios equipos de los usuarios una vez se los descargan.

Algunos dirán que esto es precisamente lo que hace BitTorrent. Sí, pero con una pequeña diferencia. En BitTorrent el usuario decide mover, borrar o copiar el fichero, mientras que en PVC el usuario "reserva" espacio en su disco para hacer cache (guardar y reemplazar) de los videos que baja, pero que él en principio no volverá a ver (y si quiere volver a verlos, sólo tiene que acceder a su cache).

Existen varios problemas a los que nos estamos enfrentando. El primero de ellos, y el más gordo, es cómo poder simular el comportamiento de usuarios para elegir, descargar y visualizar los videos. Es decir, simular el acceso en YouTube. Actualmente tenemos un crawler de YouTube, que obtiene los vídeos más recientes cada 15 minutos y luego, también con 15 minutos de intervalo, se dedica a capturar el número de vistas totales de cada uno de los vídeos que tenemos almacenados. Esto lo estamos haciendo con la API de YouTube que nos está dando varios problemas, ya que devuelve varios errores (no los culpo, ahora mismo llevamos una semana y unos 30,000 vídeos).

Una vez tengamos datos realistas de YouTube, lo siguiente será diseñar una arquitectura que funcione bien de forma descentralizada. Tenemos que contestar las siguientes dudas:
  • ¿Qué pasa si el usuario tiene la cache llena? Tendremos que borrar ficheros antiguos, pero igual los antiguos son muy populares.
  • ¿Es bueno guardar el fichero que estamos bajando? A lo mejor varios usuarios ya tienen ese vídeo.
  • ¿Cómo localizamos el contenido? ¿Bootstrap server? ¿Método gossip (inundación)?
  • ¿Cómo afecta el churn (entradas y salidas de usuarios al sistema)? Un usuario que sale del sistema "se lleva" su cache. ¿Y si las copias que dicho usuario tenía eran las únicas en el sistema?
  • ¿Qué pasa cuando un contenido se vuelve popular/impopular? ¿Existen suficientes/demasiadas copias en el sistema?
Queda mucho por hacer, pero ya iré poniendo resultados de esta investigación.

No hay comentarios: