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

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

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

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

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

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

移动应用访问的经典架构

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

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

aed9a9316358907b04903cc45c41fcad5c8e0edc

在业务访问阶段,由于延迟大、丢包率高,所以建连的开销比较大,成功率等各方面都会受到影响;并发方面,在有线情况下稍微好一些,比如浏览器访问网站的时候为了提高并发度可以建多个连接,比如浏览器对一个域名可以建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不匹配,表现为在无线情况下,调度系统判断用户位置会存在较大问题。如下图所示:

73db9fcaee2645353873c73a02420f6aadccaafb

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

bc575d355972cb39f1c813fbede3434eac201456

为了解决上述问题,阿里内部使用的是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使其到源站的链路更优,对路由进行优化选择最佳路径;在对象大小方面,根据不同尺寸分辨率、网络制式返回不同尺寸、质量图片,同时选择压缩率更高的图片格式。

a47711aafdcc82284b510f1debce38af8ae93caf 

020d0d10148b190ed02babf485c574b02d7266bb

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

业务访问性能度量

关注哪些指标?

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

分析哪些维度?

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

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

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


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

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

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

7898b2441ab67ba9a788ae9750ac0caf9cc03e1f

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

 

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

相关文章
|
11天前
|
自然语言处理 数据可视化 API
淘宝商品评论 API 接口:深度解析用户评论,优化产品与服务
淘宝是领先的中国电商平台,其API为开发者提供商品信息、交易记录及用户评价等数据访问服务。对于获授权的开发者和商家,可通过申请API权限、获取并解析评论数据来进行情感分析和统计,进而优化产品设计、提升服务质量、增强用户互动及调整营销策略。未授权用户可能受限于数据访问。
|
10天前
|
运维 Serverless 网络安全
函数计算产品使用问题之通过仓库导入应用时无法配置域名外网访问,该如何排查
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3天前
|
XML 存储 数据格式
RAG效果优化:高质量文档解析详解
本文关于如何将非结构化数据(如PDF和Word文档)转换为结构化数据,以便于RAG(Retrieval-Augmented Generation)系统使用。
|
5天前
|
机器学习/深度学习 数据采集 存储
一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析
蒙特卡洛方法起源于1945年科学家斯坦尼斯劳·乌拉姆对纸牌游戏中概率问题的思考,与约翰·冯·诺依曼共同奠定了该方法的理论基础。该方法通过模拟大量随机场景来近似复杂问题的解,因命名灵感源自蒙特卡洛赌场。如今,蒙特卡洛方法广泛应用于机器学习领域,尤其在超参数调优、贝叶斯滤波等方面表现出色。通过随机采样超参数空间,蒙特卡洛方法能够高效地找到优质组合,适用于处理高维度、非线性问题。本文通过实例展示了蒙特卡洛方法在估算圆周率π和优化机器学习模型中的应用,并对比了其与网格搜索方法的性能。
65 1
|
7天前
|
JavaScript 前端开发 API
探索移动应用的世界:从开发到操作系统的深入解析
【8月更文挑战第31天】本文将带你走进移动应用的世界,从开发到操作系统,深入探讨移动应用的开发过程、移动操作系统的工作原理以及它们之间的交互。我们将通过代码示例,让你更好地理解移动应用的开发和运行机制。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和知识。
|
8天前
|
开发者 图形学 iOS开发
掌握Unity的跨平台部署与发布秘籍,让你的游戏作品在多个平台上大放异彩——从基础设置到高级优化,深入解析一站式游戏开发解决方案的每一个细节,带你领略高效发布流程的魅力所在
【8月更文挑战第31天】跨平台游戏开发是当今游戏产业的热点,尤其在移动设备普及的背景下更为重要。作为领先的游戏开发引擎,Unity以其卓越的跨平台支持能力脱颖而出,能够将游戏轻松部署至iOS、Android、PC、Mac、Web及游戏主机等多个平台。本文通过杂文形式探讨Unity在各平台的部署与发布策略,并提供具体实例,涵盖项目设置、性能优化、打包流程及发布前准备等关键环节,助力开发者充分利用Unity的强大功能,实现多平台游戏开发。
23 0
|
8天前
|
开发者 图形学 UED
深度解析Unity游戏开发中的性能瓶颈与优化方案:从资源管理到代码执行,全方位提升你的游戏流畅度,让玩家体验飞跃性的顺滑——不止是技巧,更是艺术的追求
【8月更文挑战第31天】《Unity性能优化实战:让你的游戏流畅如飞》详细介绍了Unity游戏性能优化的关键技巧,涵盖资源管理、代码优化、场景管理和内存管理等方面。通过具体示例,如纹理打包、异步加载、协程使用及LOD技术,帮助开发者打造高效流畅的游戏体验。文中提供了实用代码片段,助力减少内存消耗、提升渲染效率,确保游戏运行丝滑顺畅。性能优化是一个持续过程,需不断测试调整以达最佳效果。
22 0
|
8天前
|
Java 数据库 API
JSF与JPA的史诗级联盟:如何编织数据持久化的华丽织锦,重塑Web应用的荣耀
【8月更文挑战第31天】JavaServer Faces (JSF) 和 Java Persistence API (JPA) 分别是构建Java Web应用的用户界面组件框架和持久化标准。结合使用JSF与JPA,能够打造强大的数据驱动Web应用。首先,通过定义实体类(如`User`)和配置`persistence.xml`来设置JPA环境。然后,在JSF中利用Managed Bean(如`UserBean`)管理业务逻辑,通过`EntityManager`执行数据持久化操作。
15 0
|
8天前
|
开发者 Java
Play Framework深度解析:依赖注入的神秘力量,如何助力Web应用架构优化?答案即将揭晓!
【8月更文挑战第31天】依赖注入(DI)是现代软件开发的关键技术,用于分离对象创建与依赖关系,提升代码的可维护性和可测试性。Play Framework是一款高性能Java Web框架,内置了基于Google Guice的DI支持。本文探讨Play Framework中DI的最佳实践,包括定义组件、构造函数注入、字段注入以及作用域控制和自定义绑定等高级特性,帮助开发者轻松构建结构清晰、可维护性高的Web应用。
16 0
|
8天前
|
JavaScript 搜索推荐 前端开发
从零搭建到部署:Angular与Angular Universal手把手教你实现服务器端渲染(SSR),全面解析及实战指南助你提升Web应用性能与SEO优化效果
【8月更文挑战第31天】服务器端渲染(SSR)是现代Web开发的关键技术,能显著提升SEO效果及首屏加载速度,改善用户体验。Angular Universal作为官方SSR解决方案,允许在服务器端生成静态HTML文件。本文通过具体示例详细介绍如何使用Angular Universal实现SSR,并分享最佳实践。首先需安装Node.js和npm。
11 0

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
    下一篇
    DDNS