Архитектура хранилища бинарных
            данных на Одноклассниках




27.09.2011
Масштабность проекта, цели и задачи
Архитектура нового хранилища
Эксплуатация
Текущая нагрузка и объёмы
Пользовательские фотографии
     1.6 Млрд. x 4 размера
     200 ТБ
     3.5 М загрузок в день
     150 К чтений/сек
     Полноразмерные фотографии ???
Груповые фотографии
Музыка
...
Существующие решения
one-db — Berkeley + Remote Interface
   Невысокая производительность
   Низкая отказоустойчивость
   Сложное обслуживание
   Высокая стоимость оборудования
   Мастер + Слэйв + Бэкапы = 6 копий
   Бэкап – 17 часов
Цели
Максимальная производительность на чтение
Отсутствие SPOF
Резервирование вместо бэкапов
Быстрое и гибкое расширение кластера
Дешёвое железо
JAVA
На что мы смотрели

  Распределенные файловые системы
  HDFS
  Cassandra, Voldemort, Krati
Масштабность проекта, цели и задачи
Архитектура нового хранилища
Эксплуатация
Обзор Архитектуры
Устройство сервера
Независимые диски
Данные в сегментах
Индекс в памяти
NIO Socket server (Mina)
Сегменты данных
Файлы одного размера (256МБ)
Резервирование с помощью xfs_io
Один активный сегмент на запись
Уплотнение сегментов вместо отслеживания свободных
фрагментов
Индекс
Хеш таблица на десятки миллионов элементов
   увеличение размера без паузы
   1 примитивный массив + direct memory
   данные в памяти = данные на диске
Лог транзакций
   Изменения индекса → логи на отдельном диске
   Синхронизация и чистка логов
   Проверка целостности данных при старте
Кластер и Резервирование
Уникальный ИД диска
Фактор репликации - 3
Равномерное распределение реплик
Нет 2 реплик на одном сервере
Кворум записи — 2
Чтение — 1 + 1
Маршрутизация
Партиция
   hash(ID) % N
Таблица маршрутизации
   Партиция —> Диск 1, Диск 2, Диск 3, ...
Расширение Кластера
Преимущества Регионов


Расширение не требует передвижения данных
Не надо хранить местоположения для каждого объекта
Каждый клиент имеет реплику всех версий таблицы
маршрутизации в памяти
Zookeeper Для Координации
Что такое Zookeeper?
   Сервис для координации распределенных приложений
   Дерево + Бинарные данные в узлах

Особенности Zookeeper
   Распределенный
   Память + лог
   Кворум записи
   Гарантированная последовательность
   Временные вершины
   Нотификации

Почему Zookeeper?
   Надежный >= 3 серверов
   Быстрый
Данные в Zookeeper
Доступные сервера и их адреса
Местоположения и статусы дисков
Таблицы маршрутизации
Распределенная блокировка
Обработка Ошибок
Тип проблемы          Обнаружение                  Обработка

Вылет диска           IOException                  Выключение диска


Вылет сервера         Таймаут сессии в Zookeeper   Вывод из кластера



Потеря соединения к   Ошибки выполнения            Блокировка сервера и
серверу               запроса                      мониторинг
Hinted Handoff и востановление
Hinted Handoff
    Недоступность 1 реплики → 2 реплики хинта
    Чтение хинтов при старте, диск доступен на запись
    Периодическая проверка хинтов
Полное восстановление данных
    Диск доступен на запись
    Восстановление параллельно с разных дисков
Масштабность проекта, цели и задачи
Архитектура нового хранилища
Эксплуатация
Развертывание
24 сервера
SuperMicro
16 GB RAM
1TB HDD x 24
   20 — хранилища
   2 — резервные
   2 — система и логи (RAID 1)
Статистика

Характеристики 1 сервера :

Синтетические тесты
   2000 чтений/сек
   900 Мб/сек


Номинальная нагрузка
   600 чтений/сек
   350 Мб/сек
Мониторинг
Мониторинг каждого Zookeeper сервера
Мониторинг каждого сервера хранилищ:
   Доступность дисков
   Соединение с Zookeeper
   Хранилище хинтов
   Ошибки
Мониторинг кластера:
   Недоступные сервера
   Недоступные диски
Александр Христофоров
    odnoklassniki.ru/ah



   Олег Анастасьев
    odnoklassniki.ru/oa




   hr@odnoklassniki.ru

Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоров, Олег Анастасьев)

  • 1.
    Архитектура хранилища бинарных данных на Одноклассниках 27.09.2011
  • 2.
    Масштабность проекта, целии задачи Архитектура нового хранилища Эксплуатация
  • 3.
    Текущая нагрузка иобъёмы Пользовательские фотографии  1.6 Млрд. x 4 размера  200 ТБ  3.5 М загрузок в день  150 К чтений/сек  Полноразмерные фотографии ??? Груповые фотографии Музыка ...
  • 4.
    Существующие решения one-db —Berkeley + Remote Interface  Невысокая производительность  Низкая отказоустойчивость  Сложное обслуживание  Высокая стоимость оборудования  Мастер + Слэйв + Бэкапы = 6 копий  Бэкап – 17 часов
  • 5.
    Цели Максимальная производительность начтение Отсутствие SPOF Резервирование вместо бэкапов Быстрое и гибкое расширение кластера Дешёвое железо JAVA
  • 6.
    На что мысмотрели  Распределенные файловые системы  HDFS  Cassandra, Voldemort, Krati
  • 7.
    Масштабность проекта, целии задачи Архитектура нового хранилища Эксплуатация
  • 8.
  • 9.
    Устройство сервера Независимые диски Данныев сегментах Индекс в памяти NIO Socket server (Mina)
  • 10.
    Сегменты данных Файлы одногоразмера (256МБ) Резервирование с помощью xfs_io Один активный сегмент на запись Уплотнение сегментов вместо отслеживания свободных фрагментов
  • 11.
    Индекс Хеш таблица надесятки миллионов элементов  увеличение размера без паузы  1 примитивный массив + direct memory  данные в памяти = данные на диске Лог транзакций  Изменения индекса → логи на отдельном диске  Синхронизация и чистка логов  Проверка целостности данных при старте
  • 12.
    Кластер и Резервирование УникальныйИД диска Фактор репликации - 3 Равномерное распределение реплик Нет 2 реплик на одном сервере Кворум записи — 2 Чтение — 1 + 1
  • 13.
    Маршрутизация Партиция hash(ID) % N Таблица маршрутизации  Партиция —> Диск 1, Диск 2, Диск 3, ...
  • 14.
  • 15.
    Преимущества Регионов Расширение нетребует передвижения данных Не надо хранить местоположения для каждого объекта Каждый клиент имеет реплику всех версий таблицы маршрутизации в памяти
  • 16.
    Zookeeper Для Координации Чтотакое Zookeeper?  Сервис для координации распределенных приложений  Дерево + Бинарные данные в узлах Особенности Zookeeper  Распределенный  Память + лог  Кворум записи  Гарантированная последовательность  Временные вершины  Нотификации Почему Zookeeper?  Надежный >= 3 серверов  Быстрый
  • 17.
    Данные в Zookeeper Доступныесервера и их адреса Местоположения и статусы дисков Таблицы маршрутизации Распределенная блокировка
  • 18.
    Обработка Ошибок Тип проблемы Обнаружение Обработка Вылет диска IOException Выключение диска Вылет сервера Таймаут сессии в Zookeeper Вывод из кластера Потеря соединения к Ошибки выполнения Блокировка сервера и серверу запроса мониторинг
  • 19.
    Hinted Handoff ивостановление Hinted Handoff  Недоступность 1 реплики → 2 реплики хинта  Чтение хинтов при старте, диск доступен на запись  Периодическая проверка хинтов Полное восстановление данных  Диск доступен на запись  Восстановление параллельно с разных дисков
  • 20.
    Масштабность проекта, целии задачи Архитектура нового хранилища Эксплуатация
  • 21.
    Развертывание 24 сервера SuperMicro 16 GBRAM 1TB HDD x 24  20 — хранилища  2 — резервные  2 — система и логи (RAID 1)
  • 22.
    Статистика Характеристики 1 сервера: Синтетические тесты  2000 чтений/сек  900 Мб/сек Номинальная нагрузка  600 чтений/сек  350 Мб/сек
  • 23.
    Мониторинг Мониторинг каждого Zookeeperсервера Мониторинг каждого сервера хранилищ:  Доступность дисков  Соединение с Zookeeper  Хранилище хинтов  Ошибки Мониторинг кластера:  Недоступные сервера  Недоступные диски
  • 24.
    Александр Христофоров odnoklassniki.ru/ah Олег Анастасьев odnoklassniki.ru/oa hr@odnoklassniki.ru