API ZDS

Назначение API

API ZDS делится на три группы:

  • внешнее API для клиентских операций нижнего слоя хранения;
  • внутреннее API для обмена между узлами кластера;
  • административное API для сопровождения и служебных действий.

Такое разделение важно сохранять и в документации, и в конфигурации сервиса. Внешний клиентский запрос и межузловой обмен не должны описываться как один и тот же тип операций.

Внешнее API

Внешнее API используется для операций с файлами и вольюмами на уровне самого сервиса ZDS.

Операции с файлами

МетодПутьНазначениеКто вызывает
GET/get_fileПолучение файлаВнешний клиент или вышестоящий сервис
PUT/upload_fileЗагрузка файлаВнешний клиент или вышестоящий сервис
GET/stat_fileПолучение информации о файлеВнешний клиент или вышестоящий сервис
DELETE/delete_fileУдаление файлаВнешний клиент или вышестоящий сервис
GET/count_filesПолучение количества файловВнешний клиент или вышестоящий сервис
GET/statusПолучение статуса узлаВнешний клиент или служба мониторинга

Основные параметры файловых операций:

  • volume - имя вольюма;
  • key - ключ объекта;
  • revisionId - идентификатор версии объекта;
  • partRevisionId - идентификатор версии части объекта;
  • number - номер части объекта.

В зависимости от операции могут использоваться дополнительные параметры запроса.

Операции с вольюмами

МетодПутьНазначениеКто вызывает
POST/volume/initСоздание вольюмаВнешний клиент или управляющий сервис
DELETE/volume/destroyУдаление вольюмаВнешний клиент или управляющий сервис
GET/volume/statusПолучение статуса вольюмаВнешний клиент или управляющий сервис
GET/volume/scanЛистинг файлов вольюмаВнешний клиент или управляющий сервис
GET/volume/listПолучение списка вольюмовВнешний клиент или управляющий сервис

Основные параметры:

  • volume - имя вольюма;
  • storageClass - класс хранения вольюма.

Для операции листинга дополнительно могут использоваться:

  • token - continuation token;
  • limit - ограничение количества файлов.

Внутреннее API

Внутреннее API используется только для взаимодействия узлов ZDS между собой. Эти методы не являются внешним пользовательским интерфейсом и должны рассматриваться как внутрикластерные.

МетодПутьНазначение
GET/inner/statusПолучение состояния узла или кластера
GET/inner/get_metadataПолучение метаданных с другого узла
GET/inner/get_metadata_batchПолучение пакета метаданных
GET/inner/upload_metadataПередача метаданных на другой узел
POST/inner/drive/{driveIdx}/upload_partЗагрузка части файла на внешний узел
GET/inner/drive/{driveIdx}/get_partПолучение части файла с внешнего узла
GET/inner/drive/{driveIdx}/stat_partПолучение информации о части файла
DELETE/inner/drive/{driveIdx}/delete_partУдаление части файла
GET/inner/opsПолучение журнала операций
POST/inner/volume/initИнициализация вольюма на удалённом узле
DELETE/inner/volume/destroyУдаление вольюма на удалённом узле

Эти методы используются автоматически в процессе:

  • синхронизации;
  • обмена метаданными;
  • размещения частей;
  • восстановления после отказов.

Административное API

Административное API используется для служебного сопровождения кластера.

МетодПутьНазначениеКто вызывает
POST/admin/vacuum/startПринудительный запуск вакуумаАдминистратор или служба сопровождения
POST/admin/vacuum/stopПринудительная остановка вакуумаАдминистратор или служба сопровождения
POST/admin/set_external_offsetsЗамена внешних offsetАдминистратор или служба сопровождения
POST/admin/background_scanПринудительный запуск фонового сканированияАдминистратор или служба сопровождения
GET/admin/extended_statusПолучение расширенного статуса узлаАдминистратор, мониторинг или служба сопровождения

Что важно учитывать при использовании API

При работе с API ZDS рекомендуется соблюдать следующие правила:

  • не смешивать внешние и внутренние endpoint’ы в интеграционных сценариях;
  • использовать внутренние методы только в рамках самого кластера;
  • ограничивать доступ к административным endpoint’ам;
  • заранее учитывать, что операции с файлами завязаны на вольюмы и внутреннюю схему хранения.

Связанные статьи

Общее описание роли сервиса приведено в статье Что такое ZDS.

Параметры адресов, портов и служебных настроек см. в статье Конфигурация ZDS.