Ограничение количество одновременных подключений с клиента в Golang GRPC

Рейтинг: 0Ответов: 1Опубликовано: 11.06.2023

я новичок в GRPC и у меня стоит задача: Необходимо написать сервис на Golang работающий по gRPC.

Сервис с функциями:

  1. Принимает изображения от клиента и сохраняет их.
  2. Выводит список загруженных файлов.

Как ограничить количество одновременных подключений с клиента:

  • на загрузку/скачивание файлов - 10 конкурентных запросов;
  • на просмотр списка файлов - 100 конкурентных запросов.

Ответы

▲ 0Принят
  1. Создаете в вашем grpc сервере буферизированный канал емкостью 10

    limiter := chan(struct{}, 10)

  2. При запросе на загрузку/скачивание отправляете туда пустую структуру

    limiter <- struct{}{}

  3. После того как запрос отработает вынимаете ее оттуда

    <- limiter

Таким образом вы никогда не сможете запустить одновременно больше 10 запросов на загрузку/скачивание.