Skip to content

Learning project of Microservices using ASP. Net (C#)

Notifications You must be signed in to change notification settings

FnaTikJK/Microsharps

Repository files navigation

Распределенный сервис постановки и выполнения абстрактных задач с контролем времени жизни процесса

C# RabbitMQ Redis Elasticsearch Kibana Kubernetes Docker Postgres

Сервис для постановки, выполнения и мониторинга абстрактных задач с возможностью контроля времени жизни процесса (TTL, Time-to-Live).

Использование

Сервисы доступны по адресам:

  1. ApiGateway -http://84.252.135.174/swagger/index.html
  2. Service Discovery - http://84.252.135.174/sd/swagger/index.html
  3. Users - http://84.252.135.174/users/swagger/index.html
  4. Abstract task service -http://84.252.135.174/tasks/swagger/index.html
  5. Elasticsearch - http://84.252.135.174:9200/
  6. Kibana - http://84.252.135.174:5601/

Описание

Архитектура

Ответственности сервисов можно увидеть на схеме: image

Код

Выделили проект Infrastructure, чтобы стандартизировать общие моменты сервисов + упростить заведение новых API и Client проектов. Сделали свой Service Discovery в качестве интереса. Сделали авторизацию/регистрацию - сервис Users, но не успели закрыть ею endpoint-ы. Основа проекта - AbstracttaskService и AbstractTaskWorker. Захостили сервис в docker-compose на ВМ в сервисе yandex cloud.

Добавлено CD с использованием github.actions

Постановка задач:

Сервис принемает задачи от внешних систем через API. Задача содержит описание задачи и максимальное время на выполнение (TTL).

Очередь задач:

Задачи добавляются в очередь брокера сообщений RabbitMQ.

Выполнение задач:

Обработка задач выполняется отдельным сервисом - Worker. Он прослушивает очередь задач, кэширует в Redis выполняемые задачи для отслеживания процесса их выполнения. Если TTL истекает или задача выполняется успешно, задача удаляется из кэша и сохраняется в базу данных. Обработка задач распределена между несколькими экземплярами сервиса для обеспечения отказоустойчивости и высокой доступности.

Мониторинг и контроль:

Сервис предоставляет API для мониторинга состояния задач и возможность повторного выполнения задач по запросу пользователя.

Протокол взаимодействия:

Взаимодействие с внешними системами реализовано через REST API

Безопасность:

Сейчас, для наглядности, доступны swagger-ы всех сервисов. В реальности стоило бы открыть только ApiGateway и закрыть его https соединением.

Логирование и мониторинг:

Каждое приложение пишет логи в 3 места:

  1. Консоль
  2. Локальный файл - в swagger каждоого сервиса есть Endpoint, где можно посмотреть логи
  3. В Elasticsearch

About

Learning project of Microservices using ASP. Net (C#)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •