Мы видим, что, как правило, firehose поддерживает последовательность заказов, но когда мы увеличиваем пропускную способность firehose, он генерирует несколько файлов и разбивает последовательность заказов, потому что запросы put случайным образом (или циклически перебрасываются) подаются в несколько сегментов, каждый из которых имеет отдельный выход .
Например, пожарный шланг с 10 осколками будет выводить не менее 10 файлов каждую минуту (при условии, что буферный интервал составляет 60 секунд). Эти 10 файлов не попадают в S3 в одно и то же время, есть некоторая разница во времени. Нам нужно поддерживать последовательность, поэтому, если бы мы могли объединить все эти 10 файлов, мы могли бы упорядочить файл по порядку. Даже если мы увеличим интервал буфера, скажем, до 5 минут, даже тогда, из-за ограничения размера буфера, мы никогда не сможем быть уверены, что вывод будет всегда через 5 минут.
Наша проблема в том, что мы не можем определить, какие 10 файлов относятся к одному и тому же набору выходных данных. Как определить выходные файлы одной и той же партии?