Александр Тоболь, "Одноклассники"

47
Платформа сроком в квартал Александр Тоболь Инженер-программист Одноклассники

Upload: ontico

Post on 15-Jun-2015

1.151 views

Category:

Documents


1 download

DESCRIPTION

HighLoad++ 2013

TRANSCRIPT

Page 1: Александр Тоболь, "Одноклассники"

Платформа сроком в квартал

Александр Тоболь

Инженер-программист

Одноклассники

Page 2: Александр Тоболь, "Одноклассники"

Видео на Одноклассниках

Page 3: Александр Тоболь, "Одноклассники"

Видео на Одноклассниках

Page 4: Александр Тоболь, "Одноклассники"

Видео на Одноклассниках

Page 5: Александр Тоболь, "Одноклассники"

Видео на Одноклассниках

Page 6: Александр Тоболь, "Одноклассники"

Аудитория и объемы

10 млн уникальных смотрителей в день

60 млн просмотров в день

20 млн классов в день

50 тысяч загрузок видео в день

28.10.13 6

Page 7: Александр Тоболь, "Одноклассники"

Видео в цифрах

30 млн роликов в базе

Исходящий трафик до 100 Гб/сек

Входящий трафик до 2 Гб/сек

Загружается 5 ТБ видео в день

Сохраняем 3 * 2 ТБ в день

Page 8: Александр Тоболь, "Одноклассники"

Наш видео парк

Хранилище – 70 серверов, 5 ПБ

Раздача и загрузка – 30 серверов

DB + Cache – 30 серверов

Трансформация – 60 серверов

Page 9: Александр Тоболь, "Одноклассники"

C чего все началось

• Решили делать видео на ОК в

2011

• Запустили на платформе

сервиса Видео@mail.ru

• А сервис стал расти…

Page 10: Александр Тоболь, "Одноклассники"

Новые требования – новая платформа

• Надежность

• Возобновляемая загрузка видео

• Воспроизведение видео с любого момента времени

• Поддержка мобильных устройств

• Эксплуатация - любовь к Java

Page 11: Александр Тоболь, "Одноклассники"

Видео изнутри

tempstorage

persistentstorage

uploadserver

downloadserver

transformationserver

Page 12: Александр Тоболь, "Одноклассники"

Загрузка

tempstorage

uploadserver

Требования:

•Возобновляемая загрузка видео

•Отказоустройчивость при потере сервера или ДЦ

•Гарантия обработки видео после загрузки

Page 13: Александр Тоболь, "Одноклассники"

Загрузка. БалансировкаDNS-GSLB

ДЦ 3

ДЦ 1

ДЦ 2

LVSvu.mycdn.me

ip1

LVS ip2LVS ip3

Page 14: Александр Тоболь, "Одноклассники"

Загрузка. БалансировкаDNS-GSLB

ДЦ 3

ДЦ 1

ДЦ 2

LVSvu.mycdn.me

ip1

LVS ip2LVS ip3

Page 15: Александр Тоболь, "Одноклассники"

Загрузка. БалансировкаDNS-GSLB

ДЦ 3

ДЦ 1

ДЦ 2

LVSvu.mycdn.me

ip1

LVS ip2LVS ip3

Page 16: Александр Тоболь, "Одноклассники"

Распределенная загрузка

ДЦ 1

ДЦ 2

ДЦ 3

tempstorage

tempstorage

tempstorage

Page 17: Александр Тоболь, "Одноклассники"

Failover загрузка

17

ДЦ 1

ДЦ 2

ДЦ 3

tempstorage

tempstorage

tempstorage

Last-known-byte

Page 18: Александр Тоболь, "Одноклассники"

Видео конвейер

tempstorage

persistentstorage

uploadserver

downloadserver

transformationserver

Page 19: Александр Тоболь, "Одноклассники"

Трансформация

tempstorage

persistentstorage

transformationserver

Требования:

•Преобразование видео в унифицированный формат(воспроизведение на разных браузерах и платформах)

•Поддержать 4 качества видео

•Отказоустройчивость и масштабируемость

Page 20: Александр Тоболь, "Одноклассники"

Выбор формата видео

Page 21: Александр Тоболь, "Одноклассники"

Внутренний формат видео

MP4

H.264

AAC

FLV

H.263

MP3

WebM

VP8

Vorbis MP3

Page 22: Александр Тоболь, "Одноклассники"

Очередь на транскодирование

tempstorage

Transformationqueue

Transform server 1

Transform server 2

Transform server N

uploadserver

Page 23: Александр Тоболь, "Одноклассники"

Zookeeper

Leader

candidate 2candidate 1

tempstorage

Transform server 1

Transform server 2

Transform server N

Очередь на транскодирование

uploadserver

Page 24: Александр Тоболь, "Одноклассники"

24

Ex-Leader

candidate 2candidate 1Leader

Zookeeper

tempstorage

Transform server 1

Transform server 2

Transform server N

uploadserver

Очередь на транскодирование

Page 25: Александр Тоболь, "Одноклассники"

Трансформация видео

ДЦ N

tempstorage

Transformation queue

Transformationserver

ДЦ 1ДЦ 2ДЦ 3

persistent storage

ffmpegmp4parser

ДЦ 1ДЦ 2ДЦ 3

MP4, H.264, ACC

426x240640x360853x480

1280x720+preview

Page 26: Александр Тоболь, "Одноклассники"

Трансформация. Коррекция длины

26

15% видео требуют коррекции

Page 27: Александр Тоболь, "Одноклассники"

70 серверов x 36 дисков * 2 Tб ~ 5 Пт

ДЦ 1

storage1

storage2

storageN

Zookeeper

ДЦ K

storageN+1

storageN+2

storageN+M

OBSOBS

transformationserver

Хранение видео

Page 28: Александр Тоболь, "Одноклассники"

Процесс обработки видео

tempstorage

persistentstorage

uploadserver

downloadserver

transformationserver

Page 29: Александр Тоболь, "Одноклассники"

Раздача контента

persistentstorage

downloadserver

Требования:

•Отдача видео с любого момента времени или смещения

•Высокая нагрузка ~150Gbps

•Отказоустойчивость

Page 30: Александр Тоболь, "Одноклассники"

Seek. Video pseudo-streaming

Header data1 data2 data N

v1 a1 vN aNv0 a06 Mb

data m

vm am

Page 31: Александр Тоболь, "Одноклассники"

Video pseudo-streaming

MOOVdata1 data2 data N

v1 a1 vN aNv0 a0

data m

vm am

data N data m

HTTP byte-range

request

start time parameter

in the request

URL

MOOV data N data m

Page 32: Александр Тоболь, "Одноклассники"

Video pseudo-streaming

32

MOOV data1 data2 data N

v1 a1 vN aNv0 a0Fast start

data m

vm am

data N data m

HTTP byte-range

request

start time parameter

in the request

URL

MOOV data N data m

Page 33: Александр Тоболь, "Одноклассники"

Раздача контента

Уточнение требований:

•Псевдо-стримминг

•Кэширование только просмотренной части видео

Решение:

•Кэшировать видео сегментами по 256Кб

•Java (off-heap, shared memory, nio)

Page 34: Александр Тоболь, "Одноклассники"

Архитектура раздачи

downloadserver

persistent storage

RAM - 96GB

SSD - 4TB

1-й уровень

2-й уровень

Segment256Kb

Page 35: Александр Тоболь, "Одноклассники"

Требование к кэшу

downloadserver

persistent storage

RAM - 96GB

SSD - 4TB

~100GBGC tolerance

LRU20k/sec

persistence

~TBFIFO

???

OBS

1-й уровень

2-й уровень

требования решение

Page 36: Александр Тоболь, "Одноклассники"

Решение для кэширования

Большие объемы (~100Gb)

+

Не оказывает влияния на GC

= Off-heap memory

• Native код

• Direct ByteBuffer

• Memory-mapped files

• Unsafe + shared memory

Варианты решения

Page 37: Александр Тоболь, "Одноклассники"

Раздача – результат

37

download

persistent storage

RAM – 96Gb

SSD - 4Tb

eth1 x 10 Gbpseth

4 x 10 Gbps

80%

20%

Intel(R) Xeon(R) CPU E5-2690 v2 @ 3.00GHz

Page 38: Александр Тоболь, "Одноклассники"

Балансировка раздачи

node_1

persistent storage

node_2

node_3

node_4node_N

p0r0

p0r1

p0r2

pKr0

pKr1

pKr2

Page 39: Александр Тоболь, "Одноклассники"

CDN

node_1

node_2

node_3

node_4node_N

node_1 node_2

node_2node_1

ДЦ

Page 40: Александр Тоболь, "Одноклассники"

Video pseudo-streaming

MOOV atom data1 data2 data N

v1 a1 vN aNv0 a0Fast start

data m

vm am

data N data m

HTTP byte-range

request

start time parameter

in the request

URL

MOOV data N data m

mp4parser

Page 41: Александр Тоболь, "Одноклассники"

Основный вехи

41

41

октябрь 2010 Первый комит

январь 2011 Запуск на платформе видео@mail.ru

2011 - 2012 Запуск с видео Rutube + Youtube

июнь 2012 Загрузка пользовательского видео в платформу видео@mail.ru

январь 2013 Первое упоминание о своей видео платформе

май 2013 Платформа видео запущена

Page 42: Александр Тоболь, "Одноклассники"

JavaТехнологии

Cassandra

OBS

ffmpeg

one-nio

ZookeeperApache Tomcat

mp4parser

Page 43: Александр Тоболь, "Одноклассники"

Технологии и видео конвейер

tempstorage

persistentstorage

uploadserver

downloadserver

transformationserver

Apache Tomcat OBS

Zookeeperffmpeg

OBSone-nio

Page 44: Александр Тоболь, "Одноклассники"

Результаты

• Работоспособность сервиса при отказе одного ДЦ

• Возобновление загрузки видео в течение 12 часов

• Просмотр видео с любого момента времени во

Flash и HTML5

• Высокопроизводительная раздача до 30Gbps с

сервера

• Поддержка видео на мобильных устройствах

Page 45: Александр Тоболь, "Одноклассники"

Осталось доделать

• HTML5 плеер

• «Левые» кодеки

• Использование метаданных исходного видео (GPS, например)

Page 46: Александр Тоболь, "Одноклассники"

Спасибо!

Page 47: Александр Тоболь, "Одноклассники"

Видео стримминг с Марса

Август 2012 • 40 Nginx сереров запущенных

Amazon EC2

• Тестовая нагрузка ~25Gbps

• Отключение серверов

• 30 серверов - 25Gbps

• 20 серверов - 12Gbps