justin tv canlı video yayınlama alt yapısı
TRANSCRIPT
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ı
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
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?
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ı: 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