HTTPDNS成为移动互联网的标配–原因与原理解析(转)
DNS,作用就是将域名解析成IP。一个DNS查询,先从本地缓存查找,如果没有或者已经过期,就从DNS服务器查询,如果客户端没有主动设置DNS服务器,一般是从服务商DNS服务器上查找。这就出现了不可控。
DNS劫持
一些小服务商以及小地方的服务商非常喜欢干这个事情。根据腾讯给出的数据,DNS劫持率7%,恶意劫持率2%。网速给的劫持率是10-15%。
- 把你的域名解析到竞争对手那里,然后哭死都不知道,为什么流量下降了。
- 在你的代码当中,插入广告或者追踪代码。这就是为什么在淘宝或者百度搜索一下东西,很快就有人联系你。
- 下载APK文件的时候,替换你的文件,下载一个其他应用或者山寨应用。
- 打开一个页面,先跳转到广告联盟,然后跳转到这个页面。无缘无故多花广告钱,以及对运营的误导
智能DNS策略失效
智能DNS,就是为了调度用户访问策略,但是这些因素会导致智能DNS策略失效。
- 小运营商,没有DNS服务器,直接调用别的服务商,导致服务商识别错误,直接跨网传输,速度大大下降。
- 服务商多长NAT,实际IP,获得不了,结果没有就近访问。
- 一些运营商将IP设置到开卡地,即使漫游到其他地方,结果也是没有就近访问。
Http DNS 原理
客户端请求一个接口,例如http://154.58.*.*/dns?domain=www.woniubi.cn&client=xiaomi&screen=1024*960&gps=137,35&…等一些参数。服务器根据参数,给出最优的ip或者IP列表。APP就通过IP访问,不使用域名。
HTTP DNS 负载均衡
返回IP列表,客户端可以依靠策略,进行负载均衡。
- 客户端随机选取IP
- 客户端轮询使用IP
HTTP DNS缓存与更新
可以使用HTTP header进行方式进行缓存,参考这篇文章《http头部如何对缓存的控制》。也可以客户端自己设置过期时间,过期去服务端端拉取。
HTTP DNS不可用
两种解决方式
- 继续使用缓存
- 使用最初的DNS解析
IP不可用
HTTP DNS给的IP地址,发现不可用。
- 重试一定的次数,不成功换下一个IP。
- 下一个IP也不可用,继续换下一个。
但是这样会造成下面一个问题。
雪崩
部分服务器不可用的时候,结果压力都转到其他可用的服务器上面,导致最后所有的服务器都不可用。
- 服务不可用的时候,随机加延时,分散压力。
- 重试一定次数的时候,就不继续重试,宁愿部分不可用,不能让所有的人不可用。
网站是否可用
浏览器都是通过域名访问,当然一些用户不可感知的服务,可以使用IP访问。
http://www.woniubi.cn/http_dns/
HTTPDNS成为移动互联网的标配–原因与原理解析(转)的更多相关文章
- 连接慢的主要原因是DNS解析导致
连接慢的主要原因是DNS解析导致解决方法: 1.在ssh服务端上更改/etc/ssh/sshd_config文件中的配置为如下内容:UseDNS no# GSSAPI optionsGSSAPIAut ...
- Python-全局解释器锁GIL原理和多线程产生原因与原理-多线程通信机制
GIL 全局解释器锁,这个锁是个粗粒度的锁,解释器层面上的锁,为了保证线程安全,同一时刻只允许一个线程执行,但这个锁并不能保存线程安全,因为GIL会释放掉的并且切换到另外一个线程上,不会完全占用,依据 ...
- 从HBase底层原理解析HBASE列族不能设计太多的原因?
在之前的文章<深入探讨HBASE>中,笔者详细介绍了: HBase基础知识(包括简介.表结构).系统架构.数据存储 WAL log和HBase中LSM树的应用 HBase寻址机制 mino ...
- hive和hbase整合的原因和原理
为什么要进行hive和hbase的整合? hive是高延迟.结构化和面向分析的: hbase是低延迟.非结构化和面向编程的. Hive集成Hbase就是为了使用hbase的一些特性.或者说是中和它们的 ...
- 全球第一免费开源ERP Odoo工业互联网生产制造功能模块术语解析
物料清单 物料清单(BoM)用于描述物料.每种物料的数量.以及制造某一产品所需的步骤.由于行业和成品性质的不同,同一个文件可能有不同的命名.例如,在制药行业中,可以使用术语“处方”. 周期 产品周期是 ...
- 网站app被劫持怎么办?HTTPDNS阿里云域名防劫持, DNSPod 移动解析服务 D+
网站app被劫持怎么办?HTTPDNS阿里云域名防劫持, DNSPod 移动解析服务 D+ HTTPDNS_移动开发_域名解析_域名防劫持-阿里云https://www.aliyun.com/prod ...
- [心得]传统IT转互联网面试经验分享
http://www.newsmth.net/bbstcon.php?board=Java&gid=374779 传统IT外企干了8年,两年前转互联网的,面的和被面的都不少.这几天项目空档期, ...
- String内存溢出异常(错误)可能的原因及解决方式
摘要:本Blog主要为了阐述java.lang.OutOfMemoryError:PermGenspace可能产生的原因及解决方式. 当中PermGen space是Permanent Generat ...
- 标 题: [心得]传统IT转互联网面试经验分享
发信人: lgonnet (逃之夭夭), 信区: Java标 题: [心得]传统IT转互联网面试经验分享发信站: 水木社区 (Wed Jul 1 10:18:38 2015), 站内 统一回复一下 ...
随机推荐
- flex中在basewidget中不能使用图表组件问题
参考 http://blog.sina.com.cn/s/blog_51e3d0e70101hljz.html
- 关于ListCtrol自绘的技巧
一.给控件添加排序功能report风格的list控件很多情况下都需要支持排序功能,而且最好支持按不同列进行排序.CListCtrl的类方法SortItems支持排序功能,但是在排序过程中,两个数据真正 ...
- Velocity教程-脚本语法详解(转)
Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象. 当Veloci ...
- Swift - 滑块(UISlider)的用法
1,滑块的创建 1 2 3 4 5 6 var slider=UISlider(frame:CGRectMake(0,0,300,50)) slider.center=self.view.center ...
- 新手推荐:IIS+PHP+MYSQL环境配置教程
本文介绍刚开始接触php的朋友如何为自己的服务器配置php环境 首先我们要的工具: 1.IIS:这个当然是不能少的了,用系统自带的就好了,这里就不教大家怎么装了. 2.PHP:php-5.2.0-wi ...
- Servlet和JSP读书笔记(三)之Cookie
一. 浏览器和服务器之间通信的简单介绍引出Cookie和Session(只是简单的简介,不包含协议方面的知识) 1.当我们在浏览器中输入一个地址后,回车后就可以看到浏览器给我们展示的漂亮页面.在这个过 ...
- D2010 RTTI + Attribute 简单实现ORM
还记得David I 今年四月来盛大时,被问及“反射机制能再做得好一点吗?我们想放弃RTTI”,David I 回答“这的确是需要考虑的地方,当然RTTI我们不会放弃的”.(这个白胡子的老哥哥还真很可 ...
- git for windows (又名 msysgit)如何记住用户名和密码
创建存储用户名密码的文件 在home文件夹,一般是 C:\Documents and Settings\Administrator 下建立文件 .git-credentials (windows下不允 ...
- ios block循环引用问题
ios开发中,开了ARC模式,系统自动管理内存,如果程序中用到了block就要注意循环引用带来的内存泄露问题了 这几天遇到一个问题,正常页面dismiss的时候是要调用dealloc方法的,但是我的程 ...
- Maven聚合
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2 ...