Elliptics

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

Elliptics - это распределенное хранилище данных типа "ключ-значение" с открытым исходным кодом кодом. По умолчанию это классическая распределенная хеш-таблица (DHT) с несколькими репликами, помещенными в разные группы (распределенные хеши). Elliptics был создан для удовлетворения требований многопользовательских центров обработки данных и физически распределенных хранилищ при хранении огромного количества средних и больших файлов (размером от 1 КБ до гигабайт, от тысяч до миллиардов объектов).

Содержание
  • 1 История
  • 2 Архитектура
  • 3 Возможности
  • 4 Проблемы и ограничения
  • 5 Документация
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки
История

Elliptics была создана в 2007 году, первоначально как часть POHMELFS, согласованной файловой системы с кешем распределенной файловой системы, разработанной программистом Linux Евгением Поляковым. О POHMELFS было объявлено 31 января 2008 г., и она была включена в промежуточную область дерева исходных текстов ядра Linux в версии 2.6.30, выпущенной 9 июня 2009 г. Файловая система практически не использовалась и была снова удалена в феврале. 2012.

В 2008 году Elliptics выделился в самостоятельный проект. Поляков пробовал разные подходы к распределенным системам хранения данных, некоторые из них не подходили из-за своей сложности, а некоторые были слишком далеки от реальных (BerkeleyDB, LevelDB, Kyoto Cabinet бэкэнды для средних и больших файлов, разных центров обработки данных в одном кольце DHT, без возможности восстановления). В конечном итоге Elliptics представляет собой согласованную систему с несколькими параллельно обновляемыми репликами, потенциально живущими в физически распределенных местах. Elliptics содержит несколько уровней от низкоуровневого хранилища на диске (названного Eblob) до кешей SLRU и протокола динамической маршрутизации.

В 2012 году Поляков анонсировал новую версию POHMELFS на основе Elliptics.

По состоянию на 2014 год Elliptics используется в Яндекс Карты, Диск, Музыка, Фото, Маркет и инфраструктура, а также Coub

Архитектура

Автор по умолчанию Elliptics формирует распределенную хеш-таблицу в одной группе (реплике). Группа может содержать один или несколько серверов, а также физический сервер может содержать несколько эллиптических групп (реплик), хранящихся на разных серверах. Группы могут находиться в разных физических местах, что позволяет обслуживать запросы клиентов, когда другие места недоступны. Протокол одноранговой сети (P2P) может использоваться для доступа к данным непосредственно с серверов хранения без использования прокси. Elliptics поддерживает сценарии на стороне сервера в C ++, JavaScript, Python на основе технологии Cocaine, кеша SLRU и нескольких подключаемых бэкендов ( eblob - самый быстрый для средних и больших данных и самый популярный).

Клиенты Elliptics подключаются напрямую ко всем серверам хранения, что помогает:

  • выполнять поиск в O (1) сетевых запросах (один сетевой запрос на реплику)
  • Выполнить запись / обновление команд в несколько реплик параллельно

Существует несколько интерфейсов прикладного программирования (API) для доступа к данным:

  • Асинхронное обещание функций C ++ библиотека
  • Python binding
  • Go binding
  • HTTP-прокси с именем Rift с бакетами и ACL на основе библиотеки TheVoid (с использованием boost :: asio)
  • Управляемый сообществом Erlang привязки
Возможности
  • Распределенные хэш-таблицы, отсутствие серверов метаданных, истинное горизонтальное масштабирование
  • Репликация данных - реплики могут храниться в разных физических местах
  • Диапазон и массовые запросы
  • Различные серверные части хранилища ввода-вывода, API для создания собственных базовых модулей низкоуровневого хранилища
  • Автоматическое перераспределение данных в случае удаления или добавления узлов
  • В конечном итоге последовательное восстановление
  • Согласованный адрес хеширования модель
  • Статистика кластера
  • Интерфейс: HTTP; привязки: C /C ++, Go, Python
  • Поддержка выполнения скриптов на стороне сервера (аналог триггера записи)
  • Распределенный кэш SLRU с TTL
  • Поддержка потоковой передачи P2P (только для eblob и файловых бэкэндов - внешние приложения, такие как Nginx веб-сервер, могут передавать данные из объектных файлов eblob напрямую клиентам без проксирования)
Проблемы и ограничения
  • Конечная согласованность. Поскольку Elliptics полностью распространен, в случае аварийной ситуации сервер может вернуть копию файла, которая старше фактической. Иногда это может быть неприемлемо. В этих случаях из-за потери времени лучше использовать более надежные способы запроса данных.
  • Сеть между клиентом и серверами может стать слабым местом, поскольку данные записываются на нескольких серверах параллельно.
  • API может быть неудобным для запросов высокого уровня. Elliptics не предоставляет своим пользователям SQL-подобные запросы данных.
  • Elliptics не имеет поддержки транзакций высокого уровня, поэтому невозможно гарантировать, что группа команд будет полностью выполнена или не будет выполнена на все.
  • Транзакции являются атомарными только внутри группы и блокируются на основе первичного ключа.
Документация

Эллиптика и поддерживающие ее проекты документируются в сообществе wiki. Он содержит документацию по высокоуровневому дизайну, руководство, подробные сведения о низком уровне и базу знаний. Эллиптика и связанные проекты обсуждаются в открытой группе Google .

См. Также
  • Портал бесплатного программного обеспечения с открытым исходным кодом
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-19 07:40:09
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте