Ограничение количество одновременных подключений с клиента в Golang GRPC
я новичок в GRPC и у меня стоит задача: Необходимо написать сервис на Golang работающий по gRPC.
Сервис с функциями:
- Принимает изображения от клиента и сохраняет их.
- Выводит список загруженных файлов.
Как ограничить количество одновременных подключений с клиента:
- на загрузку/скачивание файлов - 10 конкурентных запросов;
- на просмотр списка файлов - 100 конкурентных запросов.
Ответы (1 шт):
Автор решения: Mark
→ Ссылка
Создаете в вашем grpc сервере буферизированный канал емкостью 10
limiter := chan(struct{}, 10)
При запросе на загрузку/скачивание отправляете туда пустую структуру
limiter <- struct{}{}
После того как запрос отработает вынимаете ее оттуда
<- limiter
Таким образом вы никогда не сможете запустить одновременно больше 10 запросов на загрузку/скачивание.