Project: springxd
Issue XD-1143: Spike for matching algorithm for stream/job deployments and nodes
Base matching algorithm on the model used in http://research.cs.wisc.edu/htcondor/ Jobs/Stream - specify their requirements and preferences Nodes - specify their requirements and preferences e.g. A job/stream module "requires" a linux x85-64 platform and "prefers" the machine with the most free memory A node "requires" that only only can run jobs when there is 25% or more free memory and it "prefers" to run stream modules over job modules. The requirements and preferences are represented as SpEL expressions in a "Advertisement" data structure. There is a 'require' expression and a 'preference' expression. Matching occurs between Node Ads and Job/Stream Ads so that the requirements of both Ads evaluate to true and the matching nodes are ranked according to the preference expression. The Job/Streams Ads can make use of well defined attributes about the nodes, such as it's memory/cpu usage.
Story points: 10