On Tuesday, August 05, 2014 06:33:59 AM Martin Vaeth wrote:
> J. Roeleveld <jo...@antarean.org> wrote:
> >>No, it wouldn't, since jobs just finishing and wanting to report their
> >>status cannot do this when there is no server. You would need a rather
> >>involved protocol to deal with such situations dynamically.
> >>It can certainly be done, but it is not something which can
> >>easily be "added" as a feature: If this is required, it has to be the
> >>fundamental concept from the very beginning and everything else has to
> >>follow this first aim. You need different protocols than TCP sockets,
> >>to start with; something like "dbus over IP" with servers being able
> >>to announce their new presence, etc.
> >>
> > I think it's doable with standard networking protocols.
> 
> Yes, you can "tunnel" such a protocol over existing protocols,
> but "essentially" you must use a different one.
> Unless you want a static setup (use server A, if that fail use
> server B, and server A reports everything to server B)
> it cannot be done in a simple way that you have only
> one port open on the server: The client also needs a port open
> to be informed about the "current" server. Even worse, you need
> a "daemon" running for each client to handle this port.
> In such a case, you might make each client its own server,
> by spreading all changes to all clients immediately.

Not necessarily, the client listens on a port and the server connects to the 
clients it maintains. It then also knows when a client is dead and 
corresponding jobs have an issue.

> > But, either you have a master server which controls everything.
> > Or you have a master process which has failover functionality
> > using classical distributed software techniques.
> 
> This summarizes it quite good.
> The concept of my "schedule" is to follow the first path (with the
> advantage of being simple, having only one part, clients do nothing
> while their "task" is runnning).
> If you want to follow the latter, you need a rather different CLI
> and a different protocol - which is practically everything "schedule"
> consists of; so it is probably simpler to rewrite this from scratch.
> As I said: It is not a "feature" you can easily add later on; it is a
> fundamental decision you must choose from the very beginning.
> When you are at it you should probably also encrypt the communication
> and establish methods for authentification which is also something
> I currently omitted in "schedule" for simplicity (although this might
> be easier to add later on).

I agree. "schedule" is good for most uses we might encounter. For the business 
case I have, I will need to write something myself.

Thanks to this discussion we've been having, I now have a much better idea on 
how to approach this project. For that I am very thankful.

--
Joost

Reply via email to