У меня есть сообщения, входящие в мою программу с миллисекундным разрешением (от нуля до нескольких сотен сообщений в миллисекунду).
Я бы хотел сделать некоторый анализ. В частности, я хочу поддерживать несколько переходящих окон количества сообщений, обновляемых по мере поступления сообщений. Например,
- количество сообщений за последнюю секунду
- количество сообщений в последнюю минуту
- # сообщений за последние полчаса, деленные на # сообщений за последний час
Я не могу просто поддерживать простой счет, например "1,017 сообщений за последнюю секунду", так как я не буду знать, когда сообщение старше 1 секунды и, следовательно, больше не должно быть в счете...
Я думал о том, чтобы поддерживать очередь всех сообщений, ища самое младшее сообщение, которое было более одной секунды, и вывести счет из индекса. Тем не менее, похоже, что это будет слишком медленно, и будет много памяти.
Что я могу сделать, чтобы отслеживать эти показатели в моей программе, чтобы я мог эффективно получать эти значения в режиме реального времени?