19

Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

  • Upload
    yandex

  • View
    2.225

  • Download
    1

Embed Size (px)

DESCRIPTION

В условиях постоянного роста объёма данных нам нужно расширять хранилище на всё большее количество машин и дата-центров. А чем больше у нас железа, тем чаще что-нибудь ломается, и это приводит к всё более неожиданным проблемам. Я расскажу об архитектуре бесконечно расширяемого хранилища для пользовательского контента сервисов Яндекса. Вы узнаете, почему мы отказались от DHT, как используем Elliptics и что такое Mastermind.

Citation preview

Page 1: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов
Page 2: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

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

Артём Соколов Я.Субботник в Минске, 30.08.2014

Page 3: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Немного цифр

- 4 Петабайта данных

- 10 миллиардов ключей

- 150 серверов

- 4500 дисков

- 5000 запросов в секунду

3

Page 4: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Elliptics - key-value сторадж

- Междатацентровая репликация из коробки

- Динамическое определение машин в кластере

- Реплика — DHT

4

Page 5: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Elliptics - key-value сторадж

- Междатацентровая репликация из коробки

- Динамическое определение машин в кластере

- Реплика — DHT

5

Page 6: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Когда DHT это хорошо

Подходит если нет роста объема данных

И имеет всякие плюшки - key-value - Естественная балансировка нагрузки - Автоматическое адаптирование к изменению структуры кластера

6

Page 7: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Проблемы DHT

Тяжелая процедура масштабирования кластера - грузим сеть и диски - нельзя масштабировать больше одной реплики за раз

Все данные хранятся в одной куче - трудно реализовать разные политики реплицируемости для разных

типов данных - трудно разделить данные по ДЦ - трудно реализовать процедуру архивироания данных

В условиях постоянного роста объема данных скорость заливки данных может сравниться со скоростью добавления машин в кластер.

7

Page 8: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Что, если не DHT?

8

1

2

3

Page 9: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Mediastorage

9

123

4

5

6

Page 10: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Mediastorage

10

123

4

5

6

7

Page 11: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Mediastorage

11

123

4

5

6

7

Page 12: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Mastermind

- Знает обо всех группах в кластере

- Хранит информацию о каплах и неймспейсах

- Собирает статистику по кластеру

- Облегчает управление кластером

12

Page 13: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Mastermind для администратора

- Добавление новой группы

- Восстановление реплики

- Перенос группы на другую машину

- Объединение групп в каплы и настройка капла

- Объединение каплов в неймспейсы и настройка неймспейса

13

Page 14: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Mastermind для клиента

- Балансировка нагрузки

- Предоставление информации о структуре кластера

14

Page 15: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Mastermind

- Cocaine Worker

- Minion

- Console utility

- Flowmastermind

- libmastermind

15

Page 16: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Уходим от проблем DHT

- Легко масштабировать

- Гибкие настройки хранилища для каждого пользователя в отдельности

- Легко распределять данные по множеству ДЦ

16

Page 17: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Новые проблемы

- Пользователь должен запомнить, в какой капл записаны данные

- Большой кластер требует особого подхода

17

Page 18: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Над чем работаем прямо сейчас

- Кеширующие каплы

- Региональная программа

- Автоматическое обслуживание кластера

18

Page 19: Архитектура бесконечного хранилища для пользовательского контента — Артём Соколов

Спасибо за внимание!

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

[email protected]

19