Skip to content

Instantly share code, notes, and snippets.

@sam-github
Created June 18, 2014 17:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sam-github/d5b405c2c04119c9621f to your computer and use it in GitHub Desktop.
Save sam-github/d5b405c2c04119c9621f to your computer and use it in GitHub Desktop.
distributed p2p config tools
1. sync chat: slack, irc, etc.
2. async: email
3. video: hangouts...
asana...
perch?
mozilla: do they have resources on sucessful patterns of remote work?
darkcoding.nec: graham king, . kisiel
backbone, less
- chubby
google,fault tolerance,whitepaper?
- zookeeper
yahoo's version of chubby
shouldn't run on vms... very heavy
- doozerd
heroku's version of zookeeper
requires client to support pblock protocol, so heavy implementation requirements on all clients.
uses Paxos algorithm... but too many edge cases, hard to debug
heroku appears to have dropped it
- etcd
coreos wrote it, to deal with fault tolerance
uses Raft algorithm, which is apparently easily comprehensible, in contrast to Paxos
golang implementation, as lib, and as go-raft server
... implement Raft for js? maybe useful to us. apparently completely HTTP based, so
easy to integrate into any language
- confd, watches etcd, then writes conf files for (example) postgres, and the restart
the app, so clients don't need to directly support the config protocol
- consul
vagrant folks did Serf, a gossip based protocol. consul built on top, to implement svc discovery
- smart stack
- nerve, 2k
- synapse, ha-proxy
- discover discovery
how to bootstrap discovery? to discover, you need to first know SOMETHING
coreos did discovery.etcd.io... which uses etcd, to find the first point of contact
for an etcd network
- docker?
# patterns
propogate config with ENV vars... every system can read env, some folks do by using ENV to
pass to docker containers... because any kind of app in a container (go, node, etc.) can
read env
"Ambassador Pattern": but, means you have to restart app on config change...
this can be annoying, so implement a pattern when you config the docker-app to
talk to an "ambassador" (a tcp proxy), and the ambassadors are restarted by
confd/etcd. so, you don't restart the docker app, instead you restart the
proxies.
####
etcd vs redis
etc is a bit more targeted in terms of features and API to config propogation...
redis is a bit pub/sub dependent as a source of this....
so the purpose built ones are more powerful, in that they do quorum over a set of nodes, and are SYMETRICAL,
they don't have a master
# other
riak
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment