gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 13:44:47 24 4
gpt4 key购买 nike

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

是否有任何提醒/警报模式或系统设计或最佳实践?如果是的话,如果不是,有哪些方法可以实现这一目标?

设计考虑

  1. 如果日历事件被删除或更改,或者用户关闭该事件的提醒,则需要能够取消/阻止提醒。因此,我们不能只是解雇他们,然后将他们遗忘在队列或其他什么地方。
  2. 提醒可以是事件前 X 时间,X 在日历事件设置中设置
  3. 提醒不需要非常准确(精确到秒甚至分钟)。 +- 5 分钟就可以了。
  4. 不想预先计算提醒,因为随着日历事件的变化,维护工作会变成一场噩梦,尤其是涉及重复发生的事件时。

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

  1. 每 10 分钟运行一次计划作业。
  2. 该作业会抓取所有可能的相关事件,并计算接下来 10 分钟间隔内可能发生的事件(过滤掉未设置提醒的事件)。
  3. 作业调用我服务器端的 API 端点,向所有相关方发出前端通知和电子邮件提醒。

但也许还有比这更优雅的图案?一些已经确定的事情?或者天蓝色等中的一些工具?

我们的堆栈是.net 和 azure。

最佳答案

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

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

按照批处理脚本和触发器的计划,使用现有脚本根据更小的每日表格发送通知。

此过程将最大限度地减少总体执行时间,同时使用最少的数据库空间。

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

少量使用:这将通过消除全表查询并在不需要时每 10 分钟消除一次作业来提高性能,但会增加几 MB 的存储空间。

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

在中间,您建议的解决方案是 50/50。

如果没有更多数据,我无法确定这些确切的边界在哪里。

关于calendar - 如何设计日历提醒/警报系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51119913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com