mirror of
https://github.com/3ybactuk/marketplace-go-service-project.git
synced 2025-10-30 14:03:45 +03:00
[hw-5] concurrency, graceful shutdown, concurrent tests
This commit is contained in:
35
docs/homework-5/README.md
Normal file
35
docs/homework-5/README.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# Домашнее задание по модулю "Многопоточное программирование"
|
||||
|
||||
## Основное задание
|
||||
|
||||
Уменьшить время ответа cart.list.
|
||||
- Распараллельные вызовы ручки http://route256.pavl.uk:8080/docs/#/ProductService/ProductService_GetProduct продакт
|
||||
сервиса
|
||||
- Самим написать аналог https://pkg.go.dev/golang.org/x/sync/errgroup и использовать его
|
||||
- В случае ошибки - отменять все текущие запросы и вернуть ошибку из errgroup
|
||||
- При общении с Product Service необходимо использовать лимит 10 RPS на клиентской стороне
|
||||
- Группа живет в рамках одного запроса = группа не переиспользуется между запросами
|
||||
- in-memory репозитории защитить мьютексами
|
||||
|
||||
## Дополнительное задание
|
||||
|
||||
- Тесты на многопоточность in-memory репозитория
|
||||
- Грейсфул завершение приложения (использовать signal.Notify)
|
||||
- Контроль утечек (горутин через https://github.com/uber-go/goleak)
|
||||
- Контроль рейзов (через тесты с флагом -race)
|
||||
- Реализовать параллельный запуск тестов
|
||||
|
||||
## Автоматические проверки
|
||||
|
||||
Ваше решение должно проходить автоматические проверки:
|
||||
|
||||
- Компиляция
|
||||
- Линтер
|
||||
- Unit-тесты
|
||||
- Code coverage >40%
|
||||
- Автотесты
|
||||
|
||||
Прохождение автоматических проверок влияет на итоговую оценку за домашнюю работу.
|
||||
|
||||
### Дедлайны сдачи и проверки задания:
|
||||
- 28 июня 23:59 (сдача) / 1 июля, 23:59 (проверка)
|
||||
Reference in New Issue
Block a user