There are many implementations of this issue, all different, because they are tailored to different needs.
distcc (distributed compiling), parallel database servers, enterprise backup solutions, and SETI, to name a few. Some use a polling mechanism (clients ask the server for work - SETI for instance), some use a pushing mechanism (distributed compiling - most of the time there won't be a compile job waiting), or something far more complex (parallel database servers).
One piece of advice, slapping security on it as an afterthought looks like a bad idea to me. I'd solve the security implications first, and intergrate them with the solution.