Разработчики Valkey объявили о выходе новой версии 8.0, которая стала важной вехой в развитии проекта.
Как мы уже сообщали вам в конце марта, в связи с тем, что Redis изменил свою лицензионную политику и отошел от свободного программного обеспечения, проект Valkey возник как ответ на это решение, поддержанный такими крупными IT-гигантами, как Google, Oracle и AWS.
В то время как первая версия, 7.2.5, выпущенная более пяти месяцев назад, была направлена на обеспечение совместимости и преемственности лицензий, это крупное обновление представляет множество новых функций для повышения скорости, эффективности и надежности.
Основные моменты Valkey 8.0
В Valkey 8.0 внесены существенные улучшения в существующую систему потоков ввода-вывода. В частности, асинхронная обработка потоков ввода-вывода позволяет основным потокам и потокам ввода-вывода работать параллельно, максимизируя пропускную способность и минимизируя узкие места.
Кроме того, интеллектуальное использование ядер распределяет задачи ввода-вывода между несколькими ядрами в зависимости от их использования в реальном времени, сокращая время простоя и повышая энергоэффективность.
Еще одно ключевое усовершенствование – пакетная обработка команд, которая оптимизирует шаблоны доступа к памяти за счет предварительной выборки часто используемых данных. Это минимизирует пропуски кэша процессора и сокращает количество обращений к памяти, необходимых для выполнения операций со словарем.
В целом эти усовершенствования позволяют Valkey 8.0 обрабатывать до 1,2 миллиона запросов в секунду (QPS) на платформе AWS r7g, что значительно больше предыдущего ограничения в 380 тысяч QPS.
В новом выпуске также улучшены операции масштабирования кластера с помощью миграции слотов. Теперь автоматическое восстановление после сбоя для пустых шардов обеспечивает высокую доступность с самого начала процесса масштабирования.
Кроме того, репликация состояний миграции слотов синхронизирует все команды CLUSTER SETSLOT с репликами перед выполнением на основном узле. Это снижает вероятность недоступности в случае отказа основного узла.
Что касается репликации, то в Valkey 8.0 реализована двухканальная схема репликации. Это позволяет передавать RDB (файл базы данных Redis) и бэклог реплики одновременно, что ускоряет синхронизацию. Основной узел испытывает меньшую нагрузку на память, а выделенное соединение для передачи RDB высвобождает ресурсы для более эффективной обработки клиентских запросов.
Улучшенная наблюдаемость и эффективность
В Valkey 8.0 реализована комплексная инфраструктура метрик для каждого слота, обеспечивающая подробную информацию о производительности отдельных слотов и использовании ресурсов.
Она включает в себя отслеживание количества ключей в каждом слоте, загрузки процессора и байтов ввода/вывода в сеть. Первые бенчмарки показывают, что включение этих подробных метрик приводит к незначительным накладным расходам, составляющим примерно 0,7% в QPS.
Повышение эффективности также достигается за счет сокращения накладных расходов памяти. Ключи теперь встроены в основной словарь, что позволяет отказаться от отдельных указателей на ключи и значительно сократить использование памяти.
Для сценариев с 16-байтными ключами и 8- или 16-байтными значениями пользователи могут ожидать сокращения общего объема памяти на 9-10%, а также повышения производительности.
Дополнительные преимущества
Valkey 8.0 также предлагает несколько других примечательных функций:
- Поддержка двух стеков IPv4 и IPv6: Беспрепятственная работа в смешанных IP-средах для повышения совместимости и гибкости.
- Повышенная эффективность Pub/Sub: Легкие кластерные сообщения упрощают обмен данными, снижая накладные расходы для более быстрой работы.
- Valkey Over RDMA (Experimental): Прямой доступ к памяти между клиентами и серверами Valkey позволяет значительно повысить производительность, обеспечивая увеличение пропускной способности до 275%.
Подробную информацию обо всех улучшениях, реализованных в Valkey 8.0, можно найти в анонсе релиза или в этой статье.