20
canlı video yayınlama sistemi

Justin TV Canlı Video Yayınlama Alt Yapısı

Embed Size (px)

Citation preview

canlı video yayınlama sistemi

Amaç: Canlı Video Yayını

Justin.tv?

Canlı video yayınlama

4 veri merkezi (data center)

Anlık ortalama 2000 yayın

Saniyede 5.6 GB (45Gbps) veri aktarımı

Günlük ortalama maksimum yoğunluk: 13.75 GB (110Gbps)

Bugüne kadarki en yüksek yoğunluk: 62.5 GB (500Gbps)

200 video sunucusu

Hepsinde 2x gigabit (1Gbps) kart var. (sunucu başına 2Gbps ?)

Altyapı

Twice

XFS

HAProxy

LVS

Ruby on Rails

Nginx

Postgresql

MongoDB

MemcacheDB

Syslog-ng

RabbitMQ

Puppet

Git

Wowza

Usher

S3

Justin.tv Video Altyapısı

Justin.tv Video Altyapısı

Video sunucusu (Wowza)

Yayın alabiliyor.

Yayın sunabiliyor.

Havada codec dönüşümü yapabiliyor (on-the-fly transcoding).

Canlı yayın bellekten sunuluyor.

Yayın diskten okunmuyor.

Gelen yayın arşiv amaçlı diske kaydediliyor.

Her türlü cihaza video sunabiliyor.

Adobe Flash, iOS, Android, Windows Phone, …

Veri aktarımını, cihazın ve ağın hızına göre otomatik ayarlama

Justin.tv Video Altyapısı

Usher (Yayın yönetimi sunucusu)

Video sunucularda özel bir yapılandırma yok.

Yayınların kaç makineye dağılacağı

Hangi yayının hangi makinede olacağı yönetimi

Parametreler:

Hangi veri merkezinde (data center) ne kadar yük var?

Bütün sunucuların yük dağılımı

Bir yayının hangi sunucularda bulunduğu

İzleyicilerin IP adresleri ve hangi ülkeden geldikleri

-Eğer izleyicinin ISP’si ile anlaştılarsa- izleyicinin IP adresinin rota tablosu bilgisi

Eğer bir yayın bir veri merkezinde ise onu aynı veri merkezinde tutmaya çalışıyor.

Justin.tv Video Altyapısı

Usher (devam…)

Yük dengeleme

Kullanıcının IP adresini ve lokasyonunu bilince ona göre rota çiziyor.

Paketin geçeceği yolu azaltmaya çalışıyor.

3 saniyede bir sistem yükünü kontrol ediyor.

Problemler?

Başlangıçta AWS’de idiler.

Vazgeçtiler. Çünkü yavaş.

CDN (İçerik Dağıtım Ağı): $.135

AWS: $.0074

Veri Merkezi: $.0017

İnternet Altyapısı

Peering

Unicast - Multicast

Unicast (Tekli gönderim)

iki bilgisayar arasındaki bağlantı

Multicast (Çoklu gönderim)

Tek bağlantı birden fazla

bilgisayara dağıtılır.

Yayını almak isteyenler yayına

kaydolurlar.

Yayın multicast olan IP adresi

tarafından dağıtılır.

Router’ın multicast yayınları

desteklemesi gerekir.

Justin.tv Video Altyapısı

Peering yapıyorlar.

Bu sayede kullanıcılara yakınlar.

Multicast yapamıyorlar.

4 veri merkezi arasında ana bir

networkleri var.

Veri merkezleri arasında multicast

trafik var.

Anlık izleme artışları

Maçlar

Ünlülerin twit hesapları..

Bandwidth?

Justin.tv Web Altyapısı

Amaç: Canlı Video Yayını

Ağ performansı

Band genişliği (Bandwidth)

Gecikme (Delay / Latency)

Dalgalanma (Jitter)

Ağ Performansı: Bant Genişliği

http://www.telegeography.com/telecom-maps/

Ağ Performansı: Bant Genişliği

Ağ Performansı: Gecikme

Gecikme az olmalı.

Kriterler

Hat kalitesi (bandwidth)

Cihaz kalitesi

Aradaki cihaz sayısının az olması

http://merry.netsys.more.net/cgi-pub/latency_map.py

Ağ Performansı: Dalgalanma

Ağ Performansı