Skip to content

YawKar/wbl0

Repository files navigation

WBL

  • Сервис слушает поток заказов в nats-streaming топике
  • Сервис кэширует их in-memory с конфигурируемыми cleanup interval и cache expiration duration
  • Сервис имеет два замаунченных ресурса на order/ и view/
    • /order
      • /{uuid}: возвращает json с информацией о заказе без инфы про платёж, доставку и товары
      • /{uuid}/payment: возвращает json с информацией про платёж заказа
      • /{uuid}/delivery: возвращает json с информацией про доставку заказа
      • /{uuid}/items: возвращает json с информацией по всем товарам в заказе
    • /view
      • /{uuid}: отображает bootstrap server side render со всей информацией по заказу
  • Nats-streaming & Postgres поднимаются в docker compose
  • Миграции базы данных накатываются через dbmate
  • Protobuff модели компилируются через хелпер скрипт compile_protos.sh
  • Полностью готовая рабочая среда в devcontainer.json на ubuntu с docker-in-docker
  • Run 'nd Go docker-compose.prod.yml, в котором при развёртке накатываются миграции и поднимается всё всё всё, наружу торчит сервер и постгря
  • docker-compose.dev.yml поднимает только nats-streaming и postgres, а также накатывает миграции, сервисы поднимаются ручками через CLI args

View

example_gif

How to run

Без publisher сервиса

./up_prod_docker_env.sh
# а для сворачивания:
./down_prod_docker_env.sh

С publisher сервисом

./up_prod_docker_env.sh --profile with_publisher
# а для сворачивания:
./down_prod_docker_env.sh --profile with_publisher

CLI конфигурация

cmd/server

Usage of server:
  -addr string
        set server's address (server listens to and serves addr:port) (default "localhost")
  -cache-cleanup duration
        set cache cleanup interval (default 6m0s)
  -cache-expire duration
        set cache expiration time (default 3m0s)
  -client-id string
        set nats-streaming client's id (default "default_client")
  -cluster-id string
        set nats-streaming cluster's id (default "default_cluster")
  -db-url string
        set database url
  -log-level int
        debug: 0; info: -4; warn: 4; error: 8
  -nats-url string
        set nats-streaming node's url (default "nats://127.0.0.1:4222")
  -port uint
        set server's port (server listens to and serves addr:port) (default 8080)

cmd/publisher

Usage of publisher:
  -client-id string
        set nats-streaming client's id (default "default_client")
  -cluster-id string
        set nats-streaming cluster's id (default "default_cluster")
  -log-level int
        debug: 0; info: -4; warn: 4; error: 8
  -nats-url string
        set nats-streaming node's url (default "nats://127.0.0.1:4222")
  -seed int
        set seed for faker (default 42)
  -spam-duration duration
        set spam duration (default 1m0s)
  -spam-rate duration
        set spam rate (2s means 1 message every 2 seconds) (default 1s)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published