HighLoad++ 2017
Зал Дели + Калькутта, 7 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/2974.html
Обзоры и сравнения key-value баз данных, коих сегодня огромное количество, пестрят обещаниями миллионов операций в секунду с менее чем миллисекундными задержками.
Мы строим высокопроизводительный кластер хранения, и нам нужно где-то хранить метаданные. Одним из вариантов стали хвалёные key-value-решения. Справятся ли они с такой нагрузкой?
...
2. 2
О КОМПАНИИ
«Рэйдикс» — ведущий российский
разработчик высокопроизводительных систем
хранения данных.
Уникальные алгоритмы
помехоустойчивого кодирования
составляют ключевые преимущества создаваемого
продукта.
3. 3
О КОМПАНИИ
В области развития технологий и оптимизации
решений компания «Рэйдикс» сотрудничает
с ведущими экспертами отрасли и крупнейшими
стратегическими партнерами по всему миру.
Партнерская сеть «Рэйдикс»
охватывает системных
интеграторов и поставщиков
более чем в 30 странах мира.
4.
5. Все хотят, чтобы СХД:
•Легко масштабировалась до любых
размеров
•Стоила недорого
•Была гибкой в настройке и обслуживании
•Быстро развертывалась и легко
управлялась
5
7. Конфигурация кластера
12 узлов по 2 NVME диска.
Linux kernel 4.9.22 собранный с
поддержкой nvme и IB.
Узлы соединены по Infiniband
драйвера MLNX_OFED_LINUX-4.0
7
11. Рабочая нагрузка. Enterprise
•8-64 KB IO.
•Random read/write примерно 50/50.
•Периодически Seq Read и Write в сотни
потоков (Boot, Virus Scan)
12. Рабочая нагрузка.Media
• NLE (нелинейный монтаж)
Чтение и запись нескольких больших файлов параллельно
• VOD (видео по запросу)
Чтение множества потоков, иногда с перескоками
Возможна параллельная запись в несколько потоков
• Транскодинг
16-128 KB random R/W 50/50
13. Требования
• Основной сценарий доступа - Случайные r/w
• Размер блоков 8-64kb
• Соотношение 50/50
• Latency -1-2мс для flash
• Производительность на узел от 20ГБ/с ,от 300-500K IOPs
14. Распределенная система хранения.
• Доступность 99.999% (простой 5 минут в год)
• Распределенное кодирование вместо репликации
(уменьшение стоимости, размещение данных)
• Лог-структурированная запись ???
• Дедупликация+сжатие онлайн ( для виртуализации)
• Гибридное хранение
• Снэпшоты
14
15. Запросы к СХД от клиента
•Время поступления запроса. Latency
•Тип запроса (запись или чтение)
•Логический адрес первого блока- LBA.
Определяем откуда читать/писать- PBA.
• Размер запроса.
17. Блочная дедупликация
• Получаем данные
• Считаем хэш от LBA
• Проверяем совпадение
• Создаем записи в таблицах
метаданных
800 Tbуникальных данных
при размере блока 8K
Требуют 2 Tb метаданных
79. Выводы
Запись + мало потоков => WiredTiger
Запись + много потоков => RocksDB
Чтение + DATA > RAM => RocksDB
80. Выводы
Запись + мало потоков => WiredTiger
Запись + много потоков => RocksDB
Чтение + DATA > RAM => RocksDB
Чтение + DATA < RAM => MDBX
81. Выводы
Запись + мало потоков => WiredTiger
Запись + много потоков => RocksDB
Чтение + DATA > RAM => RocksDB
Чтение + DATA < RAM => MDBX
Mix50/50 + много потоков + DATA > RAM => RocksDB
110. Выводы
Запись + мало потоков => WiredTiger
Запись + много потоков => RocksDB
Чтение + DATA > RAM => RocksDB
Чтение + DATA < RAM => MDBX
Много потоков + DATA > RAM + Упаковка => Aerospike
116. Что дальше?
• Попробовать упаковку на RocksDB/...
• Тесты на 137млрд ключей
• Посмотреть на Cassandra/ещё что-то
117. Что дальше?
• Попробовать упаковку на RocksDB/...
• Тесты на 137млрд ключей
• Посмотреть на Cassandra/ещё что-то
• Прямая адресация
• Фрагментация
• Трудозатратно
• Выделение сразу всего места на накопителе