【问题标题】:Scheduler / Notification Service Recommendations / Architecture Decision调度程序/通知服务建议/架构决策
【发布时间】:2017-02-20 00:05:43
【问题描述】:

我需要创建一个推送通知服务(我通过 SignalR/WebAPI 完成)和一个可以在某个日期/时间或某个重复间隔运行的 Future Task Runner/Scheduler。

一个用例的例子是付款提醒服务,如果付款仍未在到期日支付,系统将向“管理员”发送通知,并向“消费者”发送电子邮件/短信。可以手动或自动将提醒延后到另一个日期或更新到新的日期线。

Scheduler 服务可能可用于其他任何事情,例如设置手动待办事项、定期提醒、未来的电子邮件/SMS 发送日期等...并且我正在查看每个日期时间可能有数千封简报电子邮件等...

我已经研究了几个选项

1) Quartz.net / Hangfire / 后台任务

--> 既可以在 asp.net 中运行,也可以作为 Windows 服务运行。

--> 有计划任务/定期支持等...

--> 对我来说似乎过于复杂,如果与 asp.net 服务相结合,可能效率不高,没有那么大的可扩展性,需要很好地设计以备将来验证...需要设置额外的商店?

2) 任务调度器

--> 在我的焦土/凤凰部署场景中不太可行

3) 外部服务

--> Azure 调度程序

--> AWS Cloudwatch 调度程序/事件(也可以触发 SNS/Lambda 等...)

--> 似乎是一个很好的解耦解决方案,但维护/测试/持久性可能是个问题?需要根据解决方案正确设置...不知道如何获得“12 Factor's App”的产品/开发奇偶校验测试等...

4) 事件驱动的消息总线

--> 巴士具有良好的耐用性和可靠性,但如果我想取消等会变得复杂......?

--> 未来计划的限制,就像我认为 SQS 只有 15 天的限制或类似的东西。

5) 演员模型

--> Akka.net 或 Orleans,似乎设置简单,尚未使用,但似乎有很多符合要求的东西,执行特定任务的小演员,调度程序,高性能,简单为更多工作​​添加集群(每个逻辑都是每个参与者,其余是配置),易于在本地复制并且很好......单个工作单元参与者对我来说很有意义。

--> 没有这方面的经验,但是对于我的场景来说这会不会有点过头了?对于一个成熟的调度程序来说,这似乎也是一个很好的未来证明。

--> 否定。尚无 dotnet 核心支持

欢迎提出任何其他建议...我需要在 2 周内完成。

附:真的很想知道 Google Now Reminders 的架构是什么……这是一项很酷的服务“提醒我在某个时间做某事”,而且它确实有效。

【问题讨论】:

    标签: .net scheduled-tasks scheduler akka.net orleans


    【解决方案1】:

    您是否注意到 Orleans 有一个称为“提醒”(也称为“持久计时器”)的内置机制,这听起来正是您所要求的。

    https://dotnet.github.io/orleans/docs/grains/timers_and_reminders.html

    .NET Core 支持即将到来。

    【讨论】:

    猜你喜欢
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多