Это многостраничная версия текущего раздела для печати. .
Руководство для разработчиков
1 - Протокол службы обнаружения
Протокол службы обнаружения помогает новому участнику etcd найти остальных участников на этапе начальной инициализации кластера с помощью общего URL обнаружения.
Протокол используется только при начальной инициализации и не подходит для реконфигурации во время выполнения или мониторинга кластера.
Один новый токен обнаружения предназначен для инициализации одного уникального кластера etcd. Один токен может представлять только один кластер. После запуска протокола для токена его нельзя использовать для инициализации другого кластера, даже если первый процесс завершился с ошибкой на полпути.
Далее процесс обнаружения рассматривается на примере самостоятельно размещённого кластера. Общедоступная служба discovery.etcd.io работает так же, но скрывает неудобные URL, автоматически создаёт UUID и защищает от чрезмерного количества запросов. В основе общедоступной службы всё равно лежит кластер etcd, используемый как описанное здесь хранилище данных.
Рабочий процесс протокола
Протокол использует внутренний кластер etcd для координации начальной инициализации нового кластера. Сначала все новые участники взаимодействуют со службой и совместно формируют ожидаемый список. Затем каждый участник запускает сервер с этим списком, что выполняет ту же функцию, что и флаг -initial-cluster.
В примере ниже каждый шаг для наглядности показан в формате curl.
По соглашению протокол обнаружения etcd использует префикс ключей _etcd/registry. Если кластер службы расположен на http://example.com, полный URL пространства ключей будет http://example.com/v2/keys/_etcd/registry. Этот URL используется в примерах как префикс.
Создание нового токена обнаружения
Создайте уникальный токен, идентифицирующий новый кластер. На следующих шагах он будет уникальным префиксом пространства ключей обнаружения. Простой способ создать токен — использовать uuidgen:
Указание ожидаемого размера кластера
Для токена необходимо указать размер кластера. Служба использует его, чтобы определить, когда найдены все участники, изначально формирующие кластер.
Обычно размер кластера равен 3, 5 или 7. Подробнее см. в разделе оптимального размера кластера .
Запуск процессов etcd
Передайте URL обнаружения флагу -discovery и запустите процессы etcd. При наличии флага -discovery каждый процесс автоматически выполняет следующие шаги.
Саморегистрация
Сначала процесс etcd регистрирует себя как участника по URL обнаружения. Для этого ID участника создаётся как ключ URL.
Проверка состояния
Процесс проверяет ожидаемый размер кластера и состояние регистрации по URL, а затем выбирает следующее действие.
Если зарегистрированных участников недостаточно, процесс ожидает появления остальных.
Если участников больше ожидаемого размера N, первые N принимаются за список кластера. Если текущий участник входит в список, процедура завершается успешно и получает из списка всех одноранговых участников. В противном случае она завершается ошибкой, сообщающей, что кластер заполнен.
В реализации etcd участник может проверить состояние кластера ещё до саморегистрации, поэтому при заполненном кластере отказ произойдёт быстро.
Ожидание всех участников
Процесс ожидания подробно описан в документации API etcd .
Он продолжает ожидать, пока не найдёт всех участников.
Общедоступная служба обнаружения
CoreOS Inc. размещает общедоступную службу на https://discovery.etcd.io/ с дополнительными удобствами.
Скрытие префикса ключа
Служба перенаправляет https://discovery.etcd.io/${UUID} к стоящему за ней кластеру etcd для ключа /v2/keys/_etcd/registry. Это скрывает префикс реестра и делает URL короче и понятнее.
Получение нового токена
Процесс создания следует шагам от создания нового токена до указания ожидаемого размера кластера .
Проверка состояния обнаружения
Состояние токена, включая зарегистрированные машины, можно проверить, запросив значение UUID.
Репозиторий с открытым исходным кодом
Репозиторий расположен по адресу https://github.com/coreos/discovery.etcd.io . На его основе можно создать собственную службу обнаружения.
2 - Настройка локального кластера
Для тестирования и разработки быстрее и проще всего настроить локальный кластер. Промышленное развёртывание описано в разделе кластеризации .
Локальный автономный кластер
Запуск кластера
Чтобы развернуть автономный кластер etcd, выполните:
Если бинарный файл etcd отсутствует в текущем рабочем каталоге, он может находиться в $GOPATH/bin/etcd или /usr/local/bin/etcd. Укажите правильный путь при запуске.
Работающий участник etcd принимает клиентские запросы на localhost:2379.
Взаимодействие с кластером
Используйте etcdctl для взаимодействия с работающим кластером:
Сохраните в кластере пример пары «ключ — значение»:
Вывод OK означает, что пара успешно сохранена.
Получите значение ключа
foo:Если возвращено
bar, взаимодействие с кластером etcd работает ожидаемым образом.
Локальный кластер из нескольких участников
Запуск кластера
В корне git-репозитория etcd находится Procfile, упрощающий настройку локального кластера из нескольких участников. Перейдите в корень дерева исходного кода etcd и выполните следующие действия:
Установите
goremanдля управления приложениями на основе Procfile:Запустите кластер через
goreman, используя штатный Procfile etcd:Участники запускаются и принимают клиентские запросы соответственно на
localhost:2379,localhost:22379иlocalhost:32379.
Взаимодействие с кластером
Используйте etcdctl для взаимодействия с работающим кластером:
Выведите список участников:
Список участников etcd выглядит следующим образом:
Сохраните в кластере пример пары «ключ — значение»:
Вывод OK означает, что пара успешно сохранена.
Проверка отказоустойчивости
Чтобы проверить отказоустойчивость etcd, остановите одного участника и попытайтесь получить ключ.
Определите имя процесса участника, которого нужно остановить.
Свойства кластера из нескольких участников перечислены в
Procfile. Для примера возьмём участника с именем процессаetcd2.Остановите участника:
Сохраните ключ:
Получите ключ, сохранённый на предыдущем шаге:
Получите ключ у остановленного участника:
Команда должна вывести ошибку из-за отсутствия соединения:
Перезапустите остановленного участника:
Получите ключ у перезапущенного участника:
После перезапуска участника соединение восстанавливается, и
etcdctlснова может успешно получить ключ. Дополнительные сведения приведены в разделе взаимодействия с etcd .
3 - Интеракция с etcd
Пользователи чаще всего взаимодействуют с etcd, устанавливая или получая значение ключа. В этом разделе описано, как это сделать с помощью etcdctl — командной строки для взаимодействия с сервером etcd. Концепции, описанные здесь, должны применимы к gRPC–API или API клиентской библиотеки.
Версию API 2 или 3, которую etcdctl использует для связи с etcd, задаёт
переменная окружения ETCDCTL_API. По умолчанию etcdctl из master (3.4)
использует API v3, а версии 3.3 и старше — API v2.
Примечание: любой ключ, созданный с использованием v2 API, не сможет быть запрослен через v3 API. Запрос v3 API etcdctl get ключа v2 завершится с кодом 0 и без данных ключа, это ожидаемое поведение.
Найти версии
etcdctl версия и версия сервера API могут быть полезны при определении подходящих команд для выполнения различных операций с etcd.
Здесь команда для поиска версий:
Запишите ключ
Приложения хранят ключи в кластере etcd, записывая их в ключи. Каждый сохраненный ключ реплицируется всем участникам кластера etcd через протокол Raft для достижения согласованности и надежности.
Команда задаёт ключу foo значение bar:
Также ключ можно установить на определенный период времени, привязав к нему аренду.
Здесь команда для установки значения ключа foo1 равным bar1 для 10s.
В команде выше идентификатор арены 1234abcd относится к идентификатору, возвращенному при создании арены длительности 10s. Этот идентификатор можно затем прикрепить к ключу.
Прочитать ключи
Приложения могут читать из кластера etcd один ключ или диапазон ключей.
Предположим, что кластер etcd содержит следующие ключи:
Команда читает значение ключа foo:
Команда читает значение ключа foo в шестнадцатеричном формате:
Команда выводит только значение ключа foo:
Команда читает диапазон ключей от foo до foo3:
foo3 исключается, так как диапазон является полуоткрытым интервалом [foo, foo3), исключающим foo3.
Команда читает все ключи с префиксом foo:
Здесь команда для обхода всех ключей, предшествующих foo, с ограничением количества результатов до 2:
Здесь команда для обхода всех ключей, предшествующих foo, с использованием RangeStream
RPC. Результат идентичен однократному Range:
--stream не поддерживает --order, --sort-by и фильтры ревизий.
Прочитать версию ключа в прошлом состоянии
Приложения могут захотеть прочитать устаревшие версии ключа. Например, приложение может захотеть откатиться к старой конфигурации, обратившись к более ранней версии ключа. Альтернативно, приложение может получить согласованное представление над несколькими ключами через несколько запросов, обратившись к истории ключа. Поскольку каждое изменение в кластере etcd ключ-значение увеличивает глобальную ревизию кластера etcd, приложение может прочитать устаревшие ключи, предоставив более старую ревизию etcd.
Предположим, что кластер etcd уже содержит следующие ключи:
Здесь пример, как получить доступ к прошлым версиям ключей:
Читать ключи, которые не меньше указанного ключа по байтовому значению
Приложения могут хотеть прочитать ключи, которые больше или равны байтовому значению указанного ключа.
Предположим, что кластер etcd уже содержит следующие ключи:
Команда читает ключи, байтовое значение которых не меньше ключа b:
Удалить ключи
Приложения могут удалить ключ или диапазон ключей из кластера etcd.
Предположим, что кластер etcd уже содержит следующие ключи:
Здесь команда для удаления ключа foo:
Здесь команда для удаления ключей от foo до foo9:
Команда удаляет zoo и возвращает удалённую пару «ключ — значение»:
Команда удаляет ключи с префиксом zoo:
Команда удаляет ключи, байтовое значение которых не меньше ключа b:
Наблюдение за изменениями ключа
Приложения могут наблюдать за ключом или диапазоном ключей для мониторинга любых обновлений.
Здесь команда для наблюдения за ключом foo:
Команда наблюдает за ключом foo в шестнадцатеричном формате:
Здесь команда для наблюдения за диапазоном ключей от foo до foo9:
Здесь команда для наблюдения за ключами с префиксом foo:
Команда наблюдает за несколькими ключами foo и zoo:
Наблюдение за историческими изменениями ключей
Программы могут хотеть наблюдать за историческими изменениями ключей в etcd. Например, программа может желать получать все модификации ключа; если программа останется подключена к etcd, то watch будет достаточно. Однако, если программа или etcd сбоит, изменение может произойти во время сбоя, и программа не получит обновление в реальном времени. Чтобы гарантировать доставку обновления, программа должна быть способна наблюдать за историческими изменениями ключей. Для этого программа может указать историческую ревизию при наблюдении, как при чтении прошлых версий ключей.
Предположим, что мы завершили следующую последовательность операций:
Здесь пример наблюдения за историческими изменениями:
Здесь пример наблюдения только с последней исторической измененной точки:
Наблюдение за прогрессом
Приложение может проверять ход наблюдения, чтобы определить актуальность потока. Например, при обновлении кэша полезно знать, не устарел ли он относительно ревизии, полученной чтением по кворуму.
Запросы прогресса можно отправлять с помощью команды “progress” в интерактивном сеансе наблюдения, чтобы попросить сервер etcd отправлять уведомление о прогрессе в потоке наблюдения:
Номер ревизии в ответе на уведомление о прогрессе — это номер ревизии локального узла сервера etcd, к которому подключено наблюдение. Если этот узел отсечен и не является частью кворума, то этот номер ревизии уведомления о прогрессе может быть ниже номера ревизии, возвращаемого чтением кворума на непрерывном узле сервера etcd.
Компактированные ревизии
Как мы уже упоминали, etcd хранит ревизии, чтобы приложения могли читать прошлые версии ключей. Однако для того чтобы избежать накопления неограниченного количества истории, важно проводить компактацию прошлых ревизий. После компактации etcd удаляет исторические ревизии, освобождая ресурсы для будущего использования. Все превышенные данные с ревизиями, предшествующими компактированной ревизии, станут недоступны.
Здесь команда для компактного хранения ревизий:
Текущая ревизия сервера etcd можно найти с помощью команды get для любого ключа (существующего или несуществующего) в формате json. Пример показан ниже для ключа mykey, который не существует на сервере etcd:
Выдать аренду
Приложения могут выдавать аренды для ключей из кластера etcd. Когда ключ прикреплен к аренде, его срок жизни связан с сроком жизни аренды, который в свою очередь регулируется временем жизни (TTL). Каждая аренда имеет минимальное значение времени жизни (TTL), указанное приложением при выдаче. Фактическое значение TTL арены составляет не менее минимального TTL и выбирается кластером etcd. После истечения срока жизни TTL арены она истекает и все прикрепленные ключи удаляются.
Команда выдаёт аренду:
Отменить аренду
Приложения отменяют аренды по идентификатору арены. Отмена арены удаляет все связанные с ней ключи.
Предположим, что мы завершили следующую последовательность операций:
Команда отзывает ту же аренду:
Сохраняйте аренду активной
Приложения могут поддерживать аренду активной обновлением её TTL, чтобы она не истекла.
Предположим, что мы завершили следующую последовательность операций:
Команда поддерживает ту же аренду активной:
Получить информацию об аренде
Приложения могут заинтересоваться информацией об арендах, чтобы их можно было продлить или проверить, существует ли аренда и не истек ли срок её действия. Приложения также могут заинтересоваться ключами, к которым прикреплена определённая аренда.
Предположим, что мы завершили следующую последовательность операций:
Команда получает сведения об аренде:
Команда получает сведения об аренде вместе с привязанными ключами:
4 - Зачем нужен шлюз gRPC
etcd v3 использует gRPC как протокол обмена сообщениями. Проект etcd включает основанный на gRPC клиент Go и утилиту командной строки etcdctl для взаимодействия с кластером etcd через gRPC. Для языков без поддержки gRPC etcd предоставляет JSON-шлюз gRPC . Он служит RESTful-прокси, преобразующим запросы HTTP/JSON в сообщения gRPC.
Использование шлюза gRPC
Шлюз принимает JSON-сопоставление
определений сообщений
protocol buffer
etcd. Поля key и value определены как массивы
байтов, поэтому в JSON их обязательно кодировать в base64. В следующих примерах
используется curl, но подойдёт любой клиент HTTP/JSON.
Примечания
Конечная точка шлюза gRPC менялась начиная с etcd v3.3:
- etcd v3.2 и более ранние версии используют только
[CLIENT-URL]/v3alpha/*. - etcd v3.3 использует
[CLIENT-URL]/v3beta/*, сохраняя[CLIENT-URL]/v3alpha/*. - etcd v3.4 использует
[CLIENT-URL]/v3/*, сохраняя[CLIENT-URL]/v3beta/*.[CLIENT-URL]/v3alpha/*устарел.
- etcd v3.5 и более поздние версии используют только
[CLIENT-URL]/v3/*.[CLIENT-URL]/v3beta/*устарел.
gRPC-gateway не поддерживает аутентификацию по Common Name сертификата TLS.
Запись и получение ключей
Для чтения и записи ключей используйте службы /v3/kv/range и /v3/kv/put:
Наблюдение за ключами
Для наблюдения за ключами используйте службу /v3/watch:
Транзакции
Выполните транзакцию через /v3/kv/txn:
Аутентификация
Настройте аутентификацию с помощью службы /v3/auth:
Получите токен аутентификации etcd через /v3/auth/authenticate:
Чтобы получить ключ с учётными данными аутентификации, задайте токен в заголовке Authorization:
Ответы об ошибках
Шлюз gRPC преобразует статус gRPC в код состояния HTTP и тело ошибки JSON.
Начиная с etcd v3.6, обновление до grpc-gateway v2 изменило обработку ошибок
(см. примечание об обработке ошибок
в руководстве по
миграции на v2), и теперь поведение шлюза соответствует google.rpc.Status
(code, message, details), как описано в модели ошибок API Google
.
В старых версиях grpc-gateway также присутствовало поле верхнего уровня error,
но etcd v3.6 и более новые версии его не поддерживают.
Клиентам следует считать код состояния HTTP главным признаком успеха или ошибки.
При ошибке запроса основным источником сведений должно быть поле message, а
дополнительные данные следует использовать как контекст.
Swagger
Сгенерированные определения API Swagger находятся в rpc.swagger.json .
5 - Именование и обнаружение gRPC
etcd предоставляет резолвер gRPC для альтернативной системы имён, которая получает конечные точки из etcd при обнаружении служб gRPC. Механизм основан на наблюдении за обновлениями ключей с префиксом имени службы.
Эта возможность является экспериментальной, поскольку зависит от пакета google.golang.org/grpc/resolver , который всё ещё считается экспериментальным в grpc-go.
Использование обнаружения etcd с go-grpc
Клиент etcd предоставляет резолвер gRPC для разрешения конечных точек gRPC с бэкендом etcd. Резолвер инициализируется клиентом etcd:
Управление конечными точками службы
Резолвер etcd рассматривает как потенциальные конечные точки службы все ключи под префиксом целевого имени с завершающим “/” (например, “foo/bar/my-service/”), значения которых закодированы в JSON (исторически — go-grpc naming.Update).
Конечные точки добавляются созданием новых ключей и удаляются удалением ключей.
Добавление конечной точки
Новые конечные точки можно добавить в службу с помощью etcdctl:
Метод endpoints.Manager клиента etcd также может зарегистрировать новую конечную точку с ключом, соответствующим Addr:
Чтобы включить циклическую балансировку нагрузки при подключении к службе с несколькими конечными точками, настройте соединение с внутренним циклическим балансировщиком gRPC:
Удаление конечной точки
Узлы можно удалить из службы с помощью etcdctl:
Метод endpoints.Manager клиента etcd также поддерживает удаление конечных точек:
Регистрация конечной точки с арендой
Регистрация конечной точки с арендой гарантирует её удаление из службы, если узел не сможет поддерживать heartbeat keepalive, например из-за отказа машины:
В Golang:
Атомарное обновление конечных точек
Чтобы изменить несколько конечных точек в одной транзакции, можно напрямую использовать endpoints.Manager:
6 - Встраивание etcd в Go-приложение
embed go для запуска сервера etcd внутри вашей приложенияПакет go etcd embed предоставляет простой способ встраивания сервера etcd непосредственно в ваше приложение.
Дополнительные сведения см. в документации пакета embed .
7 - Ограничения системы
Ограничение размера запроса
etcd разработан для обработки небольших пар ключ-значение, характерных для метаданных. Более крупные запросы будут работать, но могут увеличить задержку других запросов. По умолчанию максимальный размер любого запроса составляет 1.5 MiB. Этот лимит можно настроить с помощью флага --max-request-bytes для сервера etcd.
Ограничение размера хранилища
По умолчанию ограничение размера хранилища составляет 2 GiB, настраивается с помощью флага --quota-backend-bytes. 8 GiB — рекомендуемый максимальный размер для обычных сред, etcd выдает предупреждение при запуске, если сконфигурированное значение превышает его.
8 - Возможности etcd
В этом документе представлен обзор возможностей etcd, помогающий понять их назначение и связанный с ними процесс устаревания. Порядок разработки возможностей etcd описан в рекомендациях для разработчиков .
Возможности etcd проходят три стадии: экспериментальную, стабильную и небезопасную. Получить их список можно командой etcd --help.
Экспериментальные
Чтобы получить обратную связь на раннем этапе, новые возможности обычно добавляются как экспериментальные. Их можно определить по имени флага с префиксом --experimental. При использовании экспериментальной возможности учитывайте следующее:
- Из-за недостаточного пользовательского тестирования она может содержать ошибки и работать не так, как ожидается.
- По умолчанию она отключена.
- Её поддержка может быть прекращена в любой момент без уведомления.
- Возможность может быть удалена в следующем минорном или мажорном выпуске без соблюдения политики устаревания возможностей , если она не перейдёт в стабильную стадию.
- Команда проекта приветствует сообщения о проблемах с экспериментальными возможностями, однако такие проблемы могут иметь более низкий приоритет, чем проблемы стабильных возможностей.
- Экспериментальный флаг возможности устаревает при переходе в стабильную стадию. Следует как можно раньше перейти на стабильный флаг.
Стабильные
Это наиболее распространённая стадия возможностей etcd. Стабильная возможность обладает следующими свойствами:
- Поддерживается в составе поддерживаемых выпусков etcd.
- Может быть включена по умолчанию.
- Прекращение поддержки должно соответствовать политике устаревания возможностей .
Небезопасные
Небезопасные возможности встречаются редко и перечисляются в разделе Unsafe feature: документации по использованию etcd. По умолчанию они отключены. Используйте их с осторожностью и в соответствии с документацией. Небезопасная возможность может быть удалена в следующем минорном или мажорном выпуске без соблюдения политики устаревания.
Устаревание возможностей
Экспериментальные
Экспериментальная возможность устаревает при переходе в стабильную стадию.
- В документации экспериментальной возможности появляется сообщение об устаревании с рекомендацией использовать соответствующий стабильный флаг, например
DEPRECATED. Use <feature-name> instead. - Устаревшая возможность удаляется в следующем выпуске.
Стабильные
По мере развития проекта стабильную возможность иногда приходится объявлять устаревшей и удалять. В таком случае:
- До запланированного выпуска с объявлением об устаревании в документации появляется предупреждение, например
To be deprecated in <release>.. Если уже запланирована замена возможности, помеченнойTo be deprecated, документация также указывает её, напримерUse <feature-name> instead.. - В запланированном выпуске возможность объявляется устаревшей. В документации появляется соответствующее сообщение с рекомендацией использовать связанную стабильную возможность, например
DEPRECATED. Use <feature-name> instead. - Устаревшая возможность удаляется в следующем выпуске.
9 - Справочник API
Этот справочник API автоматически создан из указанных файлов .proto.
Служба Auth (api/etcdserverpb/rpc.proto)
| Метод | Тип запроса | Тип ответа | Описание |
|---|---|---|---|
| AuthEnable | AuthEnableRequest | AuthEnableResponse | AuthEnable включает аутентификацию. |
| AuthDisable | AuthDisableRequest | AuthDisableResponse | AuthDisable отключает аутентификацию. |
| AuthStatus | AuthStatusRequest | AuthStatusResponse | AuthStatus отображает состояние аутентификации. |
| Authenticate | AuthenticateRequest | AuthenticateResponse | Authenticate обрабатывает запрос аутентификации. |
| UserAdd | AuthUserAddRequest | AuthUserAddResponse | UserAdd добавляет нового пользователя. Имя пользователя не может быть пустым. |
| UserGet | AuthUserGetRequest | AuthUserGetResponse | UserGet получает подробные сведения о пользователе. |
| UserList | AuthUserListRequest | AuthUserListResponse | UserList получает список всех пользователей. |
| UserDelete | AuthUserDeleteRequest | AuthUserDeleteResponse | UserDelete удаляет указанного пользователя. |
| UserChangePassword | AuthUserChangePasswordRequest | AuthUserChangePasswordResponse | UserChangePassword изменяет пароль указанного пользователя. |
| UserGrantRole | AuthUserGrantRoleRequest | AuthUserGrantRoleResponse | UserGrant предоставляет указанному пользователю роль. |
| UserRevokeRole | AuthUserRevokeRoleRequest | AuthUserRevokeRoleResponse | UserRevokeRole отзывает роль указанного пользователя. |
| RoleAdd | AuthRoleAddRequest | AuthRoleAddResponse | RoleAdd добавляет новую роль. Имя роли не может быть пустым. |
| RoleGet | AuthRoleGetRequest | AuthRoleGetResponse | RoleGet получает подробные сведения о роли. |
| RoleList | AuthRoleListRequest | AuthRoleListResponse | RoleList получает список всех ролей. |
| RoleDelete | AuthRoleDeleteRequest | AuthRoleDeleteResponse | RoleDelete удаляет указанную роль. |
| RoleGrantPermission | AuthRoleGrantPermissionRequest | AuthRoleGrantPermissionResponse | RoleGrantPermission предоставляет указанной роли разрешение на заданный ключ или диапазон. |
| RoleRevokePermission | AuthRoleRevokePermissionRequest | AuthRoleRevokePermissionResponse | RoleRevokePermission отзывает у указанной роли разрешение на ключ или диапазон. |
Служба Cluster (api/etcdserverpb/rpc.proto)
| Метод | Тип запроса | Тип ответа | Описание |
|---|---|---|---|
| MemberAdd | MemberAddRequest | MemberAddResponse | MemberAdd добавляет участника в кластер. |
| MemberRemove | MemberRemoveRequest | MemberRemoveResponse | MemberRemove удаляет существующего участника из кластера. |
| MemberUpdate | MemberUpdateRequest | MemberUpdateResponse | MemberUpdate обновляет конфигурацию участника. |
| MemberList | MemberListRequest | MemberListResponse | MemberList перечисляет всех участников кластера. |
| MemberPromote | MemberPromoteRequest | MemberPromoteResponse | MemberPromote повышает обучающегося участника raft без права голоса до участника raft с правом голоса. |
Служба KV (api/etcdserverpb/rpc.proto)
| Метод | Тип запроса | Тип ответа | Описание |
|---|---|---|---|
| Range | RangeRequest | RangeResponse | Range получает ключи диапазона из хранилища ключей и значений. |
| Put | PutRequest | PutResponse | Put помещает заданный ключ в хранилище ключей и значений. Запрос put увеличивает ревизию хранилища и создаёт одно событие в истории событий. |
| DeleteRange | DeleteRangeRequest | DeleteRangeResponse | DeleteRange удаляет заданный диапазон из хранилища ключей и значений. Запрос удаления увеличивает ревизию хранилища и создаёт событие удаления в истории для каждого удалённого ключа. |
| Txn | TxnRequest | TxnResponse | Txn обрабатывает несколько запросов в одной транзакции. Запрос txn увеличивает ревизию хранилища ключей и значений и создаёт события с одной ревизией для каждого выполненного запроса. Многократное изменение одного ключа в одной txn недопустимо. |
| Compact | CompactionRequest | CompactionResponse | Compact компактизирует историю событий в хранилище ключей и значений etcd. Хранилище следует периодически компактизировать, иначе история событий будет расти бесконечно. |
Служба Lease (api/etcdserverpb/rpc.proto)
| Метод | Тип запроса | Тип ответа | Описание |
|---|---|---|---|
| LeaseGrant | LeaseGrantRequest | LeaseGrantResponse | LeaseGrant создаёт аренду, которая истекает, если сервер не получает keepAlive в течение заданного срока жизни. При истечении аренды все присоединённые к ней ключи истекают и удаляются. Каждый истёкший ключ создаёт событие удаления в истории событий. |
| LeaseRevoke | LeaseRevokeRequest | LeaseRevokeResponse | LeaseRevoke отзывает аренду. Все присоединённые к ней ключи истекают и удаляются. |
| LeaseKeepAlive | LeaseKeepAliveRequest | LeaseKeepAliveResponse | LeaseKeepAlive поддерживает аренду активной, передавая потоком запросы поддержания активности от клиента серверу и ответы от сервера клиенту. |
| LeaseTimeToLive | LeaseTimeToLiveRequest | LeaseTimeToLiveResponse | LeaseTimeToLive получает сведения об аренде. |
| LeaseLeases | LeaseLeasesRequest | LeaseLeasesResponse | LeaseLeases перечисляет все существующие аренды. |
Служба Maintenance (api/etcdserverpb/rpc.proto)
| Метод | Тип запроса | Тип ответа | Описание |
|---|---|---|---|
| Alarm | AlarmRequest | AlarmResponse | Alarm активирует, деактивирует и запрашивает аварийные сигналы о состоянии кластера. |
| Status | StatusRequest | StatusResponse | Status получает состояние участника. |
| Defragment | DefragmentRequest | DefragmentResponse | Defragment дефрагментирует базу данных бэкенда участника для освобождения места. |
| Hash | HashRequest | HashResponse | Hash вычисляет хеш всего пространства ключей бэкенда, включая сегменты key, lease и другие сегменты хранилища. Предназначено ТОЛЬКО для тестирования! Не полагайтесь на операцию в рабочей среде с текущими транзакциями, поскольку Hash не удерживает блокировки MVCC. Для проверки согласованности сегмента “key” используйте API “HashKV”. |
| HashKV | HashKVRequest | HashKVResponse | HashKV вычисляет хеш всех ключей MVCC до заданной ревизии. Перебирает только сегмент “key” в хранилище бэкенда. |
| Snapshot | SnapshotRequest | SnapshotResponse | Snapshot передаёт снимок всего бэкенда от участника клиенту потоком. |
| MoveLeader | MoveLeaderRequest | MoveLeaderResponse | MoveLeader запрашивает у текущего узла-лидера передачу лидерства назначенному узлу. |
| Downgrade | DowngradeRequest | DowngradeResponse | Downgrade запрашивает понижение версии, проверяет его допустимость или отменяет его для версии кластера. Поддерживается начиная с etcd 3.5. |
Служба Watch (api/etcdserverpb/rpc.proto)
| Метод | Тип запроса | Тип ответа | Описание |
|---|---|---|---|
| Watch | WatchRequest | WatchResponse | Watch наблюдает за происходящими или уже произошедшими событиями. Ввод и вывод являются потоками: входной поток создаёт и отменяет наблюдателей, выходной отправляет события. Один RPC watch может наблюдать несколько диапазонов ключей и одновременно передавать события нескольких наблюдений. Всю историю событий можно наблюдать с последней ревизии компактизации. |
Сообщение AlarmMember (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| memberID | memberID — идентификатор участника, связанного с активированным аварийным сигналом. | uint64 |
| alarm | alarm — тип активированного аварийного сигнала. | AlarmType |
Сообщение AlarmRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| action | action — тип отправляемого запроса аварийного сигнала. Действие может GET состояния сигналов, ACTIVATE сигнал или DEACTIVATE активированный сигнал. | AlarmAction |
| memberID | memberID — идентификатор участника, связанного с сигналом. Если memberID равен 0, запрос относится ко всем участникам. | uint64 |
| alarm | alarm — тип аварийного сигнала, рассматриваемого запросом. | AlarmType |
Сообщение AlarmResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| alarms | alarms — список аварийных сигналов, связанных с запросом. | (slice of) AlarmMember |
Сообщение AuthDisableRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Сообщение AuthDisableResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение AuthEnableRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Сообщение AuthEnableResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение AuthRoleAddRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | name — имя роли, добавляемой в систему аутентификации. | string |
Сообщение AuthRoleAddResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение AuthRoleDeleteRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| role | string |
Сообщение AuthRoleDeleteResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение AuthRoleGetRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| role | string |
Сообщение AuthRoleGetResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| header | ResponseHeader | |
| perm | (slice of) authpb.Permission |
Сообщение AuthRoleGrantPermissionRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | name — имя роли, которой будет предоставлено разрешение. | string |
| perm | perm — разрешение, предоставляемое роли. | authpb.Permission |
Сообщение AuthRoleGrantPermissionResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение AuthRoleListRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Сообщение AuthRoleListResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| roles | (slice of) string |
Сообщение AuthRoleRevokePermissionRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| role | string | |
| key | bytes | |
| range_end | bytes |
Сообщение AuthRoleRevokePermissionResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение AuthStatusRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Сообщение AuthStatusResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| enabled | bool | |
| authRevision | authRevision — текущая ревизия хранилища аутентификации | uint64 |
Сообщение AuthUserAddRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | string | |
| password | string | |
| options | authpb.UserAddOptions | |
| hashedPassword | string |
Сообщение AuthUserAddResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение AuthUserChangePasswordRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | name — имя пользователя, пароль которого изменяется. | string |
| password | password — новый пароль пользователя. Обратите внимание: это поле будет удалено на уровне API. | string |
| hashedPassword | hashedPassword — новый пароль пользователя. Обратите внимание: это поле будет инициализировано на уровне API. | string |
Сообщение AuthUserChangePasswordResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение AuthUserDeleteRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | name — имя удаляемого пользователя. | string |
Сообщение AuthUserDeleteResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение AuthUserGetRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | string |
Сообщение AuthUserGetResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| roles | (slice of) string |
Сообщение AuthUserGrantRoleRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| user | user — имя пользователя, которому следует предоставить указанную роль. | string |
| role | role — имя роли, предоставляемой пользователю. | string |
Сообщение AuthUserGrantRoleResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение AuthUserListRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Сообщение AuthUserListResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| users | (slice of) string |
Сообщение AuthUserRevokeRoleRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | string | |
| role | string |
Сообщение AuthUserRevokeRoleResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение AuthenticateRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| name | string | |
| password | string |
Сообщение AuthenticateResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| token | token — авторизованный токен, который можно использовать в последующих RPC | string |
Сообщение CompactionRequest (api/etcdserverpb/rpc.proto)
CompactionRequest компактизирует хранилище ключей и значений до заданной ревизии. Все замещённые ключи с ревизией меньше ревизии компактизации удаляются.
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| revision | revision — ревизия хранилища ключей и значений для операции компактизации. | int64 |
| physical | physical задаётся, чтобы RPC дождался физического применения компактизации к локальной базе данных и полного удаления компактизированных записей из базы данных бэкенда. | bool |
Сообщение CompactionResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение Compare (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| result | result — логическая операция данного сравнения. | CompareResult |
| target | target — поле пары «ключ — значение», проверяемое при сравнении. | CompareTarget |
| key | key — целевой ключ операции сравнения. | bytes |
| target_union | oneof | |
| version | version — версия заданного ключа | int64 |
| create_revision | create_revision — ревизия создания заданного ключа | int64 |
| mod_revision | mod_revision — ревизия последнего изменения заданного ключа. | int64 |
| value | value — значение заданного ключа в байтах. | bytes |
| lease | lease — идентификатор аренды заданного ключа. | int64 |
| range_end | range_end сравнивает заданную цель со всеми ключами диапазона [key, range_end). Подробнее о диапазонах ключей см. RangeRequest. | bytes |
Сообщение DefragmentRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Сообщение DefragmentResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение DeleteRangeRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| key | key — первый удаляемый ключ диапазона. | bytes |
| range_end | range_end — ключ, следующий за последним удаляемым ключом диапазона [key, range_end). Если range_end не задан, диапазон содержит только аргумент key. Если range_end на один бит больше заданного ключа, диапазон содержит все ключи с префиксом заданного ключа. Если range_end равен ‘\0’, диапазон содержит все ключи, большие либо равные аргументу key. | bytes |
| prev_kv | Если prev_kv задан, etcd получает предыдущие пары «ключ — значение» перед удалением. Они возвращаются в ответе удаления. | bool |
Сообщение DeleteRangeResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| deleted | deleted — количество ключей, удалённых запросом удаления диапазона. | int64 |
| prev_kvs | если в запросе задан prev_kv, возвращаются предыдущие пары «ключ — значение». | (slice of) mvccpb.KeyValue |
Сообщение DowngradeInfo (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| enabled | enabled указывает, включено ли понижение версии кластера. | bool |
| targetVersion | targetVersion — целевая версия понижения. | string |
Сообщение DowngradeRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| action | action — тип отправляемого запроса понижения версии. Действие может VALIDATE целевую версию, DOWNGRADE версию кластера или CANCEL текущую задачу понижения. | DowngradeAction |
| version | version — целевая версия понижения. | string |
Сообщение DowngradeResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| version | version — текущая версия кластера. | string |
Сообщение DowngradeVersionTestRequest (api/etcdserverpb/rpc.proto)
DowngradeVersionTestRequest используется только для тестирования. Версия в запросе читается как версия записи WAL. Если целевая версия понижения меньше этой версии, понижение (online) или миграция (offline) небезопасны и не должны разрешаться.
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ver | string |
Сообщение HashKVRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| revision | revision — ревизия хранилища ключей и значений для операции хеширования. | int64 |
Сообщение HashKVResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| hash | hash — значение хеша, вычисленное по ключам MVCC отвечающего участника до заданной ревизии. | uint32 |
| compact_revision | compact_revision — компактизированная ревизия хранилища ключей и значений в момент начала хеширования. | int64 |
| hash_revision | hash_revision — ревизия, до которой вычислен хеш. | int64 |
Сообщение HashRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Сообщение HashResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| hash | hash — значение хеша, вычисленное по бэкенду KV отвечающего участника. | uint32 |
Сообщение LeaseCheckpoint (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID — идентификатор аренды для контрольной точки. | int64 |
| remaining_TTL | Remaining_TTL — время, оставшееся до истечения аренды. | int64 |
Сообщение LeaseCheckpointRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| checkpoints | (slice of) LeaseCheckpoint |
Сообщение LeaseCheckpointResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение LeaseGrantRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| TTL | TTL — рекомендуемый срок жизни в секундах. Истёкшая аренда возвращает -1. | int64 |
| ID | ID — запрошенный идентификатор аренды. Если ID равен 0, арендодатель выбирает идентификатор. | int64 |
Сообщение LeaseGrantResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| ID | ID — идентификатор выданной аренды. | int64 |
| TTL | TTL — выбранный сервером срок жизни аренды в секундах. | int64 |
| error | string |
Сообщение LeaseKeepAliveRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID — идентификатор аренды, активность которой поддерживается. | int64 |
Сообщение LeaseKeepAliveResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| ID | ID — идентификатор аренды из запроса поддержания активности. | int64 |
| TTL | TTL — новый срок жизни аренды. | int64 |
Сообщение LeaseLeasesRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Сообщение LeaseLeasesResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| leases | (slice of) LeaseStatus |
Сообщение LeaseRevokeRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID — идентификатор отзываемой аренды. При отзыве ID все связанные ключи удаляются. | int64 |
Сообщение LeaseRevokeResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение LeaseStatus (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | int64 |
Сообщение LeaseTimeToLiveRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID — идентификатор аренды. | int64 |
| keys | keys равно true для запроса всех ключей, присоединённых к этой аренде. | bool |
Сообщение LeaseTimeToLiveResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| ID | ID — идентификатор аренды из запроса поддержания активности. | int64 |
| TTL | TTL — оставшийся срок жизни аренды в секундах; аренда истечёт менее чем через TTL+1 секунд. | int64 |
| grantedTTL | GrantedTTL — исходный выданный срок в секундах при создании или обновлении аренды. | int64 |
| keys | Keys — список ключей, присоединённых к аренде. | (slice of) bytes |
Сообщение Member (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID — идентификатор этого участника. | uint64 |
| name | name — понятное человеку имя участника. Если участник не запущен, имя является пустой строкой. | string |
| peerURLs | peerURLs — список URL, которые участник предоставляет кластеру для связи. | (slice of) string |
| clientURLs | clientURLs — список URL, которые участник предоставляет клиентам для связи. Если участник не запущен, clientURLs пуст. | (slice of) string |
| isLearner | isLearner указывает, является ли участник обучающимся участником raft. | bool |
Сообщение MemberAddRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| peerURLs | peerURLs — список URL, которые добавленный участник использует для связи с кластером. | (slice of) string |
| isLearner | isLearner указывает, является ли добавленный участник обучающимся участником raft. | bool |
Сообщение MemberAddResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| member | member — сведения о добавленном участнике. | Member |
| members | members — список всех участников после добавления нового. | (slice of) Member |
Сообщение MemberListRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| linearizable | bool |
Сообщение MemberListResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| members | members — список всех участников, связанных с кластером. | (slice of) Member |
Сообщение MemberPromoteRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID — идентификатор повышаемого участника. | uint64 |
Сообщение MemberPromoteResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| members | members — список всех участников после повышения участника. | (slice of) Member |
Сообщение MemberRemoveRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID — идентификатор удаляемого участника. | uint64 |
Сообщение MemberRemoveResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| members | members — список всех участников после удаления участника. | (slice of) Member |
Сообщение MemberUpdateRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| ID | ID — идентификатор обновляемого участника. | uint64 |
| peerURLs | peerURLs — новый список URL, которые участник использует для связи с кластером. | (slice of) string |
Сообщение MemberUpdateResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| members | members — список всех участников после обновления участника. | (slice of) Member |
Сообщение MoveLeaderRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| targetID | targetID — идентификатор узла нового лидера. | uint64 |
Сообщение MoveLeaderResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader |
Сообщение PutRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| key | key — ключ в байтах, помещаемый в хранилище ключей и значений. | bytes |
| value | value — значение в байтах, связываемое с ключом в хранилище. | bytes |
| lease | lease — идентификатор аренды, связываемой с ключом. Значение аренды 0 означает отсутствие аренды. | int64 |
| prev_kv | Если prev_kv задан, etcd получает предыдущую пару «ключ — значение» перед её изменением. Она возвращается в ответе put. | bool |
| ignore_value | Если ignore_value задан, etcd обновляет ключ с его текущим значением. Если ключ не существует, возвращается ошибка. | bool |
| ignore_lease | Если ignore_lease задан, etcd обновляет ключ с его текущей арендой. Если ключ не существует, возвращается ошибка. | bool |
Сообщение PutResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| prev_kv | если в запросе задан prev_kv, возвращается предыдущая пара «ключ — значение». | mvccpb.KeyValue |
Сообщение RangeRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| key | key — первый ключ диапазона. Если range_end не задан, запрос ищет только key. | bytes |
| range_end | range_end — верхняя граница запрошенного диапазона [key, range_end). Если range_end равен ‘\0’, диапазон содержит все ключи >= key. Если range_end равен key плюс один (например, “aa”+1 == “ab”, “a\xff”+1 == “b”), запрос получает все ключи с префиксом key. Если и key, и range_end равны ‘\0’, запрос возвращает все ключи. | bytes |
| limit | limit — ограничение количества ключей, возвращаемых запросом. Значение limit 0 означает отсутствие ограничения. | int64 |
| revision | revision — момент состояния хранилища ключей и значений для диапазона. Если revision меньше или равна нулю, диапазон относится к новейшему состоянию хранилища. Если ревизия компактизирована, возвращается ErrCompacted. | int64 |
| sort_order | sort_order — порядок возвращаемых отсортированных результатов. | SortOrder |
| sort_target | sort_target — поле пары «ключ — значение» для сортировки. | SortTarget |
| serializable | serializable задаёт использование сериализуемого локального чтения с участника для диапазонного запроса. По умолчанию запросы Range линеаризуемы; их задержка выше, а пропускная способность ниже, чем у сериализуемых запросов, зато они отражают текущий консенсус кластера. Ради повышения производительности ценой возможного чтения устаревших данных сериализуемый запрос обслуживается локально без достижения консенсуса с другими узлами. | bool |
| keys_only | если keys_only задан, возвращаются только ключи без значений. | bool |
| count_only | если count_only задан, возвращается только количество ключей в диапазоне. | bool |
| min_mod_revision | min_mod_revision — нижняя граница возвращаемых ревизий изменения ключей; ключи с меньшими ревизиями отфильтровываются. | int64 |
| max_mod_revision | max_mod_revision — верхняя граница возвращаемых ревизий изменения ключей; ключи с большими ревизиями отфильтровываются. | int64 |
| min_create_revision | min_create_revision — нижняя граница возвращаемых ревизий создания ключей; ключи с меньшими ревизиями отфильтровываются. | int64 |
| max_create_revision | max_create_revision — верхняя граница возвращаемых ревизий создания ключей; ключи с большими ревизиями отфильтровываются. | int64 |
Сообщение RangeResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| kvs | kvs — список пар «ключ — значение», соответствующих диапазонному запросу. При запросе count поле kvs пусто. | (slice of) mvccpb.KeyValue |
| more | more указывает, остались ли в запрошенном диапазоне ключи для возврата. | bool |
| count | при запросе count содержит фактическое количество ключей в диапазоне. В отличие от Kvs, оно не зависит от ограничений и фильтров (например, Min/Max, Create/Modify, Revisions) и отражает полное количество в указанном диапазоне. | int64 |
Сообщение RequestOp (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| request | request — объединение типов запросов, принимаемых транзакцией. | oneof |
| request_range | RangeRequest | |
| request_put | PutRequest | |
| request_delete_range | DeleteRangeRequest | |
| request_txn | TxnRequest |
Сообщение ResponseHeader (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| cluster_id | cluster_id — идентификатор кластера, отправившего ответ. | uint64 |
| member_id | member_id — идентификатор участника, отправившего ответ. | uint64 |
| revision | revision — ревизия хранилища ключей и значений при применении запроса; для вызовов, не взаимодействующих с хранилищем, она не задана (то есть равна 0). В ответах о ходе наблюдения header.revision обозначает прогресс. Все последующие события в этом потоке гарантированно имеют номер ревизии выше номера header.revision. | int64 |
| raft_term | raft_term — срок полномочий raft при применении запроса. | uint64 |
Сообщение ResponseOp (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| response | response — объединение типов ответов, возвращаемых транзакцией. | oneof |
| response_range | RangeResponse | |
| response_put | PutResponse | |
| response_delete_range | DeleteRangeResponse | |
| response_txn | TxnResponse |
Сообщение SnapshotRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Сообщение SnapshotResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | header содержит текущие сведения о хранилище ключей и значений. Первый заголовок в потоке снимка указывает момент времени снимка. | ResponseHeader |
| remaining_bytes | remaining_bytes — количество байтов blob, отправляемых после этого сообщения | uint64 |
| blob | blob содержит следующий фрагмент снимка в потоке снимка. | bytes |
| version | локальная версия сервера, создавшего снимок. В кластере с двоичными файлами разных версий каждый участник может возвращать иной результат. Указывает, какую версию сервера etcd следует использовать при восстановлении снимка. | string |
Сообщение StatusRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Сообщение StatusResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| version | version — версия протокола кластера, используемая отвечающим участником. | string |
| dbSize | dbSize — физически выделенный размер базы данных бэкенда отвечающего участника в байтах. | int64 |
| leader | leader — идентификатор участника, которого отвечающий участник считает текущим лидером. | uint64 |
| raftIndex | raftIndex — текущий зафиксированный индекс raft отвечающего участника. | uint64 |
| raftTerm | raftTerm — текущий срок полномочий raft отвечающего участника. | uint64 |
| raftAppliedIndex | raftAppliedIndex — текущий применённый индекс raft отвечающего участника. | uint64 |
| errors | errors содержит сведения об аварийных сигналах, работоспособности и состоянии. | (slice of) string |
| dbSizeInUse | dbSizeInUse — логически используемый размер базы данных бэкенда отвечающего участника в байтах. | int64 |
| isLearner | isLearner указывает, является ли участник обучающимся участником raft. | bool |
| storageVersion | storageVersion — версия файла БД. Она может обновляться с задержкой относительно целевой версии кластера. | string |
| dbSizeQuota | dbSizeQuota — настроенная квота хранилища etcd в байтах (значение, переданное экземпляру etcd флагом –quota-backend-bytes) | int64 |
| downgradeInfo | downgradeInfo указывает на наличие процесса понижения версии. | DowngradeInfo |
Сообщение TxnRequest (api/etcdserverpb/rpc.proto)
Из статьи Google о paxosdb: наша реализация строится вокруг мощного примитива MultiOp. Все остальные операции с базой данных, кроме итерации, реализованы как один вызов MultiOp. MultiOp применяется атомарно и состоит из трёх компонентов: 1. Список проверок guard. Каждая проверка guard проверяет одну запись базы данных: отсутствие или наличие значения либо равенство заданному значению. Две проверки guard могут относиться к одной или разным записям. Все проверки guard применяются, и MultiOp возвращает результаты. Если все проверки истинны, MultiOp выполняет t op (см. пункт 2 ниже), иначе — f op (см. пункт 3 ниже). 2. Список операций базы данных t op. Каждая операция списка является вставкой, удалением или поиском и применяется к одной записи. Две операции могут относиться к одной или разным записям. Они выполняются, если guard истинно. 3. Список операций базы данных f op. Аналогичен t op, но выполняется, если guard ложно.
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| compare | compare — список предикатов, представляющих конъюнкцию условий. Если сравнения успешны, запросы success обрабатываются по порядку, а ответ содержит их соответствующие ответы в том же порядке. Если сравнения неудачны, по порядку обрабатываются запросы failure, и ответ содержит соответствующие ответы по порядку. | (slice of) Compare |
| success | success — список запросов, применяемых, когда compare истинно. | (slice of) RequestOp |
| failure | failure — список запросов, применяемых, когда compare ложно. | (slice of) RequestOp |
Сообщение TxnResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| succeeded | succeeded равно true, если compare истинно, и false в противном случае. | bool |
| responses | responses — список ответов, соответствующих результатам применения success, если succeeded равно true, либо failure, если succeeded равно false. | (slice of) ResponseOp |
Сообщение WatchCancelRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| watch_id | watch_id — идентификатор отменяемого наблюдателя, которому больше не будут передаваться события. | int64 |
Сообщение WatchCreateRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| key | key — ключ, регистрируемый для наблюдения. | bytes |
| range_end | range_end — конец наблюдаемого диапазона [key, range_end). Если range_end не задан, наблюдается только аргумент key. Если range_end равен ‘\0’, наблюдаются все ключи, большие либо равные аргументу key. Если range_end на один бит больше заданного ключа, наблюдаются все ключи с префиксом заданного ключа. | bytes |
| start_revision | start_revision — необязательная ревизия, с которой включительно начинается наблюдение. Отсутствие start_revision означает “now”. | int64 |
| progress_notify | progress_notify задаётся, чтобы сервер etcd периодически отправлял новому наблюдателю WatchResponse без событий, если недавних событий нет. Это полезно для восстановления отключённого наблюдателя с недавней известной ревизии. Сервер etcd может выбирать частоту уведомлений по текущей нагрузке. | bool |
| filters | filters фильтруют события на стороне сервера до их отправки наблюдателю. | (slice of) FilterType |
| prev_kv | Если prev_kv задан, созданный наблюдатель получает предыдущий KV до события. Если предыдущий KV уже компактизирован, ничего не возвращается. | bool |
| watch_id | Если предоставлен ненулевой watch_id, он назначается этому наблюдателю. Поскольку создание наблюдателя в etcd не является синхронной операцией, это помогает обеспечить правильный порядок при создании нескольких наблюдателей в одном потоке. Создание наблюдателя с уже используемым в потоке ID возвращает ошибку. | int64 |
| fragment | fragment позволяет разбивать большие ревизии на несколько ответов наблюдения. | bool |
Сообщение WatchProgressRequest (api/etcdserverpb/rpc.proto)
Запрашивает как можно скорее отправить состояние прогресса потока наблюдения в потоке ответов наблюдения.
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option |
Сообщение WatchRequest (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| request_union | request_union — запрос создания нового либо отмены существующего наблюдателя. | oneof |
| create_request | WatchCreateRequest | |
| cancel_request | WatchCancelRequest | |
| progress_request | WatchProgressRequest |
Сообщение WatchResponse (api/etcdserverpb/rpc.proto)
| Поле | Описание | Тип |
|---|---|---|
| (versionpb.etcd_version_msg) | option | |
| header | ResponseHeader | |
| watch_id | watch_id — идентификатор наблюдателя, соответствующего ответу. | int64 |
| created | created равно true, если это ответ на запрос создания наблюдения. Клиент должен сохранить watch_id и ожидать события созданного наблюдателя из того же потока. Все отправленные созданному наблюдателю события имеют одинаковый watch_id. | bool |
| canceled | canceled равно true, если это ответ на запрос отмены наблюдения или start_revision уже компактизирована. Отменённому наблюдателю больше не отправляются события. | bool |
| compact_revision | compact_revision содержит минимальный индекс, если наблюдатель пытается наблюдать с компактизированного индекса. Это происходит при создании наблюдателя на компактизированной ревизии или когда наблюдатель не успевает за изменениями хранилища ключей и значений. Клиент должен считать наблюдателя отменённым и больше не пытаться создавать наблюдателя с тем же start_revision. | int64 |
| cancel_reason | cancel_reason указывает причину отмены наблюдателя. | string |
| fragment | framgment равно true, если большой ответ наблюдения разбит на несколько ответов. | bool |
| events | (slice of) mvccpb.Event |
Сообщение Event (api/mvccpb/kv.proto)
| Поле | Описание | Тип |
|---|---|---|
| type | type — тип события. PUT означает сохранение новых данных по ключу, DELETE — удаление ключа. | EventType |
| kv | kv содержит KeyValue события. Событие PUT содержит текущую пару kv. PUT с kv.Version=1 означает создание ключа. DELETE/EXPIRE содержит удалённый ключ, ревизия изменения которого равна ревизии удаления. | KeyValue |
| prev_kv | prev_kv содержит пару «ключ — значение» до события. | KeyValue |
Сообщение KeyValue (api/mvccpb/kv.proto)
| Поле | Описание | Тип |
|---|---|---|
| key | key — ключ в байтах. Пустой ключ недопустим. | bytes |
| create_revision | create_revision — ревизия последнего создания этого ключа. | int64 |
| mod_revision | mod_revision — ревизия последнего изменения этого ключа. | int64 |
| version | version — версия ключа. Удаление сбрасывает её в ноль, а любое изменение ключа увеличивает версию. | int64 |
| value | value — значение ключа в байтах. | bytes |
| lease | lease — идентификатор аренды, присоединённой к ключу. При истечении аренды ключ удаляется. Если lease равен 0, аренда к ключу не присоединена. | int64 |
Сообщение Lease (server/lease/leasepb/lease.proto)
| Поле | Описание | Тип |
|---|---|---|
| ID | int64 | |
| TTL | int64 | |
| RemainingTTL | int64 |
Сообщение LeaseInternalRequest (server/lease/leasepb/lease.proto)
| Поле | Описание | Тип |
|---|---|---|
| LeaseTimeToLiveRequest | etcdserverpb.LeaseTimeToLiveRequest |
Сообщение LeaseInternalResponse (server/lease/leasepb/lease.proto)
| Поле | Описание | Тип |
|---|---|---|
| LeaseTimeToLiveResponse | etcdserverpb.LeaseTimeToLiveResponse |
Сообщение Permission (api/authpb/auth.proto)
Permission — отдельная сущность
| Поле | Описание | Тип |
|---|---|---|
| permType | Type | |
| key | bytes | |
| range_end | bytes |
Сообщение Role (api/authpb/auth.proto)
Role — отдельная запись в сегменте authRoles
| Поле | Описание | Тип |
|---|---|---|
| name | bytes | |
| keyPermission | (slice of) Permission |
Сообщение User (api/authpb/auth.proto)
User — отдельная запись в сегменте authUsers
| Поле | Описание | Тип |
|---|---|---|
| name | bytes | |
| password | bytes | |
| roles | (slice of) string | |
| options | UserAddOptions |
Сообщение UserAddOptions (api/authpb/auth.proto)
| Поле | Описание | Тип |
|---|---|---|
| no_password | bool |
10 - Справочник API: конкурентность
Этот справочник API автоматически создан из указанных файлов .proto.
служба Lock (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)
Служба блокировок предоставляет клиентские средства блокировки через интерфейс gRPC.
| Метод | Тип запроса | Тип ответа | Описание |
|---|---|---|---|
| Lock | LockRequest | LockResponse | Lock получает распределённую совместную блокировку с указанным именем. При успехе возвращается уникальный ключ, существующий, пока вызывающая сторона удерживает блокировку. Вместе с транзакциями ключ позволяет безопасно гарантировать, что etcd обновляется только при владении блокировкой. Блокировка удерживается до вызова Unlock для ключа или истечения аренды владельца. |
| Unlock | UnlockRequest | UnlockResponse | Unlock принимает ключ, возвращённый Lock, и освобождает блокировку. Следующий ожидающий вызов Lock пробуждается и получает владение блокировкой. |
сообщение LockRequest (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)
| Поле | Описание | Тип |
|---|---|---|
| name | name — идентификатор получаемой распределённой совместной блокировки. | bytes |
| lease | lease — идентификатор аренды, привязанной к владению блокировкой. Если удерживающая блокировку аренда истекает или отзывается, блокировка освобождается автоматически. Вызовы Lock с одной арендой считаются одним получением; повторная блокировка с той же арендой ничего не делает. | int64 |
сообщение LockResponse (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)
| Поле | Описание | Тип |
|---|---|---|
| header | etcdserverpb.ResponseHeader | |
| key | key — ключ, существующий в etcd, пока вызывающая Lock сторона владеет блокировкой. Пользователи не должны изменять ключ, иначе поведение блокировки не определено. | bytes |
сообщение UnlockRequest (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)
| Поле | Описание | Тип |
|---|---|---|
| key | key — ключ владения блокировкой, выданный Lock. | bytes |
сообщение UnlockResponse (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)
| Поле | Описание | Тип |
|---|---|---|
| header | etcdserverpb.ResponseHeader |
служба Election (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
Служба выборов предоставляет клиентские средства выборов через интерфейс gRPC.
| Метод | Тип запроса | Тип ответа | Описание |
|---|---|---|---|
| Campaign | CampaignRequest | CampaignResponse | Campaign ожидает получения лидерства на выборах и при успехе возвращает представляющий его LeaderKey. Затем LeaderKey можно использовать для публикации новых значений выборов, транзакционной защиты запросов API условием сохранения лидерства и отказа от участия. |
| Proclaim | ProclaimRequest | ProclaimResponse | Proclaim заменяет опубликованное лидером значение новым. |
| Leader | LeaderRequest | LeaderResponse | Leader возвращает текущее объявление выборов, если оно существует. |
| Observe | LeaderRequest | LeaderResponse | Observe потоково передаёт объявления выборов в порядке их публикации избранными лидерами. |
| Resign | ResignRequest | ResignResponse | Resign освобождает лидерство, чтобы его мог получить другой кандидат. |
сообщение CampaignRequest (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Поле | Описание | Тип |
|---|---|---|
| name | name — идентификатор выборов для кампании. | bytes |
| lease | lease — идентификатор аренды, привязанной к лидерству на выборах. Если аренда истекает или отзывается до отказа от лидерства, оно передаётся следующему кандидату, если он есть. | int64 |
| value | value — начальное объявленное значение, задаваемое после победы кандидата. | bytes |
сообщение CampaignResponse (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Поле | Описание | Тип |
|---|---|---|
| header | etcdserverpb.ResponseHeader | |
| leader | leader описывает ресурсы, используемые для удержания лидерства на выборах. | LeaderKey |
сообщение LeaderKey (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Поле | Описание | Тип |
|---|---|---|
| name | name — идентификатор выборов, соответствующий ключу лидерства. | bytes |
| key | key — непрозрачный ключ, представляющий владение выборами. При удалении ключа лидерство теряется. | bytes |
| rev | rev — ревизия создания ключа. В транзакциях она позволяет проверить владение выборами, сравнив ревизию создания ключа с rev. | int64 |
| lease | lease — идентификатор аренды лидера выборов. | int64 |
сообщение LeaderRequest (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Поле | Описание | Тип |
|---|---|---|
| name | name — идентификатор выборов для сведений о лидерстве. | bytes |
сообщение LeaderResponse (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Поле | Описание | Тип |
|---|---|---|
| header | etcdserverpb.ResponseHeader | |
| kv | kv — пара «ключ — значение», представляющая последнее обновление лидера. | mvccpb.KeyValue |
сообщение ProclaimRequest (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Поле | Описание | Тип |
|---|---|---|
| leader | leader — удерживаемое лидерство на выборах. | LeaderKey |
| value | value — обновление, заменяющее текущее значение лидера. | bytes |
сообщение ProclaimResponse (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Поле | Описание | Тип |
|---|---|---|
| header | etcdserverpb.ResponseHeader |
сообщение ResignRequest (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Поле | Описание | Тип |
|---|---|---|
| leader | leader — лидерство, освобождаемое при отказе. | LeaderKey |
сообщение ResignResponse (server/etcdserver/api/v3election/v3electionpb/v3election.proto)
| Поле | Описание | Тип |
|---|---|---|
| header | etcdserverpb.ResponseHeader |
сообщение Event (api/mvccpb/kv.proto)
| Поле | Описание | Тип |
|---|---|---|
| type | type — вид события. PUT означает запись новых данных в ключ, DELETE — удаление ключа. | EventType |
| kv | kv содержит KeyValue события. Событие PUT содержит текущую пару kv. PUT с kv.Version=1 означает создание ключа. DELETE/EXPIRE содержит удалённый ключ, ревизия изменения которого равна ревизии удаления. | KeyValue |
| prev_kv | prev_kv содержит пару «ключ — значение» до события. | KeyValue |
сообщение KeyValue (api/mvccpb/kv.proto)
| Поле | Описание | Тип |
|---|---|---|
| key | key — ключ в байтах. Пустой ключ запрещён. | bytes |
| create_revision | create_revision — ревизия последнего создания этого ключа. | int64 |
| mod_revision | mod_revision — ревизия последнего изменения этого ключа. | int64 |
| version | version — версия ключа. Удаление сбрасывает версию в ноль, а любое изменение увеличивает её. | int64 |
| value | value — значение ключа в байтах. | bytes |
| lease | lease — идентификатор аренды, привязанной к ключу. После истечения аренды ключ удаляется. Если lease равно 0, аренда к ключу не привязана. | int64 |