mmc*_*ole 5 architecture high-availability
我有一个应用程序,目前有以下设置:
设置看起来像这样:

该工作制片查询对于需要被添加到其经常需要被添加到工作队列每N分钟的工作列表新项目的数据库.这个作业生成器是我整个架构中唯一的节点,如果失败,将导致整个过程失败.我可以让数据库服务器,队列服务器或多个工作服务器发生故障,并且该过程将继续运行.
如何修改作业生成器以使其不是单点故障?我不知道如何分发它所做的工作,即每隔N分钟查询一次数据库,并将要处理的新作业排入队列.这是一项独特的任务.
我考虑过有多个生产者,每个生产者都会使用模数来处理1/P工作,其中P是生产者的数量.
就像是:
itemsToBeProcess = db.FetchItems()
for (item in itemsToBeProcessed) {
if item.id % producerNumber == 0) // Queue job
}
Run Code Online (Sandbox Code Playgroud)
这会将生产者的工作分成多个服务器.然而,这仍然不是理想的,因为如果单个生产者下降超过1/P值的工作将停止处理.所以,它仍然是部分失败.
任何人都可以提供任何关于我如何使这个工作生产者不是我的应用程序中的单点故障的指导?