Skip to content

Приложение для быстрого получения и хранения заказов

Notifications You must be signed in to change notification settings

MLGBrotishka/order-stream

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Order stream

Приложение для быстрого получения и хранения заказов

Запуск

make docker - запускает базу данных PG и очередь Nats streaming

make run - запускает сервер

make publisher - запускает клиент, с помощью которого можно записывать в очередь

Архитектура

drawing

  • Cache (in memory) - для кэширования частых запросов
  • PostgreSQL - в роли БД
  • Nats-streaming - брокер сообщений для получения заказов

Был использован подход чистой архитектуры так чтобы можно было легко заменять конкретные реализации, например легко заменить кэш или бд на Redis, a Nats streaming на что-то поновее).

Для кэша был реализован подход Сache prefetching, предзагрузка данных из бд при каждом запуске. Считаю это не лучшим решением, поэтому была реализована логика и для другого подхода Cache aside.

Плюсы второго, в загрузке данных по необходимости из бд, редко используемые могут быть не загружены вовсе.

Для перехода на другой алгоритм, достаточно выбрать другой метод создания кэша. Вместо cache.NewOrderLoad -> cache.NewOrder. Тогда данные будут загружаться по логике cache hit/miss.

About

Приложение для быстрого получения и хранения заказов

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published