ATM all windows for the different collections "fire" at the same milliseconds. This results in periodic load bursts.
Quote from "Streaming Systems" (O'Reilly 2018): "In circumstances for which comparing across windows is unnecessary, it’s often more desirable to spread window completion load out evenly across time. This makes system load more predictable, which can reduce the provisioning requirements for handling peak load."
In the book there is an example where a field value is used via its hashCode to calculate window offsets. In our case we could offset windows depending on the exporter node id. The resulting flow summaries would no longer all be aligned to the same window boundaries. They would also be spread over time. The ES drift plugin copes with that situation.
We already use the FlowWindows.FlowWindow class that distinguishes between Windows of different exporters based on exporter node ids. We can use standard IntervalWindow that are offset based on the hash of node ids instead.