假设 LZ 的网站所有类型资源都在一个域名下,比如 V2EX ,那么只有一个域名,需要考虑就是 Local DNS 到权威的请求了, 100W 用户这个规模,我们可以拍脑袋假设有 5000 个 Local DNS 底下的用户会使用这个域名。假设所有的 Local DNS 都遵循 TTL 10 ,那么就是 5000 / 10 = 500 QPS 。
上述情况没有考虑 edns-client-subnet ,如果 LZ 的权威服务器做了智能 DNS ,支持 edns-client-subnet ,那么情况要复杂很多,以目前国内 Local DNS 的 EDNS 覆盖率来看(拍脑袋),假设有 1%( 50 个) 的 Local DNS 支持这个新特性,且在每个 Local DNS 底下有不同的 100 个 C 段的客户端,且 LZ 的权威服务器是按照 C 段做智能 DNS ,那么这种情况的 QPS 是 (50 * 100) / 10 = 500 QPS 。
另外, LZ 需要严重考虑的一点是权威 DNS 被 DDoS 攻击的情况,以我之前在 DNS 安全方面的经验,站如果大一点,权威 DNS 被打的概率就特别高,如果是自己开发,没有相关的防护措施,或者性能容量不能横向扩展,那基本上是死路一条。应用层 DDoS 来说,一些域名的随机查询, QPS 会上万。如果是 UDP 大包的流量型攻击,如果权威 DNS 托管的机房不能承受 10Gbps 的攻击流量,那被黑客玩死就是淘宝几十块钱一波的事情。
mRNA
2016 年 2 月 21 日
TTL 10 秒 只是客户端上的生存时间,而解析的 IP 记录会在临近的 DNS 服务器上保存较长一段时间以便于分担 DNS 查询任务。 so ,如果只考虑解析一个域名的话,即使有 100 万用户在同一段时间打开主页,最高权限的 DNS 上的查询次数不会超出百万(应该会低很多很多~),大多数查询任务都被下一级的 DNS 分担了。