首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设计日历提醒/报警系统

如何设计日历提醒/报警系统
EN

Stack Overflow用户
提问于 2018-07-01 02:16:39
回答 1查看 4.8K关注 0票数 17

我有一个日历系统在我的网络应用程序。我们需要实施提醒。

是否有任何提醒/警报模式或系统设计,或最佳实践?如果是这样,或者如果不是,有什么办法可以实现这一点?

设计注意事项

  1. 如果日历事件被删除或更改,或者用户关闭该事件的提醒,则需要能够取消/阻止提醒。所以我们不能在排队什么的时候就开枪把他们忘了。
  2. 提醒可以是事件发生前的X时间,在日历事件设置中设置X
  3. 提醒不需要非常准确(到第二分钟甚至每分钟)。+- 5分钟就行了。
  4. 不想预先计算提醒,因为随着日历事件的改变,维护就变成了一场噩梦,特别是在经常发生事件的情况下。

到目前为止,我的设计是这样的:

  1. 每10分钟运行一次计划好的作业。
  2. 作业获取所有可能的相关事件,并计算下10分钟间隔内可能发生的事件(筛选出没有提醒集的事件)。
  3. Job在我的服务器端调用一个API端点,为所有相关方启动前端通知和电子邮件提醒。

但也许还有比这个更优雅的图案?已经建立起来的东西?或者什么天蓝色的工具等等?

我们的堆栈是.net和azure。

EN

回答 1

Stack Overflow用户

发布于 2018-09-20 02:24:19

为第二天创建一个表。添加一个触发器,以便在插入主表时添加提醒,并添加一个触发器(如果是同一天,则验证作业计划增加10分钟,并将其添加到daily中,用于删除提醒)。

在非高峰时间每天批次作业,为第二天放置提醒,并安排作业在适当的时间运行。如果在批处理运行之前删除了它们,则永远不会添加;如果之后,触发器将删除它们。

按照批处理脚本和触发器的计划,使用现有脚本发送基于小得多的每日表的通知。

这个过程将减少整个执行时间,同时使用最少的更多的数据库空间。

编辑:虽然建议的过程是对原始算法的改进,但如果没有使用数据,就无法确定这是否会转化为Azure平台上的财政节约。

轻量使用:这将通过消除完整的表查询并在不需要时每10分钟消除作业,从而提高性能,而牺牲几MB的额外存储。

大到高比例尺的解决方案:批处理和触发器将通过消除10分钟查询期间的全表扫描来提高效率。

在中间,你提出的解决方案是50/50。

如果没有更多的数据,我就无法说出这些确切的界限。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51119913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档