0 Обзор альбома
etcd является важным базовым компонентом облачной архитектуры, которая инкубируется и размещается CNCF. etcd можно использовать не только для регистрации и обнаружения сервисов в микросервисах и кластерах Kubernetes, но и как промежуточное ПО для хранения ключей и значений.
"Понимание статей серии etcd" познакомит с etcd с точки зрения базовой функциональной практики etcd, интерфейса API, принципа реализации, анализа исходного кода и опыта преодоления ям в реализации. Ожидается, что статей будет около 20, автор будет обновлять каждую неделю, прошу обратить внимание.
1 т.д. арендная служба
Услуга аренды обеспечивает поддержку аренды. Аренда — это механизм определения живучести клиента. Кластер предоставляет аренду со сроком жизни. Срок аренды истекает, если кластер etcd не получает keepAlive в течение заданного TTL.
Чтобы привязать аренду к хранилищу ключей и значений, к каждому ключу можно прикрепить не более одной аренды. Когда срок аренды истекает или отзывается, все ключи, связанные с этой арендой, удаляются. Каждый ключ с истекшим сроком действия генерирует событие удаления в истории событий.
Интерфейс, определенный сервисом Lease в rpc.proto, выглядит следующим образом:
service Lease {
rpc LeaseGrant(LeaseGrantRequest) returns (LeaseGrantResponse) {}
rpc LeaseRevoke(LeaseRevokeRequest) returns (LeaseRevokeResponse) {}
rpc LeaseKeepAlive(stream LeaseKeepAliveRequest) returns (stream LeaseKeepAliveResponse) {}
rpc LeaseTimeToLive(LeaseTimeToLiveRequest) returns (LeaseTimeToLiveResponse) {}
}
- LeaseGrant создает договор аренды
- LeaseRevoke отменяет договор аренды
- LeaseKeepAlive используется для поддержания аренды
- LeaseTimeToLive Получить информацию об аренде
Эти методы описаны ниже.
2 Метод LeaseGrant
Метод LeaseGrant создает договор аренды. Срок аренды истекает, когда сервер не получает подтверждение активности в течение заданного времени жизни. Если срок аренды истекает, срок действия всех ключей, прикрепленных к аренде, истечет и они будут удалены. Каждый ключ с истекшим сроком действия генерирует событие удаления в истории событий. Метод определяется следующим образом:
rpc LeaseGrant(LeaseGrantRequest) returns (LeaseGrantResponse) {}
Тело запроса — LeaseGrantRequest:
message LeaseGrantRequest {
int64 TTL = 1;
int64 ID = 2;
}
TTL рекомендует время жизни в секундах. Идентификатор — это идентификатор запроса аренды, если идентификатор равен 0, арендодатель (т. е. сервер etcd) выбирает идентификатор. Тело сообщения ответа, LeaseGrantResponse, определяется следующим образом:
message LeaseGrantResponse {
ResponseHeader header = 1;
int64 ID = 2;
int64 TTL = 3;
string error = 4;
}
ID — это ID распознанной аренды. TTL — это время жизни аренды в секундах, выбранное сервером.
3 Метод LeaseRevoke
LeaseRevoke отменяет аренду, после чего срок действия всех ключей, прикрепленных к аренде, истекает и они удаляются.
rpc LeaseRevoke(LeaseRevokeRequest) returns (LeaseRevokeResponse) {}
Тело сообщения запроса LeaseRevokeRequest определяется следующим образом:
message LeaseRevokeRequest {
int64 ID = 1;
}
ID — это идентификатор аренды, которую необходимо отменить. При отмене аренды все связанные ключи будут удалены. Тело сообщения ответа, LeaseRevokeResponse, определяется следующим образом:
message LeaseRevokeResponse {
ResponseHeader header = 1;
}
В LeaseRevokeResponse есть только одно общее поле заголовка ответа.
4 Метод LeaseKeepAlive
Метод LeaseKeepAlive поддерживает аренду. LeaseKeepAlive поддерживает аренду путем потоковой передачи запросов проверки активности от клиента к серверу и потоковой передачи ответов проверки активности от сервера клиенту.
rpc LeaseKeepAlive(stream LeaseKeepAliveRequest) returns (stream LeaseKeepAliveResponse) {}
Тело сообщения запроса LeaseKeepAliveRequest определяется следующим образом:
message LeaseKeepAliveRequest {
int64 ID = 1;
}
ID — это ID договора аренды для проживания. Текст ответа LeaseKeepAliveResponse:
message LeaseKeepAliveResponse {
ResponseHeader header = 1;
int64 ID = 2;
int64 TTL = 3;
}
ID — это идентификатор аренды из запроса на поддержание активности. TTL — это новый срок действия аренды.
5 Метод LeaseTimeToLive
Метод LeaseTimeToLive получает информацию об аренде.
rpc LeaseTimeToLive(LeaseTimeToLiveRequest) returns (LeaseTimeToLiveResponse) {}
Тело сообщения запроса LeaseTimeToLiveRequest определяется следующим образом:
message LeaseTimeToLiveRequest {
// ID 是租约的 ID
int64 ID = 1;
bool keys = 2;
}
keys установлено значение true, чтобы запросить все ключи, прикрепленные к этой аренде. Тело сообщения ответа LeaseTimeToLiveResponse определяется следующим образом:
message LeaseTimeToLiveResponse {
ResponseHeader header = 1;
// ID 是来自请求的 ID
int64 ID = 2;
int64 TTL = 3;
int64 grantedTTL = 4;
repeated bytes keys = 5;
}
Среди них TTL — это оставшийся TTL в секундах; срок аренды истекает после следующего TTL + 1 секунда. GrantedTTL — начальное время предоставления права на создание/продление аренды в секундах. Ключи — это список Ключей, прикрепленных к данному договору аренды.
6 Резюме
В этой статье в основном представлены основные методы, такие как LeaseGrant, LeaseRevoke, LeaseKeepAlive и LeaseTimeToLive, связанные с API аренды etcd. API аренды часто используется в клиентской практике, поэтому полезно ознакомиться с этой частью и понять ее.
Подписывайтесь на свежие статьи, приглашаю обратить внимание на мой публичный номер
Рекомендуемое чтение
- Сравнение etcd с другими компонентами k-v, такими как Zookeeper и Consul
- Тщательно изучите серию статей etcd (1): первое знакомство с etcd
- Тщательно изучите серию статей etcd (2): различные положения установки etcd
- Тщательно изучите серию статей etcd (3): эксплуатация и обслуживание кластера etcd, развертывание.
- Тщательно изучите серию статей etcd (4): безопасность etcd
- Тщательно изучите серию статей etcd (5): использование etcdctl
- Тщательно изучите серию статей etcd (6): etcd core API v3
- [Знакомство со статьями из серии etcd (7): API сервиса etcd gRPC
](блюз доступен empty.com/2020/08/27/…) 9. Тщательно изучите серию статей etcd (8): API транзакций etcd 10. Тщательно изучите серию статей etcd (9): etcd compact и watch API