Circuit: A Minimal Distributed Programmatic OS written in Go(gocircuit.github.io)
gocircuit.github.io
Circuit: A Minimal Distributed Programmatic OS written in Go
http://gocircuit.github.io/circuit/
7 comments
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.
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.
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).
What? Microkernels have a specific definition too, and Linux most certainly is not one.
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.
Well, he never intended for it not to be a kernel, which is what higher level operating systems are built on.
[deleted]
NEB (No Expert But...) Isn't Linux just the kernel?
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??
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??
Some noteworthy background: this was created by Petar Maymounkov, who is also known for creating the DHT Kademlia. http://en.wikipedia.org/wiki/Kademlia
[deleted]
From the security page: "A HMAC-based symmetric authentication, followed by an asymmetric RC4 stream cipher is supported."
RC4 is WEBSCALE!
Well, and insecure.
RC4 is WEBSCALE!
Well, and insecure.
Unfortunately, implementing your own crypto seems to be a per-requisite for working in the container networking space
Would someone give an overview of what this system does? I'm thinking this is like chef or puppet and not something like docker correct?
The README on github provides a little more information:
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
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
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.
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.
I was very excited when I read the headline. I thought someone wrote an OS kernel in Go. Which is something I would like to see.
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:
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.
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.
I had this bookmarked https://code.google.com/p/gofy. But it's pre Go 1.0. I wish someone would port this to recent a version.
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.
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.
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.
"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.
"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...
This sounds like it will cause exciting behavior under a network partition...
[deleted]