本文主要聊聊302调度,咱们不妨先思考一下,
传统DNS调度有哪些不足呢?
1.调度精准度。传统的DNS调度中,用户是如何获取CDN接入节点加速呢?回想上篇文章,是不是依赖于LDNS出口IP。CDN是什么呢?当然是加速啊,理想条件下,用户位置与CDN节点之间距离越近,理论上加速效果越好,所以基于用户IP地址来获取CDN节点,这样调度方式会更合理,进而后续EDNS对此进行优化。
2.调度灵活性。试想一种场景,某个地区CDN机房带宽满负载,如果不能及时扩容,影响用户访问。退一步,CDN冗余足够,但是现网还有一个TTL时间,还是影响突增类业务,再遇到超长TTL DNS,简直就是灾难。这种原因导致就是用户请求得到节点A,只能发请求到A节点,没有任何讨价还价的余地。
3.调度大局观。试想一下,DNS获取的广东电信CDN接入节点IP,DNS仅仅这个地域节点IP,对全局CDN接入节点情况毫不知情,限制调度想想空间。
既然DNS调度有这么不足,为啥还会用的。基于目前情况,就是性价比高,简单快捷。
为了弥补传统DNS这些不足,302调度就横空出世了,那咱们先讲讲
啥是302调度?
简单来讲,用户不在苛刻要求只发一次请求拿到响应,接受多次请求。那问题来了,怎么让客户发多次请求呢,HTTP 302状态码就派上用场了。更重要的有了302,调度的掌控权会牢牢掌握在调度服务器手里,而不在公网DNS手里,这样让调度有个更大想象空间。当然公网劫持另当别论,后续咱们在讨论。
这里可能还有困惑,不要急,看完这张图,就明白是咋回事了。
从上图中发现,与传统DNS调度几点不同:
1.用户DNS解析域名时候,获得IP地址并不是CDN接入节点,而是CDN服务厂家调度机IP地址
2.用户向调度机发送请求时,会带有准确的用户端ip地址,另外由于调度机是厂家自己服务,会有足够视眼去优化调度,通过各种策略(机器负载,文件热度以及带宽冗余等),返回给用户当前最合适节点IP地址。
3.用户获得302响应,重新向CDN接入节点发起请求,获取响应
虽然302调度有自己优势,但是也存在不足,所以只有合适的,没有最好的。
1.响应时间。至少会增加一次302跳转耗时
2.业务风险。如果调度主备集群出现异常,对全部客户业务是毁灭性的
3.机器成本。调度集群成本,以及各种收集监控数据,来综合判断当前调度策略。
4.兼容性。部分终端不支持302跳转。