企业级移动应用如何优化域名解析和业务访问?

2016云栖大会之前,阿里云关于移动服务方面的介绍比较少,为什么现在开始在做移动服务方面的介绍?

从2013年开始,阿里巴巴举全集团之力解决无线APP开发过程中的一些难题,经过三年多的积累,把阿里集团积累的一些技术逐渐输出出来,成为阿里云的产品。2016云栖大会武汉峰会上,阿里巴巴无线产品经理德泰把之前阿里云做的努力和成果跟参会嘉宾一起分享。移动应用解决方案这个话题比较大,可以分成一个系列来讲,今天偏重从性能方面来讲述阿里这方面做的努力。

移动域名解析存在哪些问题,如何优化?使用什么协议?业务访问存在哪些问题,如何优化?性能度量的标准有哪些?这些问题都将可以从演讲中得到解决。

说起企业级移动应用,我们难免提出疑问,移动应用的整个访问流程到底是什么样子?

移动应用访问的经典架构

其实,移动端与PC端的访问流程比较接近。

访问一个业务首先要做域名解析,然后再去访问业务服务器,中间可能有CDN。在域名解析阶段,无线网络的特征是延迟比较大、丢包率很高、解析失败率也很高。

在业务访问阶段,由于延迟大、丢包率高,所以建连的开销比较大,成功率等各方面都会受到影响;并发方面,在有线情况下稍微好一些,比如浏览器访问网站的时候为了提高并发度可以建多个连接,比如浏览器对一个域名可以建4-8条连接,但是在无线情况下,建立这么多连接就会产生问题,首先无线的接入资源是有限的,建立很多连接会有更多的资源消耗,还有耗电等方面限制。当前很多移动应用采用短连接,同时并发不能达到很高。如果想要建立长连接还会面临一个问题:无线场景下怎么把这个长连接维持的更长一些?传统的TCP、HTTP协议在无线场景下的弊端暴露的更加明显。

性能度量阶段,对无线业务的性能怎么衡量?衡量什么指标?怎么得到比较合理的度量值?

首先分析域名解析阶段,域名解析存在哪些问题?如何进行优化?

移动域名解析存在问题及优化

域名解析存在三个问题:

第一个问题是链路延迟比较大、丢包率高导致解析延迟比较大并且解析失败率比较高。无线网和有线网比较大的区别是无线网的接入比较耗时,2G情况下有300-600ms的延迟,3G情况下有50-100ms的延迟,4G情况下有10-20ms的延迟,并且无线网从接入网到核心网也有100ms的延迟,相对于有线网来说延迟大很多。另外一点,无线网络的丢包率比较高、稳定性差。

第二个问题是域名劫持问题。域名劫持是指在用户正常联网状态下(如3G、4G、WiFi等状态),目标域名被恶意地解析到其他IP地址上,造成用户无法正常使用服务。2015年12月份国内6家顶级的互联网公司发表联合声明抵制流量劫持,全网大概有5%左右的DNS解析请求受到劫持,有一些地区部分时段甚至达到20%。

第三个问题是调度精确性的问题,Local DNS稀疏性和与Client IP不匹配,表现为在无线情况下,调度系统判断用户位置会存在较大问题。如下图所示:

图中记录的是阿里的真实案例。阿里昆仑就是阿里的CDN探测工具,客户可以用这个工具看到手机的IP,local DNS的IP。DNS系统分为权威和非权威,比如上网需要配置上网的DNS服务器地址,这个DNS不负责记录域名对应的解析结果,只是作为DNS解析的一个代理,这个IP地址就是代理服务器的地址,此时业务系统就会根据配置的这个DNS服务器地址来判断用户位置。如上图所示,很明显,在无线场景下,客户本来属于武汉联通,结果local DNS变成了珠海电信和上海电信。在国内,存在一个经典的问题——南北互通问题、即跨运营商访问的时候延迟比较高,因为互通的时候中间传输距离增加并且带宽很小,即走一段很长、很挤的路。在无线情况下,local DNS配置的参差不齐,导致出现这种情况的时候,用户的体验非常差。

为了解决上述问题,阿里内部使用的是HTTPDNS。它的基本原理是使用HTTP协议取代原有的UDP协议进行域名解析。UDP协议比较脆弱,把包截获后回复一下就能实现域名劫持,访问劫持到指定的节点,而HTTP协议是需要建连的,所以比UDP协议要可靠一些。此外,UDP发出去之后,是尽力投递,没投递成功也不管,而HTTP协议失败后会重试,所以使用HTTP协议对解析失败率也有改善。使用HTTPDNS还有一个好处:客户端IP和local
DNS IP不匹配的问题也可以通过HTTPDNS解决掉,因为客户端是直接和HTTPDNS服务器建连,而不是通过local DNS去代理,这样HTTPDNS可以拿到客户端的真实IP而非Local DNS IP。

业务访问存在哪些问题?又是如何优化的呢?

无线网络访问的特征包括延迟大、丢包率高、不稳定,建连开销很大,短数据流交互比较多。无线网络访问的目标是1秒钟法则:在4G或者WiFi情况下1秒钟可以把首屏显示出来,3G情况下1秒钟可以首字节到达,2G情况下1秒钟完成DNS解析建连。

业务访问存在的第一个问题主要包括短连接、HTTP协议串行特性、HTTP头部较大。短连接是指发送请求之前,三次握手把连接建好,然后开始发送数据,结束后把连接断掉,这在无线场景下很不合适,因为建立一个连接开销特别大,而实际传输数据时间很短,所以希望尽可能使用长连接。而使用并发连接是有限制的,相对于有线情况下,无线接入资源、电量等各方面的限制很多。HTTP协议的串行特性导致如果有一个请求的响应比较慢就会把其他请求阻塞掉。第二个问题是接入层未作优化,路由未作优化。如果想做长连接,源站就直接面临长连接压力,并且访问路由不可控,即发送包之后,包走的路径是不可控的。第三个问题是对象大小未作优化,比如从肉眼看不出区别的时候,不同格式的图片大小差50%,而且内容也没有进行优化就整个传输过去了。

如何解决?

在网络协议方面,使用SPDY/HTTP 2.0协议来实现HTTP访问请求的并行化,通过请求头压缩把多包变成单包,后期使用基于UDP的协议降低建连的压力;在接入和路由方面,接入CDN使其到源站的链路更优,对路由进行优化选择最佳路径;在对象大小方面,根据不同尺寸分辨率、网络制式返回不同尺寸、质量图片,同时选择压缩率更高的图片格式。

 

通过建立性能基线,进行解析延迟优化、精确调度,进行协议优化、CDN就近接入、图片压缩、动态内容加速,对新闻媒体类的APP全网加速40%,对LBS动态请求加速30%。

业务访问性能度量

关注哪些指标?

比较重要的三个分析指标:建连时间、首字节时间、响应时间。

分析哪些维度?

关注以下维度:时间、ISP、网络制式、地域、版本、域名、请求方式。

如何个性化时间性能统计?

进行自定义性能统计与上报。

另外,阿里提出了自己的企业级移动应用解决方案。

企业级移动应用解决方案的全貌

企业级移动应用解决方案主要包括云、管、端三个方面的产品和服务。云指的是比较成熟的网络存储、数据库这些基础设施和大数据服务。管指的是从我们手机端到云上之间的传输链路,包括无线通道。端指的是阿里提供的一些SDK或者API方式在端上给用户提供的服务。

如上图所示,端部分的第一个层次MBAAS是做移动应用开发时候所需要的一些服务,比如数据分析、推送、域名解析和加速方面的需求。第二个层次MPAAS是跟业务结合更紧密一些服务,比如支付类的APP或者一些基于地理位置服务的需求的APP,或者促销、社交类的APP。

 

本文根据阿里云事业群飞天八部无线产品专家朱友志(花名:德泰)在2016云栖大会·武汉峰会上演讲整理而成。

时间: 2024-11-29 15:29:14

企业级移动应用如何优化域名解析和业务访问?的相关文章

电子商务关键数字优化:如何优化电商业务中的关键数字

文章描述:优化电子商务关键数字. [前言] 从事电子商务的工作一段时间,发现自己对于数据的想法有了很多变化.过去,我们拿着国外的理论,然后站在河边的岸上,对河中游泳的人们指指点点.今天,当你也跳入河中,就是全然不同的感受.一方面河水冰冷刺骨,另一方面,也开始理解为什么曾经河中的人们用各种"怪异的姿势"奋力搏击.这一篇文章,是我在杭州参加车品觉老师<智论商道,西湖秋学>活动的演讲整理,也记录了我的"河中感受". [正文] 这是一个很大很难但也是每一个电商人

优化-windows堆随机访问速度快不快?

问题描述 windows堆随机访问速度快不快? windows堆随机访问速度快不快?有没有优化神马的? windows堆随机访问速度快不快?有没有优化神马的? 解决方案 cpu.操作系统都有优化.当然相当快.事实上,这种基础的东西早就优化烂了. 解决方案二: 但是就你的程序来说,顺序访问,或者局部访问还是比随机效率高,因为后者缓存命中率会下降. 解决方案三: 你代码能做的就是进来把地址空间连续分布,同时几种访问. 解决方案四: 这种访问就是线性的,类似于速度一样,访问的时候通过指针找到内存块,加

Cocos2d-x优化中多线程并发访问

多线程并发访问在Cocos2d-x引擎中用的不是很多这主要是因为中整个结构设计没有采用多线程.源自于Objective-C的Ref对象需要使用AutoreleasePool进行内存管理AutoreleasePool是非线程安全的所有不推荐在子多线程中调用Ref对象的retain(). release()和autorelease()等函数.另外OpenGL上下文对象也是不支持线程安全的.但是有的时候我们需要异步加载一些资源例如加载图片纹理.声音的预处理和网络请求数据等.如果是异步加载图片纹理我们可

基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - ORM访问器

    上一篇文章AgileEAS.NET之数据关系映射ORM简单介绍了一下AgileEAS.NET平台中ORM对象的组织机构体系,但并没有对其所执行的数据存取操作介绍,在AgileEAS.NET中,我对ORM实体及其上的数据操作实现进行了分离,实体对象只呈现数据,而实体的增加.修改.更新.删除.缓存操作都通过ORM访问器实现.     在AgileEAS.NET两个访问器IOrmAccessor和ICacheAccessor访问器. IOrmAccessor完成ORM对象(实体和表)和数据库的

移动互联网时代,如何优化你的网络 —— 域名解析篇

移动互联网时代 , 如何优化你的网络 -- 域名解析篇 阿里云 移动服务 泠茗 域名(Domain Name),是由一串用点分隔的名字组成的互联网上某台计算机或某组计算机的标识,它的目的是为了方便人们更简单便捷地访问互联网上的服务.在实际的系统实现中,域名通过DNS(Domain Name System)系统转化为服务器的IP地址,以方便机器通过IP进行寻址和通信.上述行为,我们称之为域名解析. 作为一次网络通信最前置的环节,域名解析的重要性不言而喻.在传统的基于浏览器的网站访问场景下,域名解析

经典网络的ECS实例支持升级到企业级实例

既上一篇升级系列文(ECS经典网络实例支持升级到企业级实例 支持IO优化.经典网络实例升级到企业级实例)之后,ECS控制台升级功能又迎来了重要更新. 现在可以在控制台对 非IO优化 .经典网络的ECS实例升级配置到企业级实例(sn2,sn1,sn2ne,sn1ne,c4,cm4等). 注:暂支持Linux系统的ECS实例,Windows系统的实例很快将开放,请关注后续更新. 升级注意事项 和IO优化.经典网络的实例一样,升级需要注意以下两件事情: 一.实例的内网IP可能会发生变化 经典网络实例,

微软2012财年云计算战略:全面云优化

微软服务器与工具总裁Satya Nadella 9月14日在美国加州Anaheim举办的2011年度分析师会议上披露了微软2012财年最新的的云计算战略.他表示,微软服务器操作系统的下一代版本将命名为Windows Server 8,该产品将和System Center 2012一道全方位针对企业级用户进行云优化.而开发代码为"Denali"的下一代SQL Server数据库可以使ISV在SQL Server上的各种应用平滑地迁移到云上. Satya Nadella表示,微软未来10年

如何站在双11的肩膀上 详解阿里云企业级互联网架构

摘要:2015天猫双11全球狂欢节以912.17亿元的答卷完美收官.双11当天14万笔/秒的交易创建峰值和8.6万笔/秒的支付峰值双双刷新了世界纪录,相比首届双11,订单创建峰值增长了350倍,支付峰值增长了430倍.天量数字的背后,是中国计算能力的登顶全球. 阿里云计算总裁胡晓明表示,阿里巴巴承载双11的计算能力和... 2015天猫双11全球狂欢节以912.17亿元的答卷完美收官.双11当天14万笔/秒的交易创建峰值和8.6万笔/秒的支付峰值双双刷新了世界纪录,相比首届双11,订单创建峰值增

陈小欢:借用“情人节”等节日营销优化攻略与技巧

今天又到了一年的"情人节",平常我们在节日经常会遇到商家打折或者促销,对于这点,在网站优化上我们是否也有一定的经验与技巧呢?通过节日来制定相关的营销策略. 其实,我们完全可以利用最基础的seo相关技术来达到我们的目的,以便于我们更好的购物. 现在,seo酒后一帖的陈小欢想通过这些手段,我们能增加网络销售的业绩与任务. 基于搜寻引擎优化的技巧之一是把与节日相关的文字或者短语以至于标题都出现你新建的网站内容栏目,譬如"情人节去哪里吃饭好"."情人节送什么礼物给