приходит: держать какой-то атомик
- Посылать канал через другой канал
Но нет 100% уверенности что это всё хорошо
а вам что, собственно, проверить надо? если писать в канал в select с default - default сработает, если записать не получится. что однозначно означает, что у канала нет слушателя
Мне кажется это хорошо подойдёт для проверки есть ли слушатель который прямо сейчас может прочитать, но не сработает если слушатель есть но сейчас обрабатывает предыдущее сообщение
а это не слушатель же
и - это не сработает с буферизованным каналом
у меня два разных api для websocket, один из них должен посылать в другой, но если нет подписчиков - кидать ошибку
Значит я неправильно понял
всмысле читать? хотя с ходу не понял, потому как надо при записи проверять, надо минуту подумать
А для pubsub вы используете каналы, а не какой-нибудь редис?
в текущий момент да. у меня небольшое приложение
Просто... Каким образом у вас может НЕ быть слушателя на канале если всё происходит на уровне одной памяти?
причём тут уровни памяти? т.е. на уровне канала - да, но слушателей может не быть
Вы сначала создаёте канал Начинаете в горутине его слушать, Дальше этот канал передаёте дальше по приложению для тех кто будет туда писать. Слушатель у вас живёт всё время жизни приложения
А зачем добавлять задержку в виде раундтрипа до redis?
да, но это если слушатель == канал. А это не так
У вас слушатели появляются и затухают на каналах?
Чтобы масштабировать жешь
Что именно масштабировать? И как потом масштабировать redis когда он кончится?
Тобишь масштабировать приложение вам проще без редиса, постгреса и тд? 🙆♂️
редисы можно в кластер
когда стоит такая задача. когда просто два ws связать - надеюсь можно и без редиса
Городить кластер в рамках одной машины?
Кстати, pubsub в redis деградирует по мере увеличения количества нод в кластере. Т.е. кластер медленнее чем 1 нода
технически можно и на одной машине. там раньше редис больше 1 процессора не умел потреблять, по этому кластер имело смысл городить на одной машине когда оно 100% процессора потребляло. да, если делать кластер то какие-то фишки он резко перестает уметь, но общем случае кластер имеет смысл.
https://redis.com/wp-content/uploads/2018/04/Redis-Day-TLV-2018-Scaling-Redis-PubSub.pdf https://github.com/redis/redis/issues/2672
Обсуждают сегодня