100 万在线用户,浏览网页,播放在线视频之类的操作, 权威 dns 服务器大概会有多少 qps?域名 ttl 为 10 秒

2016-02-21 16:18:28 +08:00
 aliipay
6482 次点击
所在节点    MySQL
47 条回复
leeyiw
2016-02-21 21:37:42 +08:00
感觉 LS 各位都没有认真的回答 LZ 的问题。我来估算一下:

假设 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 。

综上,预估 4950 / 10 + (50 * 100) / 10 = 995 QPS 。多个域名另算。
leeyiw
2016-02-21 21:39:57 +08:00
另外, LZ 需要严重考虑的一点是权威 DNS 被 DDoS 攻击的情况,以我之前在 DNS 安全方面的经验,站如果大一点,权威 DNS 被打的概率就特别高,如果是自己开发,没有相关的防护措施,或者性能容量不能横向扩展,那基本上是死路一条。应用层 DDoS 来说,一些域名的随机查询, QPS 会上万。如果是 UDP 大包的流量型攻击,如果权威 DNS 托管的机房不能承受 10Gbps 的攻击流量,那被黑客玩死就是淘宝几十块钱一波的事情。
mRNA
2016-02-21 21:40:15 +08:00
TTL 10 秒 只是客户端上的生存时间,而解析的 IP 记录会在临近的 DNS 服务器上保存较长一段时间以便于分担 DNS 查询任务。 so ,如果只考虑解析一个域名的话,即使有 100 万用户在同一段时间打开主页,最高权限的 DNS 上的查询次数不会超出百万(应该会低很多很多~),大多数查询任务都被下一级的 DNS 分担了。
jeeve
2016-02-21 21:41:37 +08:00
同时在线 100W ?这个有点虚吧?
leeyiw
2016-02-21 21:42:19 +08:00
做性能预估需要考虑的场景特别多,建议 LZ 还是把域名放到 DNSPod 上面去用几个月,然后根据报表再进行预估靠谱很多。话说很感兴趣 LZ 是哪家的,自研权威 DNS ,还有 Anycast ,厉害。
Alchemistxxd
2016-02-21 21:43:39 +08:00
斗鱼 TV
leeyiw
2016-02-21 21:47:47 +08:00
@moult 如果这个站各个页面有爬虫的话,你说的这种方法可能会有比较大的偏差。
aliipay
2016-02-21 21:52:33 +08:00
@leeyiw 非常感谢。目前手上能直接用的机房能抗万兆,求淘宝只要几十块钱的链接。

TTL 设 10 秒是为了流量调度方便。视频有自家的也有第三方的,所以域名不止一个,现在大概有近百个。
aliipay
2016-02-21 21:54:04 +08:00
@leeyiw 还没用 anycast ,这个难度有点大,现在只是有个想法
leeyiw
2016-02-21 21:57:09 +08:00
@aliipay 万兆真的只要几十块钱就能打挂。 10Gbps 这个流量,机房到了就给你拔线了。不然其他客户要投诉他们。 DNS 的带宽容量起码要是 40Gbps ,因为你 Glue Record 的 TTL 肯定会比较长,如果 DNS 被打挂了就算你有备份的机房 /服务器切换过去都要承受好几分钟的流量损失。我是个外行,据我不完全了解,现在 DDoS 攻击遭殃的一般都是 10Gbps 带宽的站,因为这样的站最多。

TTL 设短了方便调度 CDN 节点,但是 DNS 服务器本身被攻击的时候损失就很大。设长了 CDN 节点被攻击的损失大。按照一般的云 CDN 厂商的配置,一般来说 30s 或者 60s 是比较推荐的值。
em70
2016-02-21 21:57:28 +08:00
绝大多数死掉的互联网项目都是因为在只有 100 个用户的时候考虑一亿用户的事情倒闭的
leeyiw
2016-02-21 21:59:36 +08:00
@aliipay 我觉得如果不是特殊的需求的话,也没必要自研 DNS , AnyCast 和 BGP 机房太昂贵了, DNSPod 的企业版 API 应该能满足调度需求,遇到攻击了他们也有防护。实在要自研的话,我记得 360 出过一个 DNS 云甲的产品,可以作为 DNS 防火墙来用一用。
phoenixlzx
2016-02-21 22:07:40 +08:00
(´・ω・`)说起来, Anycast 本身也可以用来抗攻击的( cloudflare 啦 ovh 啦 online 啦 都是用 Anycast 分散流量然后硬防搞定

只是看楼主能不能承担的起在机房里部署硬防、硬件路由器然后广播自己的 AS 了...(最后一个不贵但是好麻烦啊啊啊啊
leeyiw
2016-02-21 22:10:43 +08:00
@phoenixlzx Anycast 最大的价值不就是抗攻击吗? BGP 广播真的不贵吗?我怎么听人说死贵死贵的??没玩过,求介绍呀。
lhbc
2016-02-21 22:14:59 +08:00
把 NS 托管给第三方就行了
你这点请求对他们来讲只是九牛一毛,免费用都没问题
可以付费增加多线路、缩短 TTL 、更多 A 记录等功能
DNSPod 好像最低的 TTL 只能 300 还是多少

如果有攻击,花钱就是了,总之肯定比你自己建省事省钱省心
phoenixlzx
2016-02-21 22:23:03 +08:00
@leeyiw Anycast 最大的价值在于路由优化,让客户端自动通过最短的路由访问到服务器

BGP 广播首先需要你自己的 ASN ,可以去申请一个... 略麻烦的感觉。国外都比较方便,和朋友玩过 Anycast ,基本都是不收费或者收一点 setup fee

国内... 貌似广播 IP 还得跟 CNNIC 申请...?反正先别说钱,烦都烦得要死
leeyiw
2016-02-21 22:25:26 +08:00
@phoenixlzx 我说的就是国内,据说国内特别贵呢。。。据说这事主要是运营商不想推动,因为既得利益在那里。
mytsing520
2016-02-22 00:55:42 +08:00
@leeyiw 有价格表。
根据 CNNIC 官网上的相关规定, CNNIC 根据用户申请的 IP 地址数量来确定用户等级。 IPv4 共划分为 20 个等级,数值越大等级越高。最小的一级用户, IP 地址数量小于等于 /24 的每年 7000 元,最大的 20 级用户大于 /8 小于 /7 的每年 54 万元。 AS 号码每个每年 1 万元。然后,用户需要提交互联协议,至少要和国内两个 AS 号产生互联。互联的费用由用户与互联接入商自行协商, CNNIC 不管这块。
phoenixlzx
2016-02-22 00:57:19 +08:00
坑... ARIN 一个 /22 每年 500 美元...
mytsing520
2016-02-22 00:57:58 +08:00
@aliipay 从楼主的情况来看,直接托管机房,然后丢个国内三大 CDN 厂商中的一家进行视频分发。至于 DNS ,如果非要自建的话,可以考虑建设智能解析,然后 DNS 服务器托管在三大运营商即可, DDOS 防护量这块可以和机房自行协商。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/258014

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX