Disclaimer: I work on Amazon Route 53 and Elastic Load Balancer.<p>From the article ... "Unfortunately there are a large number of (misbehaving) DNS servers out there that don’t properly obey TTLs on records and will still serve up stale records for an indefinite amount of time."<p>I would push back on how large this number is in general, whenever we experiment with DNS weights, we see about 98% of browser clients honouring the change and 99% within 5 minutes. But with mobile networks and java clients, things can be different. Mobile networks commonly have very few resolvers and so few answers in the mix to distribute load, and some versions of java cache answers forever by default.<p>Here's the hack we use to help with these situations! when you control the client it will help, it's something we've worked with some mobile app authors on. With Route 53 (and hopefully Dyn too, I'm not sure), you can configure a wildcard name to be a series of weighted entries, backed by health checks. So instead of;<p><pre><code> ping.chartbeat.net weight=1 answer=192.0.2.1 healthcheck=111
ping.chartbeat.net weight=1 answer=192.0.2.2 healthcheck=222
</code></pre>
it can be configured as;<p><pre><code> *.ping.chartbeat.net weight=1 answer=192.0.2.1 healthcheck=111
*.ping.chartbeat.net weight=1 answer=192.0.2.2 healthcheck=222
</code></pre>
so pretty much the same, but then you have the client look up;<p><pre><code> [ some random nonce / guid ].ping.chartbeat.net
</code></pre>
and voilà - you have busted any intermediate cache, and load is also spread more evenly (there are usually many more clients than DNS resolvers).<p>Self-promotion: If you do choose to use ELB and Route 53, we also support wildcard ALIASes to ELBs, and the queries are handled free of charge.