Skip to content

Kanbenn/wb0

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Краткие пояснения к коду по заданию:

  • Данные статичны, исходя из этого подумайте насчет модели хранения в кэше и в PostgreSQL. Задействовал тип данных JSONB в PostgreSQL и []byte в кэше postgres.go

  • Подумайте как избежать проблем, связанных с тем, что в канал могут закинуть что-угодно json.Unmarshal поля order_id и по нему if - корректные данные пришли в канал или мусор app.go.

  • Чтобы проверить работает ли подписка онлайн, сделайте себе отдельный скрипт, для публикации данных в канал отдельный скрипт publisher, с возможностью отправки отдельных json-файлов через флаг командной строки -j.

  • Подумайте как не терять данные в случае ошибок или проблем с сервисом опция DurableName в подписке на канал, которая позволяет получить пропущенные сообщения при пере-подключении к серверу subscriber.go

  • Nats-streaming разверните локально (не путать с Nats) Nats-streaming и PostgreSQL локально через docker-compose

  • Покройте сервис автотестами юнит-тесты для кэша cache_test.go

  • Устройте вашему сервису стресс-тест: Воспользуйтесь утилитами WRK и Vegeta

vegeta.exe attack -rate 1000 -duration=30s  -targets vegeta-targets.txt | tee .\results.bin | vegeta.exe report
Requests      [total, rate, throughput]         29999, 1000.43, 1000.40
Duration      [total, attack, wait]             29.987s, 29.986s, 1.086ms
Latencies     [min, mean, 50, 90, 95, 99, max]  505.2µs, 4.873ms, 4.237ms, 9.135ms, 10.587ms, 15.407ms, 58.766ms
Bytes In      [total, mean]                     22388977, 746.32
Bytes Out     [total, mean]                     0, 0.00
Success       [ratio]                           100.00%
Status Codes  [code:count]                      200:29999
Error Set:

Флаги командной строки

для указания недефолтного адреса веб-сервера, nats'a и postgres config.go

Кэш с поддержкой безопасного асинхронного доступа

через мьютексы и closure-функции withRLock

Локальный запуск Nats и PostgreSQL в Docker

docker-compose up --build 

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages