Эллиптика - Elliptics
Разработчики) | Евгений Поляков с Яндекс поддерживать |
---|---|
изначальный выпуск | 2008 |
Репозиторий | |
Написано в | C ++, Python, Идти |
Тип | NoSQL |
Интернет сайт | www |
Эллиптика это распределенное хранилище данных типа "ключ-значение" с Открытый исходный код код. По умолчанию это классический распределенная хеш-таблица (DHT) с несколькими репликами, помещенными в разные группы (распределенные хэши). Elliptics был создан для удовлетворения требований многопользовательских центров обработки данных и физически распределенных хранилищ при хранении огромного количества средних и больших файлов (размером от 1 КБ до гигабайт, от тысяч до миллиардов объектов).
История
Elliptics была создана в 2007 году, первоначально как часть POHMELFS,[1][2] а кэш согласованный распределенная файловая система разработан программистом Linux Евгением Поляковым. POHMELFS было объявлено 31 января 2008 г.[3] и слились с плацдармом Ядро Linux дерево исходных текстов в версии 2.6.30, выпущенной 9 июня 2009 г. Файловая система практически не использовалась и была снова удалена в феврале 2012 г.[4]
В 2008 году Elliptics отделилась как самостоятельный проект. Поляков пробовал разные подходы к распределенным системам хранения данных, некоторые из них не подходили из-за сложности, а некоторые были слишком далеки от реальных (BerkeleyDB, LevelDB, Киотский кабинет бэкэнды для средних и больших файлов, разные центры обработки данных в одном кольце DHT, невозможное восстановление) .Elliptics в конечном итоге является согласованной системой с несколькими параллельными обновлениями реплики потенциально живущие в физически распределенных местах. Elliptics содержит несколько уровней от низкоуровневого хранилища на диске (с именем Eblob) до кешей SLRU и протокола динамической маршрутизации.[5]
В 2012 году Поляков анонсировал новую версию POHMELFS на базе Elliptics.[4]
С 2014 года Elliptics используется в Яндекс Карты, Диск, Музыка, Фото, Рынок и инфраструктура,[6] Поисковая система Sputnik и Coub
Архитектура
По умолчанию Elliptics формирует распределенную хеш-таблицу в единую группу (реплику). Группа может содержать один или несколько серверов, а также физический сервер может содержать несколько эллиптических групп (реплик), хранящихся на разных серверах. Группы могут находиться в разных физических местах, что позволяет обслуживать запросы клиентов, когда другие места недоступны. А пиринговый (P2P) протокол может использоваться для доступа к данным напрямую с серверов хранения без использования прокси. Elliptics поддерживает сценарии на стороне сервера в C ++, JavaScript, Python, на основе Кокаин технология, кэш SLRU и несколько подключаемых серверных модулей (эблоб самый быстрый для средних и больших данных и самый популярный).
Клиенты Elliptics подключаются напрямую ко всем серверам хранения, что помогает:
- Выполнять искать в O (1) сетевых запросах (один сетевой запрос на реплику)
- Запускать команды записи / обновления в несколько реплик параллельно
Есть несколько интерфейсы прикладного программирования (API) для доступа к данным:
- Асинхронное обещание функций C ++ библиотека
- Python привязка
- Идти привязка
- HTTP-прокси с именем Рифт с корзинами и ACL на основе библиотеки TheVoid (с использованием boost :: asio)
- Управляемый сообществом Erlang привязки
Функции
- Распределенные хэш-таблицы, без серверов метаданных, истинное горизонтальное масштабирование
- Репликация данных - реплики могут храниться в разных физических местах
- Диапазон и массовые запросы
- Различные бэкэнды хранилища ввода-вывода, API для создания собственных бэкэндов низкоуровневого хранилища
- Автоматическое перераспределение данных при удалении или добавлении узлов
- В конечном итоге последовательное восстановление
- Последовательная модель хеширования адресации
- Статистика кластера
- Фронтенд: HTTP; привязки: C /C ++, Идти, Python
- Поддержка выполнения скриптов на стороне сервера (аналог триггера записи)
- Распределенный кеш SLRU с TTL
- Поддержка потоковой передачи P2P (только eblob и файловые серверы - внешние приложения, например Nginx веб-сервер может передавать данные из объектных файлов eblob напрямую клиентам без использования прокси)
Проблемы и ограничения
- Конечная последовательность. Поскольку Elliptics полностью распространяется, в случае возникновения аварийной ситуации сервер может вернуть копию файла, которая старше фактической. Иногда это может быть неприемлемо. В этих случаях из-за потери времени лучше использовать более надежные способы запроса данных.
- Сеть между клиентом и серверами может стать слабым местом, поскольку данные записываются на несколько серверов параллельно.
- API может быть неудобным для высокоуровневых запросов. Elliptics не предоставляет своим пользователям запросы данных, подобные SQL.
- Elliptics не имеет поддержки транзакций высокого уровня, поэтому невозможно гарантировать, что группа команд будет полностью выполнена или не будет выполняться вообще.
- Транзакции являются атомарными только внутри группы и блокируются на основе первичного ключа.
Документация
Elliptics и поддерживающие ее проекты документируются в сообществе. вики. Он содержит документацию по высокоуровневому дизайну, руководство, подробные сведения о низком уровне и базу знаний. Эллиптика и связанные с ней проекты обсуждаются в открытом Google группа.
Смотрите также
Рекомендации
- ^ "POHMELFS: новая, но старая распределенная файловая система Linux - Phoronix". www.phoronix.com. Получено 8 мая 2017.
- ^ "POHMELFS возвращает [LWN.net]". lwn.net. Получено 8 мая 2017.
- ^ «Запись 2008.01.31». Архивировано из оригинал 6 октября 2008 г.. Получено 8 мая 2017.
- ^ а б Евгений Поляков (8 февраля 2012 г.). "pohmelfs: призыв к включению".
- ^ "Как устроены облака Яндекса: Эллиптика". Получено 8 мая 2017.
- ^ «Эллиптика - Технологии Яндекса». api.yandex.com. Получено 8 мая 2017.
внешняя ссылка
- Эллиптика (официальный сайт).
- api.yandex.com.