Decentralized orchestration of composite services results in a number of
flow topologies which differ in their messaging patterns and the
distribution of flow code amongst different partitions of a topology.
Different performance metrics result for different topologies, and this
is governed by the availability of resources, such as CPU cycles, memory,
network bandwidth, and so on. A performance model is used to evaluate the
performance of different topologies based on availability of resources,
and dynamically direct client requests between different topologies
according to prevailing conditions.