Upload
yandex
View
2.225
Download
1
Embed Size (px)
DESCRIPTION
В условиях постоянного роста объёма данных нам нужно расширять хранилище на всё большее количество машин и дата-центров. А чем больше у нас железа, тем чаще что-нибудь ломается, и это приводит к всё более неожиданным проблемам. Я расскажу об архитектуре бесконечно расширяемого хранилища для пользовательского контента сервисов Яндекса. Вы узнаете, почему мы отказались от DHT, как используем Elliptics и что такое Mastermind.
Citation preview
Архитектура бесконечного хранилища для пользовательского контента
Артём Соколов Я.Субботник в Минске, 30.08.2014
Немного цифр
- 4 Петабайта данных
- 10 миллиардов ключей
- 150 серверов
- 4500 дисков
- 5000 запросов в секунду
3
Elliptics - key-value сторадж
- Междатацентровая репликация из коробки
- Динамическое определение машин в кластере
- Реплика — DHT
4
Elliptics - key-value сторадж
- Междатацентровая репликация из коробки
- Динамическое определение машин в кластере
- Реплика — DHT
5
Когда DHT это хорошо
Подходит если нет роста объема данных
И имеет всякие плюшки - key-value - Естественная балансировка нагрузки - Автоматическое адаптирование к изменению структуры кластера
6
Проблемы DHT
Тяжелая процедура масштабирования кластера - грузим сеть и диски - нельзя масштабировать больше одной реплики за раз
Все данные хранятся в одной куче - трудно реализовать разные политики реплицируемости для разных
типов данных - трудно разделить данные по ДЦ - трудно реализовать процедуру архивироания данных
В условиях постоянного роста объема данных скорость заливки данных может сравниться со скоростью добавления машин в кластер.
7
Что, если не DHT?
8
1
2
3
Mediastorage
9
123
4
5
6
Mediastorage
10
123
4
5
6
7
Mediastorage
11
123
4
5
6
7
Mastermind
- Знает обо всех группах в кластере
- Хранит информацию о каплах и неймспейсах
- Собирает статистику по кластеру
- Облегчает управление кластером
12
Mastermind для администратора
- Добавление новой группы
- Восстановление реплики
- Перенос группы на другую машину
- Объединение групп в каплы и настройка капла
- Объединение каплов в неймспейсы и настройка неймспейса
13
Mastermind для клиента
- Балансировка нагрузки
- Предоставление информации о структуре кластера
14
Mastermind
- Cocaine Worker
- Minion
- Console utility
- Flowmastermind
- libmastermind
15
Уходим от проблем DHT
- Легко масштабировать
- Гибкие настройки хранилища для каждого пользователя в отдельности
- Легко распределять данные по множеству ДЦ
16
Новые проблемы
- Пользователь должен запомнить, в какой капл записаны данные
- Большой кластер требует особого подхода
17
Над чем работаем прямо сейчас
- Кеширующие каплы
- Региональная программа
- Автоматическое обслуживание кластера
18
Спасибо за внимание!
https://github.com/reverbrain/elliptics
https://github.com/nobodyisme/mastermind
https://github.com/nobodyisme/mastermind-minion
https://github.com/nobodyisme/flowmastermind
https://github.com/yandex/libmastermind
https://github.com/yandex/mediastorage-proxy
19