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