Notice: file_put_contents(): Write of 3033 bytes failed with errno=28 No space left on device in /var/www/tgoop/post.php on line 50

Warning: file_put_contents(): Only 8192 of 11225 bytes written, possibly out of free disk space in /var/www/tgoop/post.php on line 50
System Design & Highload (Alexey Rybak)@rybakalexey P.185
RYBAKALEXEY Telegram 185
Вывод #3: Valkey “сгладил” родовую травму Redis, но Memcached их по-прежнему рвёт в cache-only сценарии

Disclaimer: всё, что дальше понаписано, касается исключительно специфичных кейсов, когда ваша инфра обрабатывает как минимум многие десятки/сотни тысяч запросов к кеш-слою в секунду. Если нет - вам отлично зайдёт Redis.

Третий вывод, который я сделал: Valkey действительно удалось сделать продукт, который в состоянии отдать миллион RPS с одного инстанса, а в целом Valkey отдает примерно в 2.5 раза больше RPS, чем Redis (график в презентации и в первом комментарии). У Евгения Дюкова из Яндекса был на эту тему достаточно подробный доклад на последнем хайлоаде – думаю, что скоро он окажется в свободном доступе.

Проблема (и сила) Redis заключается в простой до невозможности архитектуре. У Redis есть один единственный main thread, который отвечает “за всё”, и есть некоторое количество io-threads, которые отвечают за ввод-вывод. С ростом нагрузки, если вашему Redis можно отдать хотя бы несколько ядер, можно чуть поднять io-threads и таким образом слегка повысить пропускную способность. Это, кстати, не все знают: да, Redis можно немножечко “поскейлить” по ядрам, раза в 2 можно поднять RPS, но этот скейлинг крайне неэффективный, будет заметен рост в дипазоне 1-4 io-тредов, но дальше они начнут затыкаться в борьбе за локи (lock contention).

Что сделали в Valkey: они внесли много исправлений, позволивших “развязать” main-тред и io-треды и заметно повысили параллелизм в Redis. Плюс внесли ряд исправлений, позволивших лучше утилизировать префетч-возможности современных процессоров, что также заметно снижает latency. Короче, Valkey молодец - но родовая травма всё-таки никуда не делась. На наших тестах хорошо видно, что поднимать число io-threads выше 8-10 уже не имеет особенного смысла, сколько бы ядер у нас ни было.

В свою очередь Memcached, который конечно по сравнению c Redis/Valkey не умеет почти ничего кроме базовых get/set/del/incr операций, может выдать значительно бОльшую пропускную способность, нежели Valkey. У Memcached есть похожие проблемы с lock contention, но насколько я понимаю, используется другой подход к партиционированию данных, что снижает contention. Если вам нужен только кеш без персистенстности - Memcached по-прежнему отличный вариант.

Для справки
- Собственно презентация по результатам исследования PostgreSQL/MySQL/Redis/Valkey/Memcached
- Вывод #1 (Робкое напоминание о железе и гибридном подходе)
- Вывод #2 (PostgreSQL “сгладил” родовую травму)



tgoop.com/rybakalexey/185
Create:
Last Update:

Вывод #3: Valkey “сгладил” родовую травму Redis, но Memcached их по-прежнему рвёт в cache-only сценарии

Disclaimer: всё, что дальше понаписано, касается исключительно специфичных кейсов, когда ваша инфра обрабатывает как минимум многие десятки/сотни тысяч запросов к кеш-слою в секунду. Если нет - вам отлично зайдёт Redis.

Третий вывод, который я сделал: Valkey действительно удалось сделать продукт, который в состоянии отдать миллион RPS с одного инстанса, а в целом Valkey отдает примерно в 2.5 раза больше RPS, чем Redis (график в презентации и в первом комментарии). У Евгения Дюкова из Яндекса был на эту тему достаточно подробный доклад на последнем хайлоаде – думаю, что скоро он окажется в свободном доступе.

Проблема (и сила) Redis заключается в простой до невозможности архитектуре. У Redis есть один единственный main thread, который отвечает “за всё”, и есть некоторое количество io-threads, которые отвечают за ввод-вывод. С ростом нагрузки, если вашему Redis можно отдать хотя бы несколько ядер, можно чуть поднять io-threads и таким образом слегка повысить пропускную способность. Это, кстати, не все знают: да, Redis можно немножечко “поскейлить” по ядрам, раза в 2 можно поднять RPS, но этот скейлинг крайне неэффективный, будет заметен рост в дипазоне 1-4 io-тредов, но дальше они начнут затыкаться в борьбе за локи (lock contention).

Что сделали в Valkey: они внесли много исправлений, позволивших “развязать” main-тред и io-треды и заметно повысили параллелизм в Redis. Плюс внесли ряд исправлений, позволивших лучше утилизировать префетч-возможности современных процессоров, что также заметно снижает latency. Короче, Valkey молодец - но родовая травма всё-таки никуда не делась. На наших тестах хорошо видно, что поднимать число io-threads выше 8-10 уже не имеет особенного смысла, сколько бы ядер у нас ни было.

В свою очередь Memcached, который конечно по сравнению c Redis/Valkey не умеет почти ничего кроме базовых get/set/del/incr операций, может выдать значительно бОльшую пропускную способность, нежели Valkey. У Memcached есть похожие проблемы с lock contention, но насколько я понимаю, используется другой подход к партиционированию данных, что снижает contention. Если вам нужен только кеш без персистенстности - Memcached по-прежнему отличный вариант.

Для справки
- Собственно презентация по результатам исследования PostgreSQL/MySQL/Redis/Valkey/Memcached
- Вывод #1 (Робкое напоминание о железе и гибридном подходе)
- Вывод #2 (PostgreSQL “сгладил” родовую травму)

BY System Design & Highload (Alexey Rybak)


Share with your friend now:
tgoop.com/rybakalexey/185

View MORE
Open in Telegram


Telegram News

Date: |

Commenting about the court's concerns about the spread of false information related to the elections, Minister Fachin noted Brazil is "facing circumstances that could put Brazil's democracy at risk." During the meeting, the information technology secretary at the TSE, Julio Valente, put forward a list of requests the court believes will disinformation. Unlimited number of subscribers per channel So far, more than a dozen different members have contributed to the group, posting voice notes of themselves screaming, yelling, groaning, and wailing in various pitches and rhythms. Each account can create up to 10 public channels How to build a private or public channel on Telegram?
from us


Telegram System Design & Highload (Alexey Rybak)
FROM American