I need to design and write simple task distribution system, which distributes pending tasks between available workers. All tasks have equal priority and complexity. Workers have different efficiency.System work is:Receive tasks from user interface and enqueue themAnalyze free workers, then dequeue task and give it to best available workerShow tasks statusShow workers statusSend new results to checking system (better is send as much as possible at a time)Store all results (Optionally)Task is [name, args] (e.g. [evaluate, 2 + 2]). Worker can receive task, return his status, return task result.I must solve this problem with functional programming (in Clojure). I have never done problems like this, and I have difficulty fact that this is concurrent computing, so I can't determine what and in what order I must to do. I would appreciate flowcharts or instructions, or something, what can help me determine problem. May be comparing this problem in OO or procedural approach, can make it clear
Simple task distribution system
design;design patterns;functional programming;task organization