App如何实现就近接入?如何改善调度不准问题?

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 购买阿里云ECS服务器实例规格型号、功能、型号级别介绍及选择


一、常规DNS调度策略原理


以CDN系统为例(其他业务系统大多采用类似的策略),来说明一下多地域部署服务如何实现用户访问请求调度的。



Step 1:客户端(假设IP地址为IP1)向Local DNS(假设IP地址为IP2)发出域名解析请求(假设请求的域名为www.taobao.com )

Step 2:Local DNS代理客户端向权威服务器发起域名解析请求

Step 3:权威服务器根据域名( www.taobao.com )和IP2(对应的地域和ISP)进行调度并返回对应的解析结果。

Step 4: 客户端根据调度返回的IP发起业务访问请求。

二、调度精确性问题


2.1 问题描述


从上面的调度过程可以看出,业务系统会根据客户端的local dns IP来判断客户所处地域和运营商,并根据该地域和运营商来调度到就近的服务节点。



可以看出,当客户的Local DNS与客户的地域和运营商不匹配时,此时按照Local DNS来调度就会出现调度不精确的问题。



下面看几个来自客户的反馈(探测结果来自AliCDN昆仑探测工具):


596f0c463d1f6e2c3f3b06e421683442d7441636 6a63fbf7d20dd0447f21a905a126aa1eaaabad6d



探测的客户端IP和Local DNS IP以及对应的地域,运营商如下所示:

客户端IP

220.249.84.**

220.249.84.**

客户端归属 武汉联通 武汉联通
Local DNS IP

183.61.13.**

222.73.134.**

Local DNS 归属 珠海电信 上海电信




很容易看出,Local DNS地域和运营商与客户端都不匹配,此时按照Local DNS IP调度会对用户体验造成非常大的影响(国内跨运营商的访问延迟和带宽都存在非常大的问题,相信大家有深刻体验)。



2.2 问题影响面


根据我们的经验,影响的客户端占比在3%-7%之间。

2.3 原因


无线场景下主要由于以下两个方面因素导致:

(1)国内三大运营商Local DNS布点不足且不均匀,大量流量集中在2000个以内的Local DNS上,大的Local DNS对应的流量超过5Gb

(2)很多手机(尤其是山寨机)Local DNS配置不准确



如果扩展到全网(含有线访问请求),还需要考虑一个因素:

(3)公共DNS(如google 8.8.8.8,阿里的223.5.5.5,223.6.6.6)导致调度系统无法识别Local DNS的具体位置。

三、解决办法


业界当前常见的解决思路都是通过获取客户端的IP来精确定位客户端地域和运营商,实现上,有三种方式:

(1)HTTPDNS

客户端通过HTTP请求向httpdns服务器发出域名解析请求,此时httpdns服务器可以拿到客户端的精确IP,并基于客户端IP进行调度。

(2)edns client subnet

通过dns包中加入客户端IP信息,使得DNS调度系统可以拿到客户端IP并进行调度。

(3)http 302跳转

当调度系统给出的调度结果不准确时,业务服务器仍然可以根据客户端IP来判断调度是否合理,并且在必要时通过302跳转来实现重定向进而实现精确调度。



三种方式的优缺点对比如下:


客户端修改 Local DNS修改 权威DNS修改 系统开销 使用范围
HTTPDNS
最广
edns client subnet 需支持edns client subnet 需支持edns client subnet
中等
http 302 有(需支持302跳转)
最差




HTTPDNS综合来看是最优的解决方案,当前阿里云已经推出了 HTTPDNS商业化产品。

目录
相关文章
|
监控 安全 数据挖掘
短视频app开发,如何实现高质量的支付系统架构?
短视频app开发,如何实现高质量的支付系统架构?
短视频app开发,如何实现优质内容的优先展示?
短视频app开发,如何实现优质内容的优先展示?
|
算法 UED
一对一视频app开发,如何实现系统的全局优化
一对一视频app开发进行优化的前提,是了解整个软件的体系结构,大到一整个功能模块,小到接口功能,技术人员都有充分的了解。只有在这个基础上,才能更好的进行系统数据结构和算法优化。
|
开发工具
如何实现app支付验签
由于同步通知和异步通知都可以作为支付完成的凭证,且异步通知支付宝一定会确保发送给商户服务端。为了简化集成流程,商户可以将同步结果仅仅作为一个支付结束的通知(忽略执行校验),实际支付是否成功,完全依赖服务端异步通知。
1146 12
|
Android开发
直播APP源码是如何实现音视频同步的
直播APP源码音视频同步主要用于在音视频流的播放过程中,让同一时刻录制的声音和图像在播放的时候尽可能的在同一个时间输出。
短视频APP源码中系统评论功能是如何实现的
短视频系统中评论功能的分量在短视频功能里可谓是举足轻重,下面简单介绍下,短视频系统中的评论功能的实现方式:评论分为对视频的评论和对评论的回复两部分:对于评论列表大家再熟悉不过了,就是一个tableview罢了,相信刚入门的技术也可以实现。
1001 0
|
网络协议 视频直播
直播app软件开发中的小游戏和直播如何实现兼顾
直播app软件的更新优化速度非常快,而互动小游戏也是现在主流直播app中的常见功能。当然单独拿出某一个小游戏,我们都可以将它看做一个个体,如果与视频直播结合,就可以为直播软件增光添彩了。那么,直播app软件开发时,怎样兼顾直播和游戏的实现呢?这里主要借助于socket通信将二者串联起来。
1573 0
|
API Android开发 开发工具
|
Web App开发 移动开发 中间件
Hybrid App是如何实现网页语言与程序语言的混合?谁占主体?
【编者按】本文作者@徐珂铭,一位看好Html5的移动互联网的从业人士。喜爱玩技术,会点JAVA、HTML及CSS,有自己的想法及姑且能表达想法的文字,因此有了自己的文章。 基于HTML5的Web App在移动端接受实用性检验后,开发者从热情转为观望。
1350 0
x3d
|
Web App开发
从钉钉微应用定制化导航栏看如何实现Hybrid App开发框架
钉钉是阿里的一款企业应用APP,里面提供了混合微应用的SDK,这其实最好的一种APP架构模式。微信公众号浏览器JSSDK也提供了类似功能特性,在在交互性上没有钉钉深入。 http://ddtalk.github.io/blog/2015/12/29/navbar/ 由JS定义应用“窗口”的交互界面和菜单,实现最大化灵活度。
x3d
1458 0

热门文章

最新文章

下一篇
DataWorks