我正在构建一个服务,允许客户在“网络中”运行单独的工作进程。这些流程设计为运行很长一段时间,并且每分钟都有新的订单(事件驱动)。流程的目的是继续运行,即使没有新的订单,而且所有的订单都已经处理过。每个客户的-> 1流程。
我需要下列“功能”:
我正在寻找允许我解决以下问题的模式或最佳实践:- -一个服务器中的进程管理(例如,使用静态列表或单例模式,类似于跟踪用户id和进程之间的映射) - -对多台服务器的进程管理(可伸缩性):一台服务器可能运行100到200个进程,如果我有更多的客户,我如何记得进程在哪个服务器上运行?
我相信以前也有其他人面对这些问题,当然也有“对”和“错”的方法。
发布于 2013-09-24 14:19:13
我强烈建议您创建一个持久的集中式数据存储,以保留您的客户->流程列表。特别是当你在谈论请求之间的几分钟时。
有一个调度模式来处理将请求发送到正确的服务器/进程是非常简单的。您可能应该在每台机器上运行它,允许它将请求路由到内部处理器,或者将请求发送到另一台计算机。
这样,您就可以很好地进行故障转移扩展。任何机器都能派到其他人那里。您将需要一位主程序,其工作是监视其他机器的故障(读取集中式表,并对每个进程进行ping (只需使其成为另一种订单)。
https://stackoverflow.com/questions/18980627
复制相似问题