【问题标题】:How to send Scheduled-time notifications using SQL Server and Windows Azure Notification Hubs?如何使用 SQL Server 和 Windows Azure 通知中心发送计划时间通知?
【发布时间】:2016-02-24 05:38:29
【问题描述】:

让我解释一下我们已经做的当前场景以及我们正在努力实现的目标。

现有架构:在我们当前的架构中,我们有一堆服务和一个 SQL Server 数据库。该服务允许移动设备(Android/IOS)允许用户注册/登录,然后设置他的日程安排,例如“我需要在中午 12:00 吃午饭”。

Android 应用会在当天结束时轮询设备在第二天的所有日程安排,然后在第二天的适当时间显示这些日程安排。

这种方法的问题是,首先,可能(据我报告)IOS 不能做一些事情,比如将日程安排在后台,然后显示时间发生并且第二,这不是处理此问题的最佳方法 - 如果用户在移动应用程序完成其计划之后更改计划怎么办。


所以,我想出了一个解决这个问题的架构(Proposed Architecture 1),在进一步的调查中,我还想到了一种不同的方法来解决这个问题(Proposed Architecture 2 >) 并在下面提到这一点。您能帮我解决我的相同问题并尝试了解最有效的方法吗:

建议拱门。 1:请看下图——

这种架构非常简单。我们在这里建议我们可以使用SQL Dependency + Query notification 来了解Schedule 表中的变化(该表包含所有的日程表,当任何用户添加、更新或删除日程表时,查询通知将被抛出)。此 SQL Server 单独驻留在云上。

我们的 Azure 移动服务 将有一个此查询通知的处理程序,一旦收到通知,它就会使用更新的时间表更新自己的 Azure SQL DB然后它会“提示”它自己的调度程序以自己为目标以进行下一次重新调用 - 也就是说 - 调度程序将检查 Azure SQL DB 中的调度,如果有通知要发送,它将,然后使用通知中心发送通知,然后在下次必须发送通知时重新安排自己

现在这种方法的最大问题是 - 我们很确定我们可能有成百上千的用户同时更新他们的日程安排 - 当这种情况发生时,我不是用户如何使用这种架构会表现 - 它会破裂吗? - 此外,如果调度程序运行并发现它必须在特定时间(例如下午 6:00)发送 1000 条通知,它会不会,如果没有中断,那么它会在通知中引入太多延迟 - 比如说通知应该在下午 6:00 发送的内容将在下午 6:05 左右发送


在思考问题的同时,我们提出了下一个提议的架构:

建议拱门。 2:

在这种架构下,我们想为什么不把调度的事情转移到 SQL Server 上,并创建一个每分钟运行一次的作业(因为,没有人会在一分钟内设置调度 - 也就是说 - 一个人会设置一个安排在下午 6:35,而不是下午 6:35:09)

此外,此过程仅涉及 SQL CLR 对象和通知中心,不涉及 Azure 移动服务或 Azure SQL DB。

所以,这个过程将是这样的:

  • 将安排一个 SQL Server 作业每隔一分钟运行一次
  • 如果作业在下午 5:00 开始,它将查看下午 5:01 是否有任何预定通知 - 如果是,则开始发送通知
  • 如果没有,那么静默结束,然后在下午 5:01 重新调用自己,看看是否有任何针对下午 5:02 的计划
  • 以同样的方式继续,直到明确停止

主要问题是这会奏效吗?

为每分钟安排一个作业是否是一种好习惯(即使 SQL Server 有该选项)?

如果作业在下午 5:01 发现它有 10,000 条通知要在下午 5:02 发送,该怎么办?是否能够发送所有这些

顺便说一句,在这个体系结构中,我们将使用 Azure 通知中心发送通知,并且会有一个 SQL CLR 函数说,“发送通知”,它将挂接到这个通知中心,并在被调用时发送通知计划的作业。

请向我推荐其他链接,这些链接将指向更好的处理方式。如果我们必须一次发送太多通知,我的客户非常担心我们将如何处理通知

非常感谢所有回答/评论的人! :)

【问题讨论】:

    标签: sql-server architecture notifications job-scheduling azure-notificationhub


    【解决方案1】:

    您是否探索过可能使用通知中心的 SendScheduledNotifications API。您可以在此处阅读更多信息:https://msdn.microsoft.com/en-us/library/azure/dn790626.aspx

    【讨论】:

    • 是的,发送预定通知是我最初探索的东西 - 但后来 - 使用起来会很棘手,因为用户实际上甚至可能在最后几分钟取消计划或完全改变它这甚至可能导致在不需要时意外地向他发送通知 - 顺便说一句,您如何建议将通知发送给希望通知在下午 12:10 的用户。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 2016-08-14
    • 2015-03-27
    • 2021-06-01
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    相关资源
    最近更新 更多