阿里云推出高效、稳定的HTTPDNS服务 (阿里云httpdns)
:解决DNS解析的瓶颈问题
随着互联网应用的快速发展,DNS解析已经成为应用性能瓶颈的重要因素之一,特别是对于一些有着高并发、大流量的应用来说更是如此。传统的DNS解析方式在解析时间、负载均衡、安全性等方面,存在着一些问题,为此阿里云推出了高效、稳定的HTTPDNS服务,为应用程序提供更高效、稳定、安全、便捷的DNS解析服务,从而显著提升了应用的性能和稳定性。
一、HTTPDNS服务的由来
在我们平时使用互联网的过程中,通过域名访问网站是十分常见的一件事情,而在域名转换成IP的这一过程中,DNS解析是必不可少的步骤。然而,传统DNS解析存在着一些问题,这也是阿里云推出HTTPDNS服务的起因:
1. DNS解析时间长:由于DNS服务器在全球存在较大的分布式网络,因此DNS解析时间存在一定不确定性,对大型互联网应用而言,这种解析时间的不确定性显得尤为突出,甚至会直接影响应用的响应速度和性能表现。
2. DNS解析不稳定:DNS解析不稳定是互联网现象的一个长期存在的问题。在一些DOS攻击、流量冲击的情况下,DNS解析能力下降进而导致网站直接不可用的情况实属不少。
3. DNS解析安全性问题:公共DNS解析其实是潜藏着隐患的,因为用户DNS解析查询会被公共DNS服务器完全接管,可能会导致查询数据意外泄露,以及恶意解析的风险,给用户带来损失。
基于以上问题,阿里云推出了HTTPDNS服务,通过在客户端内部查询到指定域名的IP地址而不必暴露到公网,解决了DNS解析中的瓶颈问题与安全隐患。
二、HTTPDNS的特点
1. 大大缩短域名解析时间:HTTPDNS采用智能DNS解析服务,提高了解析速度。数据显示,HTTPDNS的解析耗时仅为3-30ms,比传统DNS快30%,可大大缩短应用的响应时间,优化用户体验。
2. 具备负载均衡能力:HTTPDNS服务可以让应用客户端得到更优解析结果,保证了网络请求的质量,防止了由于解析出来的IP地址不稳定而导致的重复解析、长连接断连等问题。
3. 数据加密安全性高:HTTPDNS通过HTTPS协议加密请求与响应数据,防止数据在互联网传输过程中被篡改或恶意嗅探,保证了数据的安全性。
4. 易于接入:HTTPDNS提供简单易用的API,可应用于多种平台、多种编程语言和开发框架。
三、应用案例
1. 网页加速:HttpsDNS通过解析指定IP地址,缓存DNS查询结果,缩短DNS解析的时间,提高页面打开速度,提升用户体验。
2. 移动应用:在移动应用开发中,经常使用API接口访问后端服务接口。当终端客户端的DNS解析时间过长时,会导致应用访问缓慢,HTTPDNS服务的快速解析能够有效优化移动应用的启动速度和流畅度。
3. 互联网金融:HTTPDNS服务对于保障互联网金融交易非常关键,一些云安全领域的产品也开始逐渐采用HTTPDNS服务,以提供更快、更安全、更稳定的交易服务。
四、结语
HTTPDNS服务的推出标志着阿里云在解决互联网应用瓶颈问题方面又迈进了一大步,此外,HTTPDNS服务的推出,对于互联网安全领域的提升也不可忽视。毫不夸张地说,HTTPDNS服务的推出,预示着DNS解析的时代变革,也被看作是解决DNS解析不稳定的更佳方案之一。据了解,阿里云HTTPDNS服务已经应用于台湾联通、同程旅游、滴滴出行、简书等多个互联网产品,为无数用户提供了稳定高效的访问服务,对于那些追求高性能、高可用、高稳定性的互联网应用而言,HTTPDNS服务无疑是更好的选择之一。
相关问题拓展阅读:
- 阿里云怎样修改DNS
- 如何利用HTTPDNS降低DNS解析开销
- 北京IT培训分享程序员都有哪些网络性能优化方法
阿里云怎样修改DNS
如上图,登录到万网找到域链空名 点带唤亮击解析 有个基本管理 进去就蠢宽如图所示
登录到万网找到域名
点击解析
有个基本管理
进去就可以了。
域名系统(Domain Name System缩写DNS,Domain Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
域名系统(Domain Name System, DNS)是 Internet上解决网上机器命名的一种系统。就像拜访朋友要先知道别人家怎么走一样,Internet上当一台 主机要访问另外一台主机时,
必须首先获知其地址, TCP/IP中的 IP地址是由四段以“.”分开的数字组成,记起来总是不如名字那么方便,所以,就采用了 域名系统来管理名字和IP的对应关系。
虽然因特网上的节点都可以用IP地址惟一标识,并且可以通过IP地址被访问,但即使是将32位的二进制IP地址写成4个0~255的十位数形式,也依然太长、太难记。
因此,人们发明了域名(Domian Name),域名可将一个IP地址关联到一组有意义的字符上去。
用户访问一个网站的时候,既可以输入该网站的IP地址,也可以输入其域名,对访问而言,两者是等价的。
例如:微软公司的Web服务器的IP地址是207.46.230.229,其对应的域名是
www.microsoft.com
,不管用户在浏览器中输入的是207.46.230.229还是
www.microsoft.com
,都可以访问其Web网站。
一个公司的Web网站可看作是它在网上的门户,而域名就相当于其门牌地址,通常域名都使用该公司的名称或简称。
例如上面提到的微软公司的域名,类似的还有:IBM公司的域名是
www.ibm.com
、Oracle公司的域名是
www.oracle.com
、Cisco公司的域名是
www.cisco.com
等。
当人们要访问一个公司的Web网站,又不知道其确切穗薯域名的时候,也总会首羡橘先输入其公司名称作为试探。但是,由一个公司的名称或简称构成的域名,也有可能会被其他公司或个人抢注。甚至还有一些公司或个人恶意抢注了大量由知名公司的名称构成的域名,然后再高价转卖给这些公司,以此牟利。
已经有一些域名注册纠纷的仲裁措施,但要从源头上控制这类现象,还需要有一猜派者套完整的限制机制,这个还没有。所以,尽早注册由自己名称构成的域名应当是任何一个公司或机构,特别是那些著名企业必须重视的事情。有的公司已经对由自己著名品牌构成的域名进行了保护性注册。
参考资料
.
如何利用HTTPDNS降低DNS解析开销
1. 背景说明
移动场景下DNS的解析开销是整个网络请求延迟中不可忽视的一部分。一方面基于UDP的localDNS解析在高丢包率的移动网络环境下更容易出现解析超时的问题,另一方面在弱网环境下DNS解析所引入的动辄数百毫秒的网络延迟也大幅加重了整个业务请求的负担,直接影响用户的终极体验。
2. 解决方案
阿里云移动服务团队推出的HTTPDNS在解决了传统域名劫持以及调度精确性的问题的同时,也提供了开发者更灵活的DNS管理方式。通过在客户端合理地应用HTTPDNS管理策略,我们甚至能够做到DNS解析0延迟,大幅提升弱网环境下的网络通讯效率。
DNS解析0延迟的主要思路包括:
构建客户端DNS缓存;
通过合理的DNS缓存,我们确保每次网络交互的DNS解析都是从内存中获取IP信息,从而大幅降低DNS解析开销。根据业务的不同,我们可以制订更丰富的缓存策略,如根据运营商缓存,可以在网络切换的场景下复用已缓存的不同运营商线路的域名IP信息,避免网络切换后进行链路重选择引入的DNS网络解析开销。另外,我们还可以引入IP本地化离线存储,在客户端重启时快速从本地读取域名IP信息,大幅提升首页载入效率。
热点域名预解析;
在客户端启动过程中,我们可以通过热点域名的预解搭段析完成热点域名的缓存载入。当真正备者的业务请求发生时,直接由内存中读取目标域名的IP信息,避免传统DNS的网络开销。
懒更新策略;
绝大多数场景下业务域名的IP信息变更并不频繁,特别是在单次APP的使用周期内,域名解析获取的IP往往是相同的(特殊业务场景除外)。因此我们可以利用DNS懒更新策略来实现TTL过期后的DNS快速解析。所谓DNS懒更新策略即客户端不主动探测域名对应IP的TTL时间,当业务请求需要访问某个业务域名时,查询内存缓存并返回该业务域名对应的IP解析结果。如果IP解析结果的TTL已过期,则在后台进行异步DNS网络解析与缓存结果更新。通过上述策略,用户的所有DNS解析都在与内存交互,避免了网络交互引入的延迟。
2.1 Demo示例
我们在HTTPDNS Demo github中提供了Android/iOS SDK以及HTTPDNS API接口的使用例程,这里我仿枝薯们通过使用Android SDK的例程演示如何实现0延迟的HTTPDNS服务。
public class NetworkRequestUsingHttpDNS {
private static HttpDnsService httpdns;
// 填入您的HTTPDNS accoutID信息,您可以从HTTPDNS控制台获取该信息
private static String accountID = “100000”;
// 您的热点域名
private static final String TEST_URL = {“
“, “
“};
public static void main(final Context ctx) {
try {
// 设置APP Context和Account ID,并初始化HTTPDNS
httpdns = HttpDns.getService(ctx, accountID);
// DegradationFilter用于自定义降级逻辑
// 通过实现shouldDegradeHttpDNS方法,可以根据需要,选择是否降级
DegradationFilter filter = new DegradationFilter() {
@Override
public boolean shouldDegradeHttpDNS(String hostName) {
// 此处可以自定义降级逻辑,例如
www.taobao.com
不使用HttpDNS解析
// 参照HttpDNS API文档,当存在中间HTTP代理时,应选择降级,使用Local DNS
return hostName.equals(“
www.taobao.com
“) || detectIfProxyExist(ctx);
}
};
// 将filter传进httpdns,解析时会回调shouldDegradeHttpDNS方法,判断是否降级
httpdns.setDegradationFilter(filter);
// 设置预解析域名列表,真正使用时,建议您将预解析操作放在APP启动函数中执行。预解析操作为异步行为,不会阻塞您的启动流程
httpdns.setPreResolveHosts(new ArrayList(Arrays.asList(“
www.aliyun.com
“, “
www.taobao.com
“)));
// 允许返回过期的IP,通过设置允许返回过期的IP,配合异步查询接口,我们可以实现DNS懒更新策略
httpdns.setExpiredIPEnabled(true);
// 发送网络请求
String originalUrl = “
“;
URL url = new URL(originalUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 异步接口获取IP,当IP TTL过期时,由于采用DNS懒更新策略,我们可以直接从内存获得最近的DNS解析结果,同时HTTPDNS SDK在后台自动更新对应域名的解析结果
ip = httpdns.getIpByHostAsync(url.getHost());
if (ip != null) {
// 通过HTTPDNS获取IP成功,进行URL替换和HOST头设置
Log.d(“HTTPDNS Demo”, “Get IP: ” + ip + ” for host: ” + url.getHost() + ” from HTTPDNS successfully!”);
String newUrl = originalUrl.replaceFirst(url.getHost(), ip);
conn = (HttpURLConnection) new URL(newUrl).openConnection();
}
DataInputStream dis = new DataInputStream(conn.getInputStream());
int len;
byte buff = new byte;
StringBuilder response = new StringBuilder();
while ((len = dis.read(buff)) != -1) {
response.append(new String(buff, 0, len));
}
Log.e(“HTTPDNS Demo”, “Response: ” + response.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 检测系统是否已经设置代理,请参考HttpDNS API文档。
*/
public static boolean detectIfProxyExist(Context ctx) {
boolean IS_ICS_OR_LATER = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
String proxyHost;
int proxyPort;
if (IS_ICS_OR_LATER) {
proxyHost = System.getProperty(“http.proxyHost”);
String port = System.getProperty(“http.proxyPort”);
proxyPort = Integer.parseInt(port != null ? port : “-1”);
} else {
proxyHost = android.net.Proxy.getHost(ctx);
proxyPort = android.net.Proxy.getPort(ctx);
}
return proxyHost != null && proxyPort != -1;
}
}
对于使用HTTPDNS API接口的开发者,您可以在客户端自己定制更高效,并且符合您需求的HTTPDNS管理逻辑。
北京IT培训分享程序员都有哪些网络性能优化方法
降低用户跳出率的方法有很多,对于软件正滑悔开发程序员来说,代码的优化和网络优化都是很有效的方法。今天,北京IT培训就从以下几个方面来了解一下,网络优化的具体操作内容。
1Gzip压缩
HTTP协议上的Gzip编码是一种用来改进WEB应用程序性能的技术,用来减少传输数据量大小,减少传输数据量大小有两个明显的好处:
可以减少流量消耗;
可以减少传输的时间。
2IP直连与HttpDns;
DNS解析的失败率占联网失败中很大一种,而且次域名解析一般需要几百毫秒。针对此,我们可以不用域名,才用IP直连省去DNS解析过程,节省这部分时间。
另外熟悉阿里云的小伙伴肯定知道HttpDns:HttpDNS基于Http协议的域名解析,替代了基于DNS协议向运营商LocalDNS发起解析请求的传统方式,可以避免LocalDNS造成的域名劫持和跨网访问问题,解决域名解析异常带来的困扰。
3图片处理
3.1图片下载
使用WebP格式;同样的照片,采用WebP格式可大幅节省流量,相对于JPG格式的图片,流量能节省将近25%到35%;相对于PNG格式的图片,流量可以节省将近80%。重要的是使用WebP之后图片质量也没有改变。
使用缩略图;App中需要加载的图片按需加载,列表中的图片根据需要的尺寸加载合适的缩略图即可,只有用户查看大图的举正时候才去加载原图。不仅节省流量,同时也能节省内存!之前使用某公司的图片存储服务在原图链接之后拼接宽高参数,根据参数的不同返回相应的图片。
3.2图片上传
图片(文件)的上传失败率比较高,不仅仅因为大文件,同时带宽、时延、稳定性等因素在此场景下的影响也更加明显;
避免整文件传输,采让闷用分片传输;
根据网络类型以及传输过程中的变化动态的修改分片大小;
每个分片失败重传的机会。
备注:图片上传是一项看似简单、共性很多但实际上复杂、需要细分的工作。移动互联网的场景和有线的场景是有很多区别的,例如移动网络的质量/带宽经常会发生“跳变”,但有线网络却是“渐变”。
4协议层的优化
使用新的协议,Http协议有多个版本:0.9、1.0、1.1、2等。新版本的协议经过再次的优化,例如:
Http1.1版本引入了“持久连接”,多个请求被复用,无需重建TCP连接,而TCP连接在移动互联网的场景下成本很高,节省了时间与资源;
Http2引入了“多工”、头信息压缩、服务器推送等特性。
新的版本不仅可以节省资源,同样可以减少流量;我对Http2并没有实际接入经验,此处仅从原理进行分析。
关于阿里云httpdns的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
编辑:568数据
标签:域名,互联网,阿里,网络,地址