Size: a a a

2020 May 19

AR

Aleksandr Razumov in Go-go!
Вообще есть какая-то формула из теории очередей, но хз стоит ли её применять для каналов
источник

а

а кто это in Go-go!
Aleksandr Razumov
Вообще есть какая-то формула из теории очередей, но хз стоит ли её применять для каналов
?
источник

C

Calculon in Go-go!
Можно мониторить количество элементов в канале, смотреть %заполненности
источник

C

Calculon in Go-go!
Со временем нащупать оптимальное число
источник

а

а кто это in Go-go!
а дальше чо
источник

C

Calculon in Go-go!
а кто это
а дальше чо
Поменять размер буфера
источник

а

а кто это in Go-go!
Calculon
Со временем нащупать оптимальное число
а потом наплыв
источник

а

а кто это in Go-go!
и число уже не такое оптимальное
источник

а

а кто это in Go-go!
плюсом ко всему нельзя легально увеличить объем буфера не пересоздавая канал
источник

C

Calculon in Go-go!
а кто это
а потом наплыв
Имеет место быть
источник

RS

Roman Sharkov in Go-go!
Anton Kucherov
Ну типа если у вас читает одна горутина, от буфера толку маловато будет. Хотя я могу ошибаться, у меня конкретно в этом вопросе каша в голове. И я бы был рад если бы ее кто-нибудь разжевал
если мы не хотим блокировать писателя то буфер имеет смысл
источник

а

а кто это in Go-go!
интересно, а как в nats сделано
источник

VG

Vladislav Gruchik in Go-go!
Ilya Shikhaleev
А подробнее?) у нас просто все ок работает, но интересен опыт других :)
Ну банально от функциональных опций разработчики помладше в непонятках. Использовать их не очень удобно потому что редактор не очень подсказывает весь набор опций. А писать и редактировать - там вообще сложно. У меня была опция которая подцепляла к селектора дополнительный inner join и фильтровалась так данные. Тут вообще много кто сказал сложна. Интересный эксперимент был.
источник

AK

Anton Kucherov in Go-go!
Roman Sharkov
если мы не хотим блокировать писателя то буфер имеет смысл
Понимаю и одновременно не очень. Читатель то только один. Получается это имеет смысл только если надо единично какой то буфер заполнить и пойти дальше, потому что иначе он наполнится и писатель залочится
источник

RS

Roman Sharkov in Go-go!
Anton Kucherov
Понимаю и одновременно не очень. Читатель то только один. Получается это имеет смысл только если надо единично какой то буфер заполнить и пойти дальше, потому что иначе он наполнится и писатель залочится
пример: мы пишем в канал, который читает одна горутина, но время обработки одного объекта у читающей горутины может вариировать, иногда 50мс, а иногда вообще секунду

следственно, если мы не хотим чтобы горутина которая пишет в канал блокировалась - мы используем буферизированый канал. Писатель заблокируется в таком случае только тогда, когда буфер переполнится (worst case), а не всегда когда заело читателя
источник

AK

Anton Kucherov in Go-go!
Звучит интересно, только как определить эти тайминги, Go же не дает ни каких гарантий по времени? 🤔 Т.е. я не могу расчитать размер буфера исходя из времени работы читающай горутины
источник

RS

Roman Sharkov in Go-go!
Anton Kucherov
Звучит интересно, только как определить эти тайминги, Go же не дает ни каких гарантий по времени? 🤔 Т.е. я не могу расчитать размер буфера исходя из времени работы читающай горутины
это зависит от многих факторов, тут нет правил
источник

а

а кто это in Go-go!
Anton Kucherov
Звучит интересно, только как определить эти тайминги, Go же не дает ни каких гарантий по времени? 🤔 Т.е. я не могу расчитать размер буфера исходя из времени работы читающай горутины
можно писать из отдельной горутины, тогда писатель никогда не заблокируется
источник

VG

Vladislav Gruchik in Go-go!
а кто это
можно писать из отдельной горутины, тогда писатель никогда не заблокируется
goroutine leak
источник

а

а кто это in Go-go!
ну это да
источник