Задать вопрос
@namee

Где хранить сессионные данные?

Есть задача хранить профили игроков на своём сервере со своей инфраструктурой. Быстро их отдавать и принимать.

что бы вы использовали в качестве временного хранилища данных по 100КБ каждый пакет в количестве 50тыс штук с возможностью быстрой замены данных?

rabbitMQ конечно прекрасен, но врядли подойдёт, впрочем как и прочие очереди
колеблюсь между таблицей в памяти mysql, Redis и memcache

==== примерные цифры ===

один сейв - до 100КБ данных.
Средняя сессия - 5 минут.
Сейв прилетает скажем 3 раза в минуту.
онлайн - пусть 100тыс в сутки.
канал 1ГБит

допустим пиковый онлайн 10тыс. То есть в минуту они пришлют 30 тыс сейвов. По 500 записей в секунду. До 50 Мбайт получается. Итого на вход 400Мбит.

так же эти профили будут отдаваться периодически. Но там на много меньще цифры. Десятками в секунду в худшем случае. Ибо клиент кеширует.

===== история ====
когда-то давно это всё хозяйство хранилось в файлах, но с ростом уткнулось в нехватку inodes
потом это всё хранилось в mysql, но уткнулось в производительность.
пробовал clickhouse, но дико ненадёжная штука. Несколько раз падала при обновлении через apt update.

==== планы ====
сейчас я планирую разбить на сегменты.
1. принимаем профили и храним в памяти, перезаписывая более новыми данными.
2. после 10 минут неактивности профиль сохраняется в mysql
3. отдаётся либо из кеша, либо из mysql по ситуации.
  • Вопрос задан
  • 144 просмотра
Подписаться 2 Средний 22 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы