Karthik Sekar writes explainers on distributed systems topics like CAP theorem, MapReduce, and evented IO, and shares small browser hacks.
HN mostly links his Chrome plugin that fixes the 'Unknown or expired link' error on HN, which one commenter says works well.
> What's the constraint that prevents you from having your dynos register with the loadbalancer cluster and then having the latter perform leastconn balancing per application?
This is how it works. Dynos register their presence into a dyno manager which publishes the results into a feed, and then all the routing nodes subscribe to that feed.
But dyno presence is not the rapidly-changing data which is subject to CAP constraints; it's dyno activity, which changes every few milliseconds (e.g. whenever a request begins or ends). Any implementation that tracks that data will be subject to CAP, and this is where you make your choice on tradeoffs.
> why would that mean "lower availability" or "higher latency"?
I'll direct you back to the same resources we've referenced before:
http://aphyr.com/posts/278-timelike-2-everything-fails-all-the-time
http://ksat.me/a-plain-english-introduction-to-cap-theorem/
> Did you look into zookeeper?
This is the best question ever. Not only did we look into it, we actually invested several man-years of engineering into building our own Zookeeper-like datastore:
https://github.com/ha/doozerd
Zookeeper and Doozerd make almost the opposite trade-off as what's needed in the router: they are both really slow, in exchange for high availability and perfect consistency. Useful for many things but not tracking fast-changing data like web requests.
Chrome Plugin: http://ksat.me/chrome-plugin-to-fix-hn-unknown-or-expired-link/
Works like a dream.