4 ms·
I agree. At FoundationDB, we're writing a coordination tool (working name "beastmaster") that provides service discovery, locking, leader election, etc on top
by voidmain 13y ago
I agree. At FoundationDB, we're writing a coordination tool (working name "beastmaster") that provides service discovery, locking, leader election, etc on top of our transactional key/value store. It is higher level than these tools; our idea is to try to make it useful from a command line or DNS rather than have to be baked into every piece of software that needs service discovery.
beast service --lock name=mailserver.foundationdb.com --run mailserver.sh &
beast service name=webserver.foundationdb.com --run webserver.sh &
ping mailserver.foundationdb.com
wget http://webserver.foundationdb.com/
- enigmo 13y agoThat's how our Chubby clone works... it uses the Route53 API to publish service endpoints and leaders.
- fintler 13y agoI'm also in the club of people building one of these things (mine is on top of LevelDB and written in ANSI C with a lock-free design). My most recent blog post is on getting the thing to bootstrap: http://www.bringhurst.org/2013/09/09/consensus-quorum-bootstrapping-101.html http://www.bringhurst.org/2013/09/09/consensus-quorum-bootst...
- philips 13y agoThat is cool! How are you doing locking for transactions right now internally? You can use etcd from the command line with etcdctl or grab environment variables for your process using etcdenv. I would love to see someone back a DNS server with etcd too. etcdctl: https://github.com/coreos/etcdctl https://github.com/coreos/etcdctl etcdenv: https://github.com/mattn/etcdenv https://github.com/mattn/etcdenv
- voidmain 13y agoFoundationDB (https://foundationdb.com https://foundationdb.com) provides optimistic transactions-- the client does reads from a consistent snapshot, and then tells the database what it wants to write and what serializable reads it did, and the database figures out whether the transaction can safely commit or whether it needs to be retried. Beastmaster is just a client that sits on top of FoundationDB's transactions and fault tolerance, and adds coordination-specific things like a global clock, fair locks with timeouts, and a data model for service discovery. And then provides useful command line tools and a simple DNS and REST server. We should have it on github soon.