example_worker_pool

command module
v0.0.0-...-e538085 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 17, 2023 License: MIT Imports: 12 Imported by: 0

README

example_worker_pool

Содержание

О проекте

Проект для демонстрации варианта построения сервиса. Он дает возможность создавать неограниченное количество прототипов приложения, путем добавления их в конфигурационный файл.

Посмотреть версию программы можно задав ключ при запуске. Если используется этот ключ, программа только выведет версию, но не запустится:

--version

Пример вывода
go run main.go -version

1.0.0

Реализована проверка наличия параметров в командной строке; если их нет, значения параметров берутся из конфигурационного файла (.yaml). Указание пути к конфигурационному файлу в командной строке при запуске программы:

-configPath=PATH

где PATH — полный путь до конфигурационного файла.

Для просмотра тестов и покрытия пакета config, можно вызвать команду make.

Структура конфигурационного файла (Необходимо соблюдать вложенность)

# Параметры логгера
logger:
  # Уровень логирования (INFO|WARN|ERROR|FATAL|DEBUG|TRACE)
  logLevel: DEBUG
  # Директория сохранения лог файла (рекомендуется не использовать / в конце)
  logDir: ./
  # Имя лог файла, расширение .log можно не использовать, также с этого имени будут начинаться имена лог файлов логгеров и других файлов, создаваемых ими. По умолчанию используется monitoring
  logFile: 
  # Режим логирования (stdout(вывод в консоль), file(запись в файл), оставить поле пустым(stdout+file))
  logMode: 
  # Перезапись лог файла при старте работы
  rewriteLog: true
sleeps:
  # Время, на остаток от которого воркер уснет
  sleepService: 5s
# Параметры API для формирования отчетов
apiControl:
  # Запускать ли API
  use: true
  # Адрес API
  apiHost: 
  # Порт API
  apiPort: 
# Параметры каждого отдельного воркера
workers:
  # Включить воркер
  - use: true
    # Имя воркера (оно будет применяться во всех файлах, создаваемых воркером)
    name: test1
  - use: false
    name: test2

Перечитывание конфигурационного файла

В проекте реализовано перечитывание конфигурационного файла при его изменении. После сохранения конфигурационного файла при запущенном приложении, оно может пойти по 2 вариантам работы.

1 вариант: если все воркеры на данный момент отработали и сервис остановлен на время, указанное в sleepService, происходит моментальное перечитывание и перезапуск всего экземпляра работы приложения и воркеры начинают работать.

2 вариант: если в момент сохранения конфигурационного файла работает воркер, то приложение дождется окончания его работы, не запустит последующие воркеры (при их наличии) и после этого начнет перечитывание как в 1 варианте.

Работа API

API запускается и ожидает запросы по адресу:

http://$apiHost:$apiPort/api/status/

Ожидается POST запрос вида:

{
    "message": "get status"
}

С помощью канала воркеры способны отправлять ошибки на API, для их сохранения и отдачи по запросу. API сохраняет каждую ошибку в файл с именем $logDir/$logFile_error.log.

По запросу ответ будет отправлен получателю в виде json:

{
    "countErrors": 0
}

Счетчик ошибок обнуляется после каждого опроса для корректности данных. Файл с ошибками читается zabbix-agent и отсылает расшифровки ошибок на сервер zabbix. По достижении 10 запросов на апи, файл с ошибками удаляется.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL