feat(core,dal,domain,snapshotWorker): Воркер по управлению снапшотами. Создание сгапшотов для таблицы RobotConfigurations
This commit is contained in:
31
PARR.Core/Services/Snapshots/Interfaces/ISnapshotProvider.cs
Normal file
31
PARR.Core/Services/Snapshots/Interfaces/ISnapshotProvider.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
namespace PARR.Core.Services.Snapshots.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Общий снапшот провайдер.
|
||||
/// Используется для реализации паттерна "Стратегия"
|
||||
/// </summary>
|
||||
public interface ISnapshotProvider
|
||||
{
|
||||
/// <summary>
|
||||
/// Периодичность создания снапшота (не меньше 1 минуты).
|
||||
/// </summary>
|
||||
TimeSpan Interval { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Срок хранения снапшотов (например, 30 дней). Всё, что старше — удаляется.
|
||||
/// </summary>
|
||||
TimeSpan RetentionPeriod { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Метод сбора метрик и записи их в базу данных.
|
||||
/// </summary>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task TakeSnapshotAsync(CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Метод очистки устаревших снапшотов.
|
||||
/// </summary>
|
||||
Task CleanUpOldSnapshotsAsync(CancellationToken cancellationToken);
|
||||
}
|
||||
}
|
||||
35
PARR.Core/Services/Snapshots/Interfaces/ISnapshotSettings.cs
Normal file
35
PARR.Core/Services/Snapshots/Interfaces/ISnapshotSettings.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
namespace PARR.Core.Services.Snapshots.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Настройки снапшотов
|
||||
/// </summary>
|
||||
public interface ISnapshotSettings
|
||||
{
|
||||
/// <summary>
|
||||
/// Интервал создания снапшотов для таблицы RobotConfiguration
|
||||
/// </summary>
|
||||
TimeSpan RobotConfigurationSnapshotInterval { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Длительность хранения снапшотов для RobotConfiguration в таблице ConfigurationShapshots
|
||||
/// </summary>
|
||||
TimeSpan RobotConfigurationSnapshotRetentionPeriod { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Длительность хранения снапшотов работы роботов в таблице Shapshots
|
||||
/// </summary>
|
||||
TimeSpan RobotSnapshotRetentionPeriod { get; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Настройки по умолчанию для ISnapshotSettings
|
||||
/// </summary>
|
||||
internal record DefaultSnapshotSettings : ISnapshotSettings
|
||||
{
|
||||
public TimeSpan RobotConfigurationSnapshotInterval => TimeSpan.FromMinutes(2);
|
||||
|
||||
public TimeSpan RobotConfigurationSnapshotRetentionPeriod => TimeSpan.FromDays(60);
|
||||
|
||||
public TimeSpan RobotSnapshotRetentionPeriod => TimeSpan.FromDays(60);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user