Вышел etcd v3.7.0: RangeStream, улучшение производительности и отказ от v2store

SIG etcd объявила о выходе etcd v3.7.0 — новой минорной версии распределённого key-value хранилища, которое является ключевым компонентом Kubernetes. В этом релизе появилась долгожданная функция RangeStream, а также реализован ряд улучшений производительности, окончательно удалён устаревший v2store

Вышел etcd v3.7.0: RangeStream, улучшение производительности и отказ от v2store

SIG etcd объявила о выходе etcd v3.7.0 — новой минорной версии распределённого key-value хранилища, которое является ключевым компонентом Kubernetes. В этом релизе появилась долгожданная функция RangeStream, а также реализован ряд улучшений производительности, окончательно удалён устаревший v2store и завершена масштабная переработка protobuf. Эти изменения делают etcd более эффективным и готовым к работе с большими кластерами.

etcd v3.7.0: что нового

Основное изменение в etcd v3.7.0 — это RangeStream. В предыдущих версиях (v3.6 и старше) при выполнении запросов, возвращающих большие объёмы данных, база данных буферизировала весь результат перед отправкой. Это приводило к непредсказуемой задержке и неконтролируемому расходу памяти как на сервере, так и на клиенте. RangeStream позволяет приложениям получать результат по частям, что снижает задержку и делает использование памяти более предсказуемым.

Кроме того, в v3.7.0 появилась поддержка ключевых запросов только по ключам, а не по парам ключ-значение, что ускоряет некоторые операции. Улучшена работа с арендой (leases) — теперь она быстрее и надёжнее. Разработчики также провели ряд других оптимизаций производительности, включая улучшение работы с памятью при записи и чтении.

Зачем нужен RangeStream в etcd?

RangeStream — это новый RPC-метод, который позволяет клиенту получать результаты запроса по частям (чанками). Вместо того чтобы ждать, пока сервер соберёт весь ответ, клиент может начать обработку данных сразу после получения первого чанка. Это особенно полезно для сценариев с большими объёмами данных, например, при резервном копировании или массовой миграции. В документации etcd приведены примеры использования RangeStream как через gRPC, так и через утилиту etcdctl. Для администраторов Kubernetes это означает, что операции, которые раньше могли вызывать таймауты или перегрузку памяти, теперь выполняются плавно и предсказуемо.

Предыстория и контекст

etcd — это надёжное распределённое key-value хранилище, которое используется в Kubernetes для хранения всей конфигурации кластера, данных о состоянии и метаданных. Проект развивается под эгидой CNCF. Версия v3.7.0 стала важным шагом в модернизации кодовой базы: наконец-то удалён код v2store — устаревшее хранилище, которое оставалось в проекте для обратной совместимости. Теперь etcd полностью загружается из v3store, что упрощает поддержку и повышает производительность. Также завершён переход на современные библиотеки protobuf, что повышает стабильность и безопасность.

Какие улучшения производительности в etcd v3.7.0?

Помимо RangeStream, в etcd v3.7.0 реализовано несколько оптимизаций производительности. Улучшена работа с арендой (leases) — теперь она быстрее и надёжнее, что важно для приложений, использующих временные ключи. Также добавлена поддержка запросов только по ключам, что ускоряет операции, где не нужны значения. Разработчики провели рефакторинг внутренних компонентов, что снизило задержки при высоких нагрузках. Все эти изменения делают etcd более отзывчивым и стабильным в условиях больших кластеров.

Технические подробности и составные части

Вместе с etcd v3.7.0 вышли обновлённые версии ключевых зависимостей: bbolt v1.5.0 (теперь v1.5.1) и raft v3.7.0. bbolt — это встроенная база данных, используемая etcd для хранения данных на диске, а raft — реализация консенсусного протокола Raft. Обновление этих библиотек принесло свои улучшения производительности и стабильности. Например, bbolt получил оптимизации для работы с большими объёмами данных, а raft — улучшенную обработку лидерства.

Разработчики также полностью переработали protobuf: заменили устаревшие библиотеки на полностью поддерживаемые. Это не только повышает совместимость, но и упрощает дальнейшую разработку. Переход на современные версии protobuf также улучшает производительность сериализации и десериализации данных.

Кого затронет и как

Новый релиз в первую очередь важен для администраторов Kubernetes и разработчиков, работающих с большими кластерами. RangeStream позволит снизить нагрузку на etcd при выполнении массовых операций, таких как резервное копирование или синхронизация. Пользователи, которые сталкивались с таймаутами или нехваткой памяти при больших запросах, увидят значительное улучшение.

Кроме того, etcd v3.7.0 станет основой для грядущей версии Kubernetes v1.37. В скоординированных релизах функция RangeStream станет доступна при включении соответствующей фичи. Разработчикам приложений, использующих etcd напрямую, стоит протестировать новый RPC-метод и оценить его преимущества в своих сценариях.

Как обновиться до etcd v3.7.0?

Обновление до etcd v3.7.0 требует стандартной процедуры: скачать новую версию с официального репозитория, заменить бинарные файлы и перезапустить кластер. Рекомендуется предварительно протестировать обновление на тестовой среде, особенно если используются большие объёмы данных. Документация содержит подробные инструкции по миграции и настройке RangeStream.

Что будет дальше

Ожидается, что etcd v3.7.0 будет включён в состав следующего крупного релиза Kubernetes. Разработчики SIG etcd продолжают работу над улучшением производительности и надёжности. В будущих версиях можно ожидать дальнейшей оптимизации работы с памятью и новыми возможностями для масштабирования, включая поддержку более гибких конфигураций и улучшенную интеграцию с облачными средами.

Итог

etcd v3.7.0 — это важный шаг в эволюции ключевого компонента Kubernetes. RangeStream решает давнюю проблему работы с большими наборами данных, а отказ от v2store и обновление protobuf делают код более современным и поддерживаемым. Администраторам и разработчикам стоит обратить внимание на этот релиз и начать тестирование в своих средах. Улучшения производительности и стабильности делают etcd v3.7.0 обязательным обновлением для всех, кто использует Kubernetes в production.