Comments (4)
@glycerine Ah. Interesting. But I think jespen will try to kill zk process. We need to modify it to kill both etcd and zk proxy. right?
from zetcd.
I haven't played with jepsen myself, so I'm not really sure. It would make sense though. There is certainly network partitioning simulated.
But it does point out an assumption I was making that seems worth discussing.
I assumed that zetcd just loaded etcd as a library; thus my mistake when first testing. It's pretty inconvenient to run 2 process when you only need one anyway. What's the thinking behind doing a separate proxy process? Seems simpler to have zetcd embed etcd, or provide a flag that makes etcd present a zookeeper port; either way only one type of process need run in triplicate.
from zetcd.
@glycerine there are several reasons for having a separate process:
-
load balancing -- tying zetcd with the etcd process means there's a forced 1:1 relationship between etcd and zetcd instances. This precludes scaling up the number of zetcd instances to multiplex more clients on an etcd backend; it forces more core etcd instances which isn't the way to scale etcd. The proxy is no longer stateless.
-
multi-tenancy -- decoupling the zetcd proxy from etcd makes it possible to cleanly support multiple zk instances at once on a single backend or spin-up/teardown instances at will without disrupting the core etcd cluster. (there's no custom prefixing in zetcd to do this yet but it won't be terribly difficult to add; it'll probably be supported through the planned etcd naming/prefixing proxy, however).
-
fault isolation -- If the etcd cluster is serving both zk and etcd API's, then a bug in the zetcd server (resource leaks, crashes, etc) will affect the backend too. It's more reliable (albeit, more expensive) to separate components than bundle them into a single process. If a zetcd proxy crashes, it's less disruptive to the cluster to spin up a fresh one than restarting a crashed etcd member.
Simpler is not necessarily better in this case. There may be support for an embedded version in the future (this will depend on a pass-through client; there is an open issue on the etcd tracker for that), but for the time being it's not a priority for the reasons outlined above.
Having written an entire dissertation on model checking (you may have noticed zetcd supports a rudimentary form of cross-checking, which is a very powerful validation technique), I am very critical of jepsen's exaggerated claims and technology in general. If zetcd is going to have simulated network partition tests, it'll probably be done through the etcd functional-tester instead of going down the clojure rabbit hole.
from zetcd.
The fault isolation, e.g. due to the difference in maturity of the two projects, makes sense to me.
I think you capture the spirit of the idea (leverage existing zookeeper tests/clients) in #14, so I'll close this out.
from zetcd.
Related Issues (20)
- [Feature] sd_notify for systemd notification
- [Question/Feature] Etcd base key for zk schema
- 4 letter word commands leaking memory
- zookeeper exception, KeeperErrorCode = apiError
- GetChildren doesn't get children HOT 1
- Why separate keys for each metadata parameter?
- zetcd ha
- Kafka Unable to connect to zookeeper server
- How to build the project source code after change it?
- when zetcd should release v1.0.0? and is it have any tool to migrate data from zk to etcd?
- Need a new release to get rid of known vulnerabilities in the latest image HOT 1
- Performance benchmarking
- go get error:gcc_darwin_amd64.c:62:15: error: unknown token in expression HOT 1
- Proposal to mark etcd-io/zetc as public archive HOT 7
- etcd3 STM client does not Support Range fetch over keys? HOT 1
- zetcd performance HOT 3
- New version/future plans? HOT 2
- Memory/leak issue HOT 9
- ZK MultiOp provided by zetcd not working with Kafka 2.1.0 HOT 1
- Mtime and Ctime off by a factor of 1000 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from zetcd.