Re:Circuit: A Minimal Distributed Programmatic OS written in Go
by jff on Friday April 17, 2015 @06:34PM
(#9397571)
I'm getting really sick of people calling this kind of thing an Operating System. If your first step is "Install Linux", it's not an operating system. It might be a meta-operating system or something like that, but we've had a pretty standard definition of what constitutes an OS for decades now.
Re:Circuit: A Minimal Distributed Programmatic OS written in Go
by mavdi on Friday April 17, 2015 @08:03PM
(#9397837)
Not an operating system in traditional terms. but it certainly is operating a system, on a higher level. Plus, life is too short to be offended by what people call their product.
Re:Circuit: A Minimal Distributed Programmatic OS written in Go
by seanmcdirmid on Friday April 17, 2015 @08:07PM
(#9397842)
Micro kernels and and OS personalities were once a think in Mach. Today, the micro kernel is simply called Linux (ironic since Linux was designed explicitly to not be a micro kernel).
Re:Circuit: A Minimal Distributed Programmatic OS written in Go
by seanmcdirmid on Friday April 17, 2015 @08:28PM
(#9397903)
Yes, that is the irony: Linus wanted Linux to be the anti-micro kernel OS, and it winds up 20+ years later being what people prefer to layer higher level OS's on.
Re:Circuit: A Minimal Distributed Programmatic OS written in Go
by malgorithms on Friday April 17, 2015 @08:46PM
(#9397934)
Some noteworthy background: this was created by Petar Maymounkov, who is also known for creating the DHT Kademlia. http://en.wikipedia.org/wiki/Kademlia
I too am having a hard time trying to figure out exactly where circuit fits vs. other technology.
It wasn't immediately clear to me if circuit launches the apps, or if it can start new instances if the current ones fail, or if it can grow the cluster if demand is the current utilization is too high, or what.
How does this help me vs. writing a script in (the shell, some other orchestration tool, etc)?
How much of the configuration does it handle? Does it replace etcd?
Those are questions I could ideally answer myself by exploring the documentation links on the main page.
Where / how does it store its own state?
Edit: There is a comparison with Consul on the wiki:
Re:Circuit: A Minimal Distributed Programmatic OS written in Go
by duggan on Friday April 17, 2015 @07:29PM
(#9397762)
It's more directly comparable to https://mesosphere.com/ - so, an abstraction further up the chain than Chef of Puppet.
The general idea being that it creates a virtual operating system across multiple physical or virtual "hosts" and allocates application stacks (like containers, maybe) compute/memory/storage as required. It ideally handles fault tolerance and load balancing gracefully too.
Re:Circuit: A Minimal Distributed Programmatic OS written in Go
by afshin on Saturday April 18, 2015 @08:36AM
(#9399217)
That's an interesting idea, but because Go is garbage collected, it doesn't seem like a language that could be used to write an effective kernel, but I'm out of my depth, so I could be entirely incorrect. Here is the language authors' current thinking on where they want to go with GC:
It seems like a language like Rust with safe memory management and no GC pauses is better suited to writing a kernel. I know the two languages aren't really competing in the same space or for writing the same types of systems, but they are both gaining momentum at about the same time, so the comparison is a little inevitable.
Re:Circuit: A Minimal Distributed Programmatic OS written in Go
by haosdent on Saturday April 18, 2015 @03:32AM
(#9398618)
I really confuse this: "Once a circuit cluster is formed, the circuit system itself cannot fail—only individual hosts can. In contrast, comparable systems (like CoreOS, Consul and Mesosphere) can fail if the hardware hosting the system's own software fails."
When I read the document, start a process in circuit is equal to start a process on a individual host. So how circuit make sure this process which run on a individual host could not fail?
But if the fail mean the whole circuit cluster could not fail,
as I now, CoreOS, Mesos, Kubernetes also could not fail.
Re:Circuit: A Minimal Distributed Programmatic OS written in Go
by alexpw on Saturday April 18, 2015 @10:36AM
(#9399575)
Afaict, the circuit server runs on every host, and is aware of the other nodes, coordinating with peers without a single master. So if one host fails, the other circuits can still function, broadcasting their underlying services.
"Clients dial into [any] circuit server in order to interact with the entire system. All [circuit] servers are equal citizens in every respect and, in particular, any one can be used as a choice for dial-in."
However, the example diagrams I've seen, include services which aren't masterless or even multi-master, so the app/system the circuit cluster supports will surely fail in some way.
Re:Circuit: A Minimal Distributed Programmatic OS written in Go
by al2o3cr on Saturday April 18, 2015 @04:34PM
(#9400907)
"Clients dial into [any] circuit server in order to interact with the entire system. All [circuit] servers are equal citizens in every respect and, in particular, any one can be used as a choice for dial-in."
This sounds like it will cause exciting behavior under a network partition...
On the page they think comparable systems to Circuit are CoreOS, and Consul and Mesosphere.
What I'm trying to say is this: are not all of these "linux installed" with some additional stuff thus making them an operative system (distro is it??
RC4 is WEBSCALE!
Well, and insecure.
https://github.com/gocircuit/circuit
I too am having a hard time trying to figure out exactly where circuit fits vs. other technology.
It wasn't immediately clear to me if circuit launches the apps, or if it can start new instances if the current ones fail, or if it can grow the cluster if demand is the current utilization is too high, or what.
How does this help me vs. writing a script in (the shell, some other orchestration tool, etc)?
How much of the configuration does it handle? Does it replace etcd?
Those are questions I could ideally answer myself by exploring the documentation links on the main page. Where / how does it store its own state?
Edit: There is a comparison with Consul on the wiki:
https://github.com/gocircuit/circuit/wiki/Circuit-vs.-Consul
The general idea being that it creates a virtual operating system across multiple physical or virtual "hosts" and allocates application stacks (like containers, maybe) compute/memory/storage as required. It ideally handles fault tolerance and load balancing gracefully too.
https://docs.google.com/document/d/16Y4IsnNRCN43Mx0NZc5YXZLo...
It seems like a language like Rust with safe memory management and no GC pauses is better suited to writing a kernel. I know the two languages aren't really competing in the same space or for writing the same types of systems, but they are both gaining momentum at about the same time, so the comparison is a little inevitable.
When I read the document, start a process in circuit is equal to start a process on a individual host. So how circuit make sure this process which run on a individual host could not fail?
But if the fail mean the whole circuit cluster could not fail, as I now, CoreOS, Mesos, Kubernetes also could not fail.
"Clients dial into [any] circuit server in order to interact with the entire system. All [circuit] servers are equal citizens in every respect and, in particular, any one can be used as a choice for dial-in."
However, the example diagrams I've seen, include services which aren't masterless or even multi-master, so the app/system the circuit cluster supports will surely fail in some way.
This sounds like it will cause exciting behavior under a network partition...