Разработчик (и) | Евгений Поляков с поддержкой Яндекс |
---|---|
Первоначальный выпуск | 2008 г.; 12 лет назад (2008 г.) |
Репозиторий | |
Написано на | C ++, Python, Go |
Тип | NoSQL |
Веб-сайт | www.reverbrain.com |
Elliptics - это распределенное хранилище данных типа "ключ-значение" с открытым исходным кодом кодом. По умолчанию это классическая распределенная хеш-таблица (DHT) с несколькими репликами, помещенными в разные группы (распределенные хеши). Elliptics был создан для удовлетворения требований многопользовательских центров обработки данных и физически распределенных хранилищ при хранении огромного количества средних и больших файлов (размером от 1 КБ до гигабайт, от тысяч до миллиардов объектов).
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 подключаются напрямую ко всем серверам хранения, что помогает:
Существует несколько интерфейсов прикладного программирования (API) для доступа к данным:
Эллиптика и поддерживающие ее проекты документируются в сообществе wiki. Он содержит документацию по высокоуровневому дизайну, руководство, подробные сведения о низком уровне и базу знаний. Эллиптика и связанные проекты обсуждаются в открытой группе Google .