Sobes.tech
Senior
47

Kaip išspręsti reikalavimų konfliktą: vėlavimas neturi būti ilgesnis kaip 20 minučių, tačiau failai turi būti dideli (512 MB), jei temos duomenų mažai?

Įmonės kur klausė
OZONOZON

Atsakymas iš AI

sobes.tech AI

Чтобы разрешить конфликт требований — задержка не более 20 минут и файлы должны быть большими (512 МБ), даже если данных в топике мало, можно использовать следующие подходы:

  • Буферизация и таймауты: накапливать данные до достижения размера файла или максимального времени ожидания (20 минут), после чего отправлять файл, даже если он меньше 512 МБ.
  • Динамическое формирование файлов: если данных мало, отправлять меньший файл по таймауту, чтобы не превышать задержку.
  • Компромисс по размеру: установить минимальный размер файла, например, 256 МБ, если 512 МБ не набирается за 20 минут.

Пример на Java (псевдокод):

long maxDelay = 20 * 60 * 1000; // 20 минут
long maxSize = 512 * 1024 * 1024; // 512 МБ
long startTime = System.currentTimeMillis();
ByteArrayOutputStream buffer = new ByteArrayOutputStream();

while (true) {
    byte[] data = pollDataFromTopic();
    if (data != null) {
        buffer.write(data);
    }
    long elapsed = System.currentTimeMillis() - startTime;
    if (buffer.size() >= maxSize || elapsed >= maxDelay) {
        sendFile(buffer.toByteArray());
        buffer.reset();
        startTime = System.currentTimeMillis();
    }
}

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