Пользователей у нашего проекта становится всё больше, поэтому мы продолжаем масштабироваться. На этот раз настала очередь WebSocket'ов. Есть много готовых решений, таких как Redis, Kafka или Nats, и по началу казалось хорошей идеей использовать какое-нибудь из них. Но когда я стал разбираться в этой теме, выяснилось, что 21 марта Redis Ltd. объявила, что, начиная с Redis 7.4, её in-memory data store будет выпускаться под несвободными лицензиями с доступным (source-available) исходным кодом. Обсудив этот вопрос с нашим Solution Architect, мне было предложено попробовать написать собственное решение для масштабирования WebSocket'ов, поскольку благодаря этому мы не добавляем стороннюю зависимость в наш проект на его основополагающий функционал. К тому-же, тот же Redis для нас на данный момент сильно избыточен и требует тонкой настройки для оптимального потребления ресурсов, поэтому от сторонних решений в данном вопросе мы отказались. Моя реализация построена на всем известном паттерне Pub
Написал собственную реализацию для масштабирования WebSocket'ов
27 ноября 202427 ноя 2024
1
1 мин