【发布时间】:2017-03-01 04:10:09
【问题描述】:
我有一个用 C# 编写的 Windows 调度程序服务,它从数据库中查询一堆记录,对数据执行一组操作并将这些记录更新回数据库。我现在需要将此服务部署在多台机器上。但是,我最终会遇到的明显问题是并发性。在多台机器上运行的服务不应获取相同的记录。是否有适合这种情况的模式/最佳实践? 我正在使用 Oracle 11g 数据库。
在使用多线程方法处理记录后,我们已经达到了性能的最大极限。为了获得更高的性能,我们正在考虑在多台机器上运行该服务。
【问题讨论】:
-
在我看来,您可以使用存储过程——一旦执行——将相应的实体标记为“进行中”或其他东西(必须锁定以便另一个存储过程调用不能中断) 或通过编写一个代理来访问处理多访问内容的数据库。
-
如果它做同样的事情,你为什么要将它部署到多台机器上?这有什么真正的好处吗?从你的描述来看,你已经在惹麻烦了:)
-
@Markus Safar,我正在考虑您提到的类似线路,但无法找到锁定状态更新的最佳方法。
标签: c# design-patterns deployment windows-services