Skip to content

Микросервис, оркестрирующий выполнением пользовательских и системных задач.

License

Notifications You must be signed in to change notification settings

BergenIt/task-service

Repository files navigation

task-service

Микросервис оркестрирующий выполнением пользовательских и системных задач.

Grpc адрес сервиса (Http2).
  • Порт записан в переменной среды окружения Kestrel__EndPoints__Http2__Url (http://*:80)
Http адрес сервиса.
  • Порт записан в переменной среды окружения Kestrel__EndPoints__Http1__Url (http://*:443)
Деплой.
  • Сборка + развертывание - /deploy/docker-compose.yml) или TaskService.Main/Dockerfile
  • Стандартные переменные среды в директории для развертывания deploy/dev-env

Написание конфигов задач

Файлы задач
  • Стандартные файлы для записи задач JobsShadow.yaml JobsSystem.yaml JobsUser.yaml
  • Пути к файлам прописывается в переменных среды Jobs__Shadow Jobs__System Jobs__User
  • Так же поддерживаются json файлы с аналогичной структурой
Написание задач

Сервис работает с 3 типами задач - User, System, Shadow

Первый тип может создавать юзер со своими данными (как одиночная задача так и повторяющаяся)

Второй тип заносится в БД и исполняется с определенным промежутком(из yaml файла, может быть изменен юзером) с определенными данными (из yaml файла)

Третий тип аналогичен второму, однако не может быть изменен юзером и не показывается ему на фронте

Сервис работает с 2 протоколами - grpc и http

Описание задач пишется в формате yaml файла

Имя задачи, которое будет показываться на фронте:

--- !!! Данные поля не пишутся для пользовательских задач !!! ---

Interval: "0:0:10" - интервал в стринговом формате TimeSpan
JsonData: - данные, которые будут спаршены в json\proto объект и отправлены
    StringData: "test string"
    IntData: 12345
    BoolData: true

--- !!! Данное поле пишется только для пользовательских задач !!! ---

Schema: - схема данных, которая будет отправляться на фронт, необходима для понимания формата данных задачи
    StringData : string
    IntData: int[]
    BoolData: bool

Задача формируется из 3 этапов(Validator\Selector\Sender ), Sender - обязательный этап

Каждый может использовать свой протокол общения

Валидатор необходим для проверки возможности выполнения той или иной задачи и должен отдавать json с bool свойством IsValid

Селектор делает выборку данных, необходимых для исполнителя из данных, которые юзер положил в задачу (или данные из yaml файла), рекомендуется использовать минимальный набор данных для хранения

Сендер отправляет данные от селектора (или из базы, если этап селектора отсутсвует) на обработчика

Этап задачи: - Validator\Selector\Sender 
  Type: Grpc - протокол для общения
  Router: - описание адреса обработчика
    Service: AuditService - имя сервиса grpc
    Method: GetAuditLogs -  имя метода grpc
    Uri: http://user-service - url обработчка для отправки

или

  Type: Http - протокол для общения, для http отправка происходи Post методом
  Router: - описание адреса обработчика
    Uri: http://user-service - url обработчка для отправки

About

Микросервис, оркестрирующий выполнением пользовательских и системных задач.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages