Для тестов
rebar eunit
Для запуска приложения
rebar compile&&./start.sh
Для запуска бенчмарка
scheduler:benchmark().
-spec scheduler:schedule(TaskID :: binary(), PID :: integer(), Type :: static|dynamic, Time :: {rel, integer()}|integer()) -> ok. -spec scheduler:unschedule(TaskID :: binary(), PID :: integer()) -> ok.
Cупервизор scheduler_sup со стратегией one_for_all запускает два воркера scheduler_srv и aggregator_srv и дочерний супервизор queue_sup. scheduler_srv - пул очередей, запускает воркер queue_srv для каждого нового processID из под супервизора queue_sup (simple_one_for_one). queue_srv - принимает и удаляет данные в очередь, один раз в секунду проверяет очередь на таски у которых подошло время для выполнения(извлекает и ложит их в очередь реббита push_to_mq(Tasks) ). Также проверяется длина очереди, при необходимости излишки отправляются в аггрегатор (откуда ложатся в базу ), или наоборот пытается дополнить очередь из базы. agregator_srv - воркер, накапливает “излишки данных” из очередей и через промежуток времени ложит в базу (save_to_db(Tasks)) или по запросу достает из базы таски (get_from_db(PID, Quantity)) для дополнения очередей, также выполняет запросы на удаление конкретных тасок из базы.
[https://docs.google.com/document/d/1X3nr_Lz1YcO9A8eHZ1DGWMLQ9VyXL7cZVOkuYPlQMRU]