我正在为下面的用例寻找一个优化的设计。
我正在构建一个系统,在这个系统中,用户创建具有结束日期/时间的实体。我需要安排一个作业,以便在到达结束时间后立即将这些实体的状态更改为过期。
这是我能想到的两个解决方案。
有没有比上述两种方法更好的解决办法?一般来说,人们是如何做到这一点的?
发布于 2011-09-03 05:35:21
每分钟一次查询并不是一个很重的负载。我有一个windows服务,它执行以下操作:
管理voip会话的日程,启动它们,结束它们,开始记录,结束记录,清除记录驱动器上的记录空间,显示OSD消息。这些任务中的每一个都在自己的线程中使用计时器,大约每4秒运行一次查询。数据库中有100,000多条记录,100多个web应用程序的用户一次访问同一个数据库。它运行良好,并已经有大约3年了。
根据您的框架,可能有更好的选择,但我目前还没有找到任何选项。例如,.NET有任务并行库,我还没有使用它,我听说这里提供了一些东西。不管怎样,我已经使用了第一种方法很多年了,而且它从来没有对我造成过错误。
考虑到这一点,即使是基于事件的系统也处于一个具有某些函数指针的循环中。问题是您是否正在手动管理它,以及它是如何线程化的。db负载应该是不重要的。
发布于 2011-09-03 05:36:16
我认为你可以把两种想法结合起来。
每小时运行一个获取数据的作业。现在只为在接下来的60分钟内到期的每个对象创建作业。
现在60分钟的时间只是个例子..改变它以适应你的需要。
https://stackoverflow.com/questions/7291322
复制相似问题