Блог инженера

History is written by its contributors

Ад каналов в Go: как мы победили chan map[string]*map[int]chan struct{}

2025-05-14 время чтения 8 мин Golang Concurrency Refactoring Ilya Brin

Привет, гошник! 👋

Видел ли ты когда-нибудь код вроде chan map[string]*map[int]chan struct{}? Если да, то ты знаешь, что такое ад каналов.

Это история о том, как мы начали с простого, дошли до кошмара и нашли элегантное решение. Real-time система уведомлений, которая выросла от 100 пользователей до 100,000, и как мы рефакторили архитектуру каналов.

Спойлер: в итоге мы заменили весь этот ужас на 3 простых интерфейса и типизированные каналы 🚀

Читать далее

NSQ: идеальная очередь сообщений для real-time систем (когда Redis уже не справляется)

2025-04-21 время чтения 8 мин Distributed-Systems Message-Queues Nsq Ilya Brin

Привет, архитектор распределённых систем! 🚀

Замучился с настройкой RabbitMQ?
Устал от потери сообщений в Redis?
Нужно что-то, что просто работает на любом масштабе?

NSQ - очередью сообщений, которая используется в Discord, Bitly и других высоконагруженных системах.

На примерах разберёмся, когда NSQ не просто полезен, а абсолютно идеален для задачи.

Читать далее