Эллиптика - Elliptics

Эллиптика
Разработчики)Евгений Поляков с Яндекс поддерживать
изначальный выпуск2008; 12 лет назад (2008)
Репозиторий Отредактируйте это в Викиданных
Написано вC ++, Python, Идти
ТипNoSQL
Интернет сайтwww.reverbrain.com

Эллиптика это распределенное хранилище данных типа "ключ-значение" с Открытый исходный код код. По умолчанию это классический распределенная хеш-таблица (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 группа.

Смотрите также

Рекомендации

  1. ^ "POHMELFS: новая, но старая распределенная файловая система Linux - Phoronix". www.phoronix.com. Получено 8 мая 2017.
  2. ^ "POHMELFS возвращает [LWN.net]". lwn.net. Получено 8 мая 2017.
  3. ^ «Запись 2008.01.31». Архивировано из оригинал 6 октября 2008 г.. Получено 8 мая 2017.
  4. ^ а б Евгений Поляков (8 февраля 2012 г.). "pohmelfs: призыв к включению".
  5. ^ "Как устроены облака Яндекса: Эллиптика". Получено 8 мая 2017.
  6. ^ «Эллиптика - Технологии Яндекса». api.yandex.com. Получено 8 мая 2017.

внешняя ссылка