Giter Site home page Giter Site logo

wbl0's Introduction

WB Tech: level # 0 (Golang)

Учебный проект для поступления на стажировку в Wildberries, представляющий из себя демонстрационный сервис, отображающий данные о заказе. Сервис принимает поток заказов в формате JSON через брокер сообщений NATS-Streaming и записывает их в базу данных PostgreSQL, а так же in-memory кеш программы. Заказы после получения можно просмотреть через интерфейс на странице localhost:8080 введя uid заказа в поле.

Запуск

Для запуска проекта необходим запущенный NATS-Streaming server и PostgreSQL.

Шаги

  • В .env файле в прописанные поля следует вписать данные, необходимые для подключения к базе данных PostgreSQL.
  • в окне терминала в корне проекта следует ввести команду go run cmd/subscriber/main.go которая запустит подписчика NATS-Streaming, кешер, подключение к базе данных и HTTP сервер на localhost:8080.
  • после этого следует открыть дополнительное окно терминала в корне проекта и ввести команду go run cmd/publisher/main.go которая запустит публикации в NATS-Streaming.

Подготовлено 5 корректных сообщений с заказами и одно некорректное для публикации в NATS-Streaming, которые будут отправленны последней командой go run автоматически.

После отправки сообщений они будут доступны в базе данных PostgreSQL и кеше программы, запущенной первой командой go run. Просмотреть доступные сообщения кеша можно открыв в браузере адрес localhost:8080 и введя в поле на странице order_uid одного из отправленных заказов.

В случае сбоя и/или при повторном запуске subscriber, сообщения из базы данных будут автоматически загружены в кеш.

Кеш

В данной реализации кеш является "бессмертным" т.е. хранится в памяти бессрочно. Тем не менее в устройстве кеша предусмотрено автоматическое отслеживание времени жизни элементов в нём и очистка устаревших элементов с установленным интервалом запуска очистки. В дальнейшем возможно дополнение функциональности этими опциями в купе со сверкой актуальности информации в кеше и базе данных

Тесты

В данный момент добавлены тесты для кода в директории pkg/cache/. Для их запуска следует выполнить в терминале в директории pkg/cache/ команду go test или go test -v для более подробного вывода результатов тестов в окно терминала.

Disclaimer

Размещение данного проекта в открытый доступ не нарушает никаких правил так как сдача и проверка решения предусматривает его размещение в открытом репозитории.

wbl0's People

Contributors

mmat16 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.