我知道optaplanner在问题规模上非常好。 但是如何根据问题请求的数量进行扩展呢? 目前,我们已将optaplanner公开为REST服务。 它每天可以获得数百个调度请求。 10秒后停止搜索。这意味着在某些峰值处,队列中存在多个调度请求。 我们可以做些什么来在多台机器上并行化请求?
答案 0 :(得分:2)
可以使用对多租户设置(在群集上)的所有低级支持:
SolverFactory
是线程安全的,每个节点1个Solver
。因为单个Solver
占用单个Thread
(它不会执行任何IO,不像Web请求等),我建议不要运行比线程更多的求解器。Solver.terminateEarly()
是线程安全的,如果节点正在退出,则可以在所有Solvers
上调用。但是,对于多租户设置尚未没有高级支持。因此,您需要自己构建:
ExecutorService
应该足够了。只需将请求提交为Future
即可。在未来构建解算器。在bootstrap构建SolverFactory。terminateEarly()
可以在这方面提供帮助。ExecutorService
。我们将来会建立高层支持。请 add your requirements in this jira issue 。