日期:2014-05-17  浏览次数:20974 次

在不同服务器上部署相同的控制台程序P,怎样才能让它们不打架呢?
为了加快处理的速度,我可能要部署很多个程序到不同的服务器上。
这些程序都是从数据库中取任务(一条数据是一个任务),做完相关的任务后更新任务的状态。

  DataBase tablename column type length Default or is NULL
StatusData WallETaskInfomation AutoId bigint identity NO
StatusData WallETaskInfomation TaskFileName varhcar 50 NO
StatusData WallETaskInfomation Status varchar 10 NO
StatusData WallETaskInfomation UserId int NO
StatusData WallETaskInfomation UserName varhcar 50 NO
StatusData WallETaskInfomation StartTime smalldatetime NO
StatusData WallETaskInfomation FinishTime smalldatetime NO
StatusData WallETaskInfomation LastUpdate smalldatetime getdate()
StatusData WallETaskInfomation ProcessingProgram Varchar 50
比如程序有p1~p20 要保证P1 正在处理的任务,其他的程序P2~P20不会去处理。P1如果这个程序死掉了 它的任务可以重新被
P1~P20处理。
 并且P1~P20 只是一套程序。




------解决方案--------------------
我觉得你可以通过配置来让每一个控制台程序区负责处理不同区间的数据,比如机器1处理1-100条,机器2 处理101-200条,这样肯定不冲突
------解决方案--------------------
我只是打个比方而已,这样虽然比较粗糙但实现简单。
你也可以加个控制服务,它来做计划安排,任何子服务在挂掉后可以通过各种监控机制及时返回给控制端由它来重新派发计划。