Date 如何扩展基于日期的事件系统,例如在任何给定时间处理数百万事件的谷歌日历

Date 如何扩展基于日期的事件系统,例如在任何给定时间处理数百万事件的谷歌日历,date,calendar,google-calendar-api,eventtrigger,Date,Calendar,Google Calendar Api,Eventtrigger,我正在寻找一种架构或算法,通过这种架构或算法,可以使用有效的模式来触发基于时间的事件。例如,当“Sun,06 May 2012 23:54:11+0300”到达时,应立即触发n个事件。(其中N可以介于0和N之间) 问题不在于扩展交付的系统(无论是消息队列、http get还是其他什么),而在于有效检测在给定时间应该触发的事件。或者更准确地说,我想我是在问关于允许有效O(n)的正确数据结构?基于日期窗口轮询n个事件 参考资料会很有价值, 谢谢。堆允许您保留项目集合,并以O(日志n)为代价执行以下操

我正在寻找一种架构或算法,通过这种架构或算法,可以使用有效的模式来触发基于时间的事件。例如,当“Sun,06 May 2012 23:54:11+0300”到达时,应立即触发n个事件。(其中N可以介于0和N之间)

问题不在于扩展交付的系统(无论是消息队列、http get还是其他什么),而在于有效检测在给定时间应该触发的事件。或者更准确地说,我想我是在问关于允许有效O(n)的正确数据结构?基于日期窗口轮询n个事件

参考资料会很有价值,
谢谢。

堆允许您保留项目集合,并以O(日志n)为代价执行以下操作: --插入任意项 --Pop最小项 如果我没弄错的话,你可以看一下O(1)的最小项

因此,我认为您应该将事件保存在一个堆中(按照时间指定的顺序),并且: --每当堆发生更改时,为最小(=下一个时间)项的时间安排操作 --对于复杂事件,使用下一次调用的时间再次插入事件本身

这并不是严格地基于约会窗口,但我认为这对你来说可能更好