Архитектура хранилища бинарных данных на...

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

Upload: ontico

Post on 21-May-2015

2.400 views

Category:

Documents


6 download

TRANSCRIPT

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

27.09.2011

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

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

Масштабность проекта, цели и задачиАрхитектура нового хранилищаЭксплуатация

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

Текущая нагрузка и объёмы

Пользовательские фотографии1.6 Млрд. x 4 размера200 ТБ3.5 М загрузок в день150 К чтений/секПолноразмерные фотографии ???

Груповые фотографииМузыка...

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

Существующие решения

one-db — Berkeley + Remote InterfaceНевысокая производительностьНизкая отказоустойчивостьСложное обслуживаниеВысокая стоимость оборудованияМастер + Слэйв + Бэкапы = 6 копийБэкап – 17 часов

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

Цели

Максимальная производительность на чтениеОтсутствие SPOFРезервирование вместо бэкаповБыстрое и гибкое расширение кластераДешёвое железоJAVA

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

На что мы смотрели

Распределенные файловые системыHDFSCassandra, Voldemort, Krati

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

Масштабность проекта, цели и задачиАрхитектура нового хранилищаЭксплуатация

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

Обзор Архитектуры

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

Устройство сервера

Независимые дискиДанные в сегментахИндекс в памятиNIO Socket server (Mina)

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

Сегменты данных

Файлы одного размера (256МБ)Резервирование с помощью xfs_io Один активный сегмент на записьУплотнение сегментов вместо отслеживания свободных фрагментов

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

Индекс

Хеш таблица на десятки миллионов элементовувеличение размера без паузы1 примитивный массив + direct memoryданные в памяти = данные на диске

Лог транзакцийИзменения индекса → логи на отдельном дискеСинхронизация и чистка логовПроверка целостности данных при старте

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

Кластер и Резервирование

Уникальный ИД дискаФактор репликации - 3Равномерное распределение реплик Нет 2 реплик на одном сервереКворум записи — 2Чтение — 1 + 1

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

Маршрутизация

Партицияhash(ID) % N

Таблица маршрутизацииПартиция —> Диск 1, Диск 2, Диск 3, ...

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

Расширение Кластера

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

Преимущества Регионов

Расширение не требует передвижения данныхНе надо хранить местоположения для каждого объектаКаждый клиент имеет реплику всех версий таблицы маршрутизации в памяти

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

Zookeeper Для КоординацииЧто такое Zookeeper?

Сервис для координации распределенных приложений

Дерево + Бинарные данные в узлах

Особенности Zookeeper

Распределенный

Память + лог

Кворум записи

Гарантированная последовательность

Временные вершины

Нотификации

Почему Zookeeper?

Надежный >= 3 серверов

Быстрый

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

Данные в Zookeeper

Доступные сервера и их адресаМестоположения и статусы дисковТаблицы маршрутизацииРаспределенная блокировка

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

Обработка Ошибок

Тип проблемы

Вылет диска

Вылет сервера

Потеря соединения к серверу

Обнаружение

IOException

Таймаут сессии в Zookeeper

Ошибки выполнения запроса

Обработка

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

Вывод из кластера

Блокировка сервера и мониторинг

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

Hinted Handoff и востановление

Hinted HandoffНедоступность 1 реплики → 2 реплики хинтаЧтение хинтов при старте, диск доступен на записьПериодическая проверка хинтов

Полное восстановление данных Диск доступен на записьВосстановление параллельно с разных дисков

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

Масштабность проекта, цели и задачиАрхитектура нового хранилищаЭксплуатация

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

Развертывание

24 сервераSuperMicro16 GB RAM1TB HDD x 24

20 — хранилища2 — резервные2 — система и логи (RAID 1)

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

Статистика

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

Номинальная нагрузка 600 чтений/сек 350 Мб/сек

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

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

Мониторинг

Мониторинг каждого Zookeeper сервераМониторинг каждого сервера хранилищ:

Доступность дисковСоединение с ZookeeperХранилище хинтовОшибки

Мониторинг кластера:Недоступные сервераНедоступные диски

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

Александр Христофоровodnoklassniki.ru/ah

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

[email protected]