Эллиптика
Разработчик(и) | Evgeniy Polakov with Yandex support |
---|---|
Первоначальный выпуск | 2008 год |
Репозиторий | |
Написано в | С++ , Питон , Го |
Тип | NoSQL |
Лицензия | Меньшая стандартная общественная лицензия GNU |
Веб-сайт | www |
Elliptics — это распределенное хранилище данных «ключ-значение» с открытым исходным кодом. По умолчанию это классическая распределенная хэш-таблица (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 , бэкенды Kyoto Cabinet для средних и больших файлов, разные дата-центры в одно кольцо DHT, невозможное восстановление).Эллиптика в конечном итоге представляет собой согласованную систему с множеством обновляемых параллельных реплик, потенциально находящихся в физически распределенных местах. Elliptics содержит несколько уровней: от низкоуровневого хранилища на диске (называемого Eblob) до кэшей SLRU и протокола динамической маршрутизации. [5]
В 2012 году Поляков анонсировал новую версию POHMELFS на базе Elliptics. [4]
По состоянию на 2014 год Эллиптика используется в Яндекс Картах , Диске, Музыке, Фото, Маркете и инфраструктуре. [6] Поисковая система Спутник и Коуб .
Архитектура
[ редактировать ]По умолчанию Elliptics формирует распределенную хеш-таблицу в одной группе (реплике). Группа может содержать один или несколько серверов, а физический сервер может содержать несколько эллиптических групп (реплик), хранящихся на разных серверах. Группы могут жить в разных физических местах, что позволяет обслуживать запросы клиентов, когда другие места недоступны. Одноранговый протокол ( P2P ) можно использовать для доступа к данным непосредственно с серверов хранения без проксирования. Elliptics поддерживает серверные сценарии на C++ , JavaScript , Python , основанные на технологии Cocaine , кеше SLRU и нескольких подключаемых бэкэндах (eblob — самый быстрый для средних и больших данных и самый популярный).
Клиенты Elliptics подключаются напрямую ко всем серверам хранения, что помогает:
- Выполнить поиск в O (1) сетевых запросах (один сетевой запрос на реплику)
- Запускайте команды записи/обновления в нескольких репликах параллельно.
Существует несколько интерфейсов прикладного программирования (API) для доступа к данным:
- Асинхронная библиотека C++ с обещанием функций
- Привязка Python
- Перейти на привязку
- HTTP-прокси Rift с бакетами и ACL на основе библиотеки TheVoid (с использованием boost::asio)
- управляемые сообществом Erlang, Привязки
Функции
[ редактировать ]- Распределенные хэш-таблицы, отсутствие серверов метаданных, истинное горизонтальное масштабирование.
- Репликация данных – реплики могут храниться в разных физических местах.
- Диапазон и массовые запросы
- Различные серверные части хранилища ввода-вывода, API для создания собственных низкоуровневых серверных частей хранилища.
- Автоматическое перераспределение данных в случае удаления или добавления узлов
- В конечном итоге последовательное восстановление
- Модель последовательной хеш-адресации
- Статистика кластера
- Интерфейс: HTTP; привязки: C / C++ , Go , Python
- Поддержка выполнения скриптов на стороне сервера (аналог триггера записи)
- Распределенный кэш SLRU с TTL
- Поддержка потоковой передачи P2P (только eblob и файловые серверы — внешние приложения, такие как веб-сервер Nginx, могут передавать данные из объектных файлов eblob непосредственно клиентам без проксирования)
Проблемы и ограничения
[ редактировать ]- Конечная согласованность : поскольку Elliptics полностью распространяется, в случае чрезвычайной ситуации сервер может вернуть копию файла, которая старше фактической. Иногда это может быть неприемлемо. В этих случаях из-за потери времени лучше использовать более надежные способы запроса данных.
- Сеть между клиентом и серверами может стать слабым местом, поскольку данные записываются на несколько серверов параллельно.
- API может быть неудобен для запросов высокого уровня. Elliptics не предоставляет своим пользователям запросы данных, подобные SQL.
- В Elliptics нет поддержки высокоуровневых транзакций, поэтому невозможно гарантировать, что группа команд будет выполнена полностью или не будет выполнена вообще.
- Транзакции являются атомарными внутри группы и блокируются на основе первичного ключа.
Документация
[ редактировать ]Эллиптика и поддерживающие ее проекты документируются в вики сообщества. Архивировано 21 января 2020 г. на Wayback Machine . Он содержит проектную документацию высокого уровня, учебные пособия, детали низкого уровня и базу знаний. Эллиптика и связанные с ней проекты обсуждаются в открытой группе 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: призыв к включению» .
- ^ "Как устроены облака Яндекса: Elliptics" . Retrieved 8 May 2017 .
- ^ «Эллиптика — Технологии Яндекса» . api.yandex.com . Проверено 8 мая 2017 г.
Внешние ссылки
[ редактировать ]- Эллиптика (официальный сайт) .