我正在使用的框架由依赖于其他服务的有状态服务组成,形成一个有向无环图http://en.wikipedia.org/wiki/Directed_acyclic_graph
我想尽可能高效地启动服务。这意味着在可能的情况下并行启动服务。例如,在维基百科链接的图表中。我会同时启动 3、5 和 7,因为它们没有任何依赖关系。我见过拓扑排序,但仅此一项并不能告诉您可以并行启动什么。我正在寻找用于分组服务的库/api,例如:
一个 b, c, d, e. f, g, H
这告诉我先开始“a”,然后并行开始“b”、“c”和“d”,然后是“e”,依此类推。
我找到了一些对顶点建模的库,但我正在寻找的分组没有。到目前为止,我已经找到了一些有向图的实现,但是,我需要一个许可许可证(例如非 gpl)。我找到了ComputeNodeOrder http://www.docjar.com/docs/api/org/eclipse/osgi/internal/resolver/ComputeNodeOrder.Digraph.html(来自Equinox org.eclipse.osgi_3.6.2.R36x_v20110210),Jgrapht( lgpl) http://www.jgrapht.org/javadoc/ , Jung http://jung.sourceforge.net/index.html , Plexus http://plexus.codehaus.org/plexus-utils/apidocs/org/codehaus /plexus/util/dag/DAG.html但不确定是否有任何/所有这些都可以满足我的需要。