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

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 企业级移动应用移动域名解析存在哪些问题,如何优化?使用什么协议?业务访问存在哪些问题,如何优化?性能度量的标准有哪些?2016云栖大会·武汉峰会为您解答。

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云栖大会·武汉峰会上演讲整理而成。

相关文章
|
2天前
|
机器学习/深度学习 安全 大数据
揭秘!企业级大模型如何安全高效私有化部署?全面解析最佳实践,助你打造智能业务新引擎!
【10月更文挑战第24天】本文详细探讨了企业级大模型私有化部署的最佳实践,涵盖数据隐私与安全、定制化配置、部署流程、性能优化及安全措施。通过私有化部署,企业能够完全控制数据,确保敏感信息的安全,同时根据自身需求进行优化,提升计算性能和处理效率。示例代码展示了如何利用Python和TensorFlow进行文本分类任务的模型训练。
19 6
|
4天前
|
域名解析 网络协议 前端开发
浏览器输入域名网址访问后的过程详解
1、以91处理网为例,客户端浏览器通过DNS解析到www.91chuli.com,IP地址是202.108.22.5,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到202.108.22.5,然后通过TCP进行封装数据包,输入到网络层。
21 2
|
7天前
|
人工智能 Cloud Native Java
云原生技术深度解析:从IO优化到AI处理
【10月更文挑战第24天】在当今数字化时代,云计算已经成为企业IT架构的核心。云原生作为云计算的最新演进形态,旨在通过一系列先进的技术和实践,帮助企业构建高效、弹性、可观测的应用系统。本文将从IO优化、key问题解决、多线程意义以及AI处理等多个维度,深入探讨云原生技术的内涵与外延,并结合Java和AI技术给出相应的示例。
28 1
|
17天前
|
消息中间件 中间件 数据库
NServiceBus:打造企业级服务总线的利器——深度解析这一面向消息中间件如何革新分布式应用开发与提升系统可靠性
【10月更文挑战第9天】NServiceBus 是一个面向消息的中间件,专为构建分布式应用程序设计,特别适用于企业级服务总线(ESB)。它通过消息队列实现服务间的解耦,提高系统的可扩展性和容错性。在 .NET 生态中,NServiceBus 提供了强大的功能,支持多种传输方式如 RabbitMQ 和 Azure Service Bus。通过异步消息传递模式,各组件可以独立运作,即使某部分出现故障也不会影响整体系统。 示例代码展示了如何使用 NServiceBus 发送和接收消息,简化了系统的设计和维护。
32 3
|
17天前
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
22 1
|
23天前
|
存储 算法 UED
深度解析RAG优化之道:从检索到生成全面升级大模型应用性能,探索提升企业服务质量与用户体验的终极秘密
【10月更文挑战第3天】随着大模型技术的进步,人们愈发关注如何针对特定任务优化模型表现,尤其是在需要深厚背景知识的领域。RAG(Retrieval-Augmented Generation)技术因其能检索相关文档以辅助生成内容而备受青睐。本文将通过问答形式深入探讨RAG优化的关键点,并提供具体实现思路及示例代码。
20 2
|
8天前
|
存储 Kubernetes 监控
深度解析Kubernetes在微服务架构中的应用与优化
【10月更文挑战第18天】深度解析Kubernetes在微服务架构中的应用与优化
31 0
|
14天前
|
弹性计算 网络协议 网络安全
内网DNS解析&VPN网关联动实现云上访问云下资源
内网DNS解析&VPN网关联动实现云上访问云下资源
|
14天前
|
域名解析 缓存 网络协议
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
|
14天前
|
敏捷开发 数据可视化 测试技术
解析软件项目管理:以板栗看板为例,其如何有效影响并优化软件开发流程
软件项目管理是一个复杂而重要的过程,涵盖了软件产品的创建、维护和优化。其核心目标是确保软件项目能够顺利完成,同时满足预定的质量、时间和预算目标。本文将深入探讨软件项目管理的内涵及其对软件开发过程的影响,并介绍一些有效的管理工具。

相关产品

  • 云解析DNS
  • 推荐镜像

    更多