Архитектура бесконечного хранилища для...

Preview:

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

derikon@yandex-team.ru

19

Recommended