我正在构建一个允许客户“在网络中”运行单个工作进程的服务。这些流程旨在运行很长时间,并且大约每分钟都会收到新订单(事件驱动)。这些流程旨在继续运行,即使没有新订单并且所有订单都已处理。-> 每个客户 1 个流程。
我需要以下“功能”:
- 开始一个新的进程
- 结束进程(按需,从不自动)
- 跟踪进程/用户
- 接收流程的新“订单”(通过客户 ID 识别流程)
- 通知客户当他的订单无法工作时,以防他/她的流程结束(例如发生异常,有人杀死了服务器......)
我正在寻找允许我解决以下问题的模式或最佳实践: - 一台服务器内的进程管理(例如,使用静态列表或单例模式,类似这样的东西来跟踪用户 ID 和进程之间的映射) -多台服务器的进程管理(可扩展性):一台服务器可能运行 100-200 个进程,如果我获得更多客户,我将如何记住进程在哪台服务器上运行?
我敢肯定,之前也有其他人遇到过这些问题,当然也有“正确”和“错误”的做法。