Подсистема хранения
Подсистема хранения предназначена для организации физического хранения объектов и метаданных этих объектов.
Подсистема поддерживает 3 варианта работы:
- стандартная система хранения (Стандартная система хранения) — хранение данных средствами компонентов VK Object Storage без использования Zepto;
- система хранения Zepto X2 (Система хранения Zepto X2) — хранение данных с помощью Zepto в режиме отказоустойчивости x2 (репликация данных с фактором 2);
- система хранения Zepto X1.75 и X1.09 (Система хранения Zepto X1.75 и X1.09) — хранение данных с помощью Zepto в режимах отказоустойчивости x1.75 (избыточное кодирование с помощью XOR) и x1.09 (избыточное кодирование кодами Рида-Соломона). Логика работы с субкластерами одинакова для обоих режимов, различается только способ избыточного кодирования.
Подробное описание Zepto, режимов отказоустойчивости и внутренних концепций приведено в разделе Основные особенности.
Схема компонентов стандартной системы хранения приведена на рисунке 1.
Компоненты стандартной системы хранения приведены в таблице 1.
Компонент | Описание |
|---|---|
Storage daemons | Демон ( |
Gostreamer | Интерфейс для низкоуровневого взаимодействия с физическим хранилищем. Обеспечивает передачу файлов в Nginx и взаимодействует с Nylon |
Razmove-worker | Обрабатывает задачи размиграции — переноса данных со сбойной пары на другие доступные локальные пары |
Jqueue | Сервис очередей на основе Tarantool (JetQueue), используется компонентом Razmove-worker для постановки и обработки задач |
Nylon | Прокси-сервис Tarantool, отвечает за взаимодействие с FileDB и PairDB |
PairDB | БД Tarantool, хранит список юнитов файлового хранилища |
FileDB | Кластер Tarantool, хранит метаданные файлового хранилища |
Storage Nginx | Прокси-сервис, выполняет сохранение и извлечение файлов объектов по протоколу WebDAV. Сохранение файла производится на все парты в юните. Запись файла считается успешной, если успешно записаны все копии файла. Чтение файла производится с одного парта в юните |
FS | Файловая система, в которой физически хранятся файлы объектов |
Схема компонентов системы хранения Zepto X2 приведена на рисунке 2.
Компоненты системы хранения Zepto X2 приведены в таблице 2.
Компонент | Описание |
|---|---|
Zeptoproxy | Фронт-сервис Zepto. Принимает запросы от пользователя и трансформирует их в запросы к другим сервисам |
Statusservice | Сервис, содержащий основную бизнес-логику Zepto. Хранит в оперативной памяти информацию о расположении бакетов, определяет, какой Bucketservice отвечает за нужный бакет, и управляет блокировками бакетов на время операций записи |
Bucketmaster | Сервис, запускающий и отслеживающий состояние всех сервисов Bucketservice и Bucketcompactor |
Bucketcompactor | Сервис, выполняющий компактизацию бакетов — удаление устаревших (del-) записей и уплотнение данных |
Bucketservice | Сервис, обрабатывающий запросы на чтение и запись данных для одного конкретного диска |
Nylon | Прокси-сервис Tarantool, обеспечивает доступ к базе данных FileDB |
FileDB | Кластер БД Tarantool, хранит метаданные файлового хранилища |
FS | Файловая система, в которой физически хранятся бакеты |
Zepto_data_cleaner | Служебный сервис, выполняющий фоновую очистку устаревших и удаленных данных: находит через |
Схема компонентов системы хранения Zepto X1.75 и X1.09 приведена на рисунке 3.
Компоненты системы хранения Zepto X1.75 и X1.09 приведены в таблице 3.
Компонент | Описание |
|---|---|
Zeptoproxy | Фронт-сервис Zepto. Принимает запросы от пользователя и трансформирует их в запросы к другим сервисам |
Statusservice | Сервис, содержащий основную бизнес-логику Zepto. Хранит в оперативной памяти информацию о расположении бакетов, определяет, какой Bucketservice отвечает за нужный бакет, и управляет блокировками бакетов на время операций записи |
Bucketmaster | Сервис, запускающий и отслеживающий состояние всех сервисов Bucketservice и Bucketcompactor |
Bucketcompactor | Сервис, выполняющий компактизацию бакетов — удаление устаревших (del-) записей и уплотнение данных |
Bucketservice | Сервис, обрабатывающий запросы на чтение и запись данных для одного конкретного диска |
XMG | Сервис, осуществляющий миграцию данных из субкластера x3 во второй субкластер (x1.75 или x1.09). Необходим только в инсталляциях, работающих в режиме x1.75 или x1.09 |
XDB | Сервис, хранящий метаданные, необходимые для работы режимов x1.75 и x1.09: информацию о группах избыточности и миграциях. Необходим только в инсталляциях, работающих в режиме x1.75 или x1.09 |
Nylon | Прокси-сервис Tarantool, обеспечивает доступ к базе данных FileDB |
FileDB | Кластер БД Tarantool, хранит метаданные файлового хранилища |
FS | Файловая система, в которой физически хранятся бакеты |
TarantoolDB | БД Tarantool, хранит журнал удалений (dellog) — del-записи, которые в режимах x1.75 и x1.09 не записываются в бакеты, а сохраняются отдельно из-за особенностей компактизации данных, разбитых на группы избыточности. |
Zepto_data_cleaner | Служебный сервис, выполняющий фоновую очистку устаревших и удаленных данных: находит через |