Фреймворк, с которым я работаю, состоит из сервисов с отслеживанием состояния, которые зависят от других сервисов, образуя направленный ациклический граф http://en.wikipedia.org/wiki/Directed_acyclic_graph
Хочу как можно эффективнее запускать сервисы. Это означает запуск служб параллельно, где это возможно. Например, в графике по ссылке википедии. Я бы запустил 3, 5 и 7 одновременно, поскольку у них нет никаких зависимостей. Я видел топологические разновидности, но одно это не говорит вам, что можно запускать параллельно. Я ищу библиотеку / api для групповых сервисов, например:
a 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/, Юнг http://jung.sourceforge.net/index.html, Plexus http://plexus.codehaus.org/plexus-utils/apidocs/org/codehaus/plexus/util/dag/DAG.html, но не уверен, что все это поможет мне.