就用户角度来说,我越来越不待见 CDN 了

2016-04-22 12:41:02 +08:00
 aa45942

RT

因为用的自定义 DNS ,每次访问国内某些网站的时候速度感人,逼着我去超级 ping 找对我来说最快的节点然后改 hosts ,然而这些节点 ip 指不定什么时候就变了.

特别的几次,网站打开发现排版不正确, F12 后发现某些资源所在 CDN 503...一怒之下切全局梯子 F5 ,正常鸟

8818 次点击
所在节点    CDN
80 条回复
aa45942
2016-04-22 13:34:26 +08:00
@AstroProfundis 这些东西搜索一下就有,没什么理不理解的,关键是为什么要这么分配
skydiver
2016-04-22 13:34:28 +08:00
所以很多 CDN 都改成 anycast 了,未来的趋势吧
oott123
2016-04-22 13:34:47 +08:00
1. 尽量用本地运营商提供的 DNS
2. 如果实在不想用,可以自己本地搭 DNS ,递归到运营商,并且处理一些不想要的结果
3. 非要用公共 DNS 的,请至少找个支持 edns-client-subnet 的
nuomi
2016-04-22 13:36:50 +08:00
Mark
aa45942
2016-04-22 13:37:13 +08:00
@pixstone 不是, WWW.exmaple.com -CNAME-> xxx.cdn.comxxx.cdn.com 根据 IP 重定向到 xxx.node.cdn.com ,只做一次重定向
XiaoxiaoPu
2016-04-22 13:37:53 +08:00
@aa45942 按你的想法,每次用户访问一个地址,都要先连到一个服务器上,然后再 302 到用户最近的服务器,每个请求都加个 302 ,而且第一次连接的服务器还不能保证离用户很近,这是加速?减速好多吧。
pixstone
2016-04-22 13:39:56 +08:00
@aa45942 不能一次的, HTTP 是无状态的,一次页面请求 十几个请求,都是要重定向一次,简直灾难,请求都量之间 X2
Shura
2016-04-22 13:40:46 +08:00
你说的那个是 anycast ,我知道的国外的就 cf 在用吧,国内 cdn 没人在用。
c0878
2016-04-22 13:42:08 +08:00
明显是 DNS 没处理好 现在几家公共 DNS 都在逐步支持 ends-client-subnet 如果你用的 DNS 和 CDN 不支持那返回错误节点也是正常的 技术总是要发展的嘛
在不支持 ends-client-subnet 的情况下 CDN 只能通过 DNS 请求来判断用户所在地区 你以为 CDN 厂商都是吃干饭的吗 如果有更好的解决方法早就争相用起来了 等不到你在这发帖抱怨
czz811
2016-04-22 13:42:34 +08:00
访问的服务器能获取你的 IP 倒是不假,访问的服务器的权威 DNS 是不可能获取到你的 IP 的,除非你在本地电脑架设 DNS,使用本地 DNS ,这就相当于直接获取到你的 IP 了。
xujif
2016-04-22 13:42:54 +08:00
@aa45942 这是 dns 协议的缺陷,后来搞了个 @oott123 说的 edns 才算解决这个问题,但是现在还没流行起来。不过对于普通用户是不会随便乱改 dns 的,所以反而目前没有问题。
jasontse
2016-04-22 13:44:54 +08:00
@aa45942 就一个问题,你如何保障最初访问的 xxx.cdn.com 对所有人来说都是快的。
aa45942
2016-04-22 13:45:43 +08:00
@XiaoxiaoPu 有缓存的,只重定向一次。但是这个缓存现在是转嫁到了公共 DNS 上,以节约成本。我就不信 CDN 商自建个 DNS 服务器集群专门处理 IP 解析有这么难,但是这样一来所有访问 cdn 的用户都会先过 DNS 服务器解析,增加了很大成本和维护负担
XiaoxiaoPu
2016-04-22 13:46:58 +08:00
@c0878 edns-client-subnet 也不算完美,公共 DNS 支持 edns-client-subnet 的话,意味着不同的 subnet 要有不同的缓存。一方面 DNS 服务器的开销 (CPU, 内存,网络) 大了很多,另一方面 subnet 取大了, DNS 调度效果不好, subnet 取小了,如果某个 subnet 内的用户比较少,请求的域名少或者不平均,缓存就会频繁过期,影响查询时间
czz811
2016-04-22 13:47:10 +08:00
你直接使用正确的 DNS 不就得了
XiaoxiaoPu
2016-04-22 13:51:29 +08:00
@aa45942 CDN 肯定是有 DNS 智能解析的,你的问题是,用户查询域名是向他配置的 DNS 查询,如果这个 DNS 服务器不支持 edns-client-subnet ,那么 CDN 的 DNS 服务器就没法知道用户的 IP ,只能知道用户所使用的 DNS 服务器的 IP ,如果你不使用 ISP 的 DNS ,调度自然不准了
pixstone
2016-04-22 13:53:09 +08:00
@aa45942 自己维护 DNS 很痛苦的,有些 CDN ,表面说 抗 DDOS 很强,但很多时候是自己的 DNS 服务器先被 D 挂了。
aa45942
2016-04-22 13:54:35 +08:00
@pixstone xxx.cdn.com 根据来访 IP 来分配服务器,这个根本不难,也不会每个请求都重定向,但是根服务器负担会很大

@czz811 现在的 CDN 基本都要求域名解析绑到他们自家服务器上或者直接把解析服务器设置为他们自家 DNS ,肯定能获取访问者的 IP


@jasontse 这个不需要,到 xxx.cdn.com 的时候还没解析这个域名,这个域名的解析可以在 CDN 自家 DNS 服务器上完成,而解析成什么域名可以由我的 IP 决定,也就是类似于再完成一次 xxx.cdn.com 的 CNAME
XiaoxiaoPu
2016-04-22 13:57:20 +08:00
@aa45942 看这个图 http://img1.51cto.com/attachment/201203/175333937.jpg ,中间的 DNS 服务器是 ISP DNS 或者公共 DNS ,右边的 DNS 服务器是 CDN 的 DNS ,所以 CDN 的 DNS 不知道用户的 IP
AstroProfundis
2016-04-22 13:57:46 +08:00
[quote]这些东西搜索一下就有,没什么理不理解的,关键是为什么要这么分配[/quote]
我没说我不知道 CDN 是什么鬼,我是觉得你的理解和这楼下面大部分人都不一样,说来说去不在一个频道上

按你说的先到某个中转域名再 302 到 CDN 节点,那这个中转域名要怎么部署?
-> 为了保证访问速度是不是自己也要上 CDN?
-> 那它是用 302 负载均衡呢还是用 DNS 负载均衡呢?
-> 用 302 的话是先有鸡还是先有蛋呢?
-> 用 DNS 的话干嘛还要加上这一层呢?

另外你真的觉得(从服务商角度看) 100 万次 HTTP 302 响应比 100 万次 A 记录响应更快?

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

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

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

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

© 2021 V2EX