Giter Club home page Giter Club logo

messagio's Introduction

Микросервис для отправки сообщений в Kafka

Ссылка на рабочую версию

http://159.89.17.9:8080

Описание

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

Сервис также предоставляет статистику принятых и обработанных сообщений.

Использованный стек и технологии

  • Go: Язык программирования, используемый для разработки программы. Управление зависимостями осуществляется через go mod.

  • Postgres: Мощная объектно-реляционная система управления базами данных (СУБД). В проекте используется для хранения сообщений отправленных пользователем.

  • KAFKA: Система обработки потоковых данных, используемая для надежной передачи сообщений между компонентами системы. В проекте Kafka используется для асинхронной обработки сообщений и обеспечения высокой доступности и масштабируемости сервиса.

  • Docker: Используется для создания контейнеризованной версии приложения, что обеспечивает легкость развертывания и изоляцию зависимостей.

  • Make: Утилита для автоматизации процесса сборки программы. В проекте предусмотрены Makefile скрипты для упрощения процесса сборки и запуска.

  • Docker Compose: Инструмент для определения и запуска многоконтейнерных Docker приложений. Используется для упрощения процесса сборки и запуска, особенно когда Make не доступен.

  • Swagger: Используется для документирования API проекта. Позволяет автоматически генерировать интерактивную документацию API, которая доступна через веб-интерфейс.

Используемые внутренние технологии

  • GIN: Мощный HTTP веб-фреймворк, используемый для обработки веб-запросов. Позволяет быстро и удобно создавать маршруты и обрабатывать HTTP-запросы.

  • VIPER: Библиотека для управления конфигурациями в Go. Используется для загрузки, чтения и структурирования конфигурационных файлов проекта, что облегчает управление настройками приложения.

Это основные технологии использованные в данном проекте.

Общая информация о проекте.

Проект написан как тестовое задание, и рассматривается как учебный.

  1. Реализован конфигуратор программы на базе пакета Viper, позволяющий настраивать программу при помощи ENV Variables или флагами при запуске.
  2. Обработчик http запросов на базе пакета GIN - это ускоряет обработку и написание запросов.
  3. Подключение к базе данных Postgers. Сама база в данном случае поднимается в докере.
  4. Подключение а Kafka. Kafka тоже поднимается в докере и соответственно в очереди отправяются и читаются сообщения.

Начало работы

Для запуска на своем компьютере необходимо скачать данный репозиторий

git clone https://github.com/Vova4o/messagio.git

Установка

Для запуска необходимо набрать:

go mod tidy

Данная команда скачивает все зависимости необходимые для работы программы.

Запустите Docker, без наличия Docker данная программа работать не будет.

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

Make имеется и Docker запущен

Для первоначальной сборки и запуска пишем в корневом каталоге:

make up_build

Данная команда запускает сборку образа в докере и его запуск.

Make утилита отсутствует или запуск происходит из среды Windows

Находясь в корневой папке данного проекта, введите команду:

docker-compose up --build -d

Данная команда запустит сборку Docker образа.

Переходим к тестам

на своем компьютере откройте браузер и перейдите по ссылке

http://localhos:8080/

В данном Web интерфейсе можно отправит сообщение и получить статистику Также можно посмотреть документацию в формате Swagger.

В случае использования Postman

сделайте POST запрос по ссылке http://localhost:8080/message в JSON формате

{"data":"Your message here..."}

чтобы получить статистику сделайте GET запрос http://localhost:8080/getstat

Что необходимо улучшить.

В данном проекте нет логирования ошибок и запросов, что абсолютно недопустимо в продакшене. Необходимо добавить Логирование ошибок и запись их в БД.

messagio's People

Contributors

vova4o 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.