“移”码平川:移动端高可用性体系

简介: 2017杭州云栖大会阿里移动云峰会专场上,阿里巴巴资深技术专家玄黎带来移动端高可用体系相关演讲。本文主要介绍了为什么要用高可用体系,以及高可用体系具体包括哪些内容,包括自动化、度量&监控、分析和修复体系,最后讲到高可用在阿里的价值。
2017杭州云栖大会阿里移动云峰会专场上,阿里巴巴资深技术专家玄黎带来移动端高可用体系相关演讲。本文主要介绍了为什么要用高可用体系,以及高可用体系具体包括哪些内容,包括自动化、度量&监控、分析和修复体系,最后讲到高可用在阿里的价值。

 

以下是精彩视频内容整理:

为什么要用高可用体系?

190c6d8fe387b74f2b8d454b7c1dbbfe13c1d17e

APP发展到现在,做成一个体验非常好、性能非常快,没有什么问题的APP也是各个公司非常难的事情。大家发现功能完成以后达到高质量成本非常高,一般要做体验非常好、性能非常好APP可能需要非常资深的工程师,而且需要时间很长,才能够保证性能体验做的非常好。

APP的特点都安装在手机上,等客户打电话或者老板反馈APP有问题时,基本上都是大问题了,可能需要花很长时间定位问题。发现问题后,再发一个版本可能也要很长时间,目前来说整个阿里系发版周期非常快,每一周都在发布,那么,阿里内部是怎样做的?

 

阿里移动高可用体系

fbb1004300c5c22eccf51a655f196275844b138a

我们把高可用体系分为四个部分:

第一,自动化体系。和传统意义上的自动化不太一样,还有一些校验规则;

第二,监控度量体系。移动端APM非常盛行,客户端我们研发了一套低成本方案,帮助研发工程师非常精确地知道体验问题、性能问题、稳定性问题。

第三,修复方案。早于客户投诉之前发现问题,我们开发了一套用户问题感知体系和服务端高灵敏度分析和问题排查体系。

第四,为多维度分析机制。为了解决在移动端发现的问题,开发了自己自营方案以及远程发送配置方案,可以快速降级或者关闭掉一些功能,同时一个功能模块有问题了,可以跳到另外一个模块。

自动化体系

3eea64e4d24f3384121465152cd030c076cc5c3b

目前在阿里内部,我们结合自动化方案可以根据线上用户路径图,在线下根据用户路径进行高效投放,手淘场景下两个小时可以覆盖手淘70%-80%的路径。这套体系在构建的时候嵌入一个SDK,可以在所有空间里自动生成一个ID,你可以在一台机器上操作同步在所有机器上进行回放,通过这套体系可以在一台机器上回放,大屏幕上有几十台机器帮助你做功能回放。其实整个回放比以前自动化脚本便利很多,手淘一天时间可以把所有页面都写完,可以经过一天进行回放。我们有很多校验规则,同步跑的时候会发现很多性能问题,以前测试发现性能慢,我们希望跑的过程中快速告诉开发者哪行代码有问题,我们集成了很多校验规则,大文件、流量、耗电、Cloud等等。通过这种方式等开发完测试功能以后,可以在3-4小时快速帮助排查出来60%-70%的问题,性能、稳定性问题都可以通过这套手段快速解决。

度量、监控体系

25343eba943c646f4063fc3e05e764397e1a3c74

卡顿、不流畅、内存爆掉可以通过无痕埋点的方式,开发接入成本极低。比如启动时间,阿里认为用户点击一个页面到展现是完全可操作的,包括所有页面的响应时间、流畅度、崩溃、卡顿、功耗,阿里今天不需要研发做任何代码开发,通过SDK无痕方式可以快速接入。在我们内部已经不再做性能测试,今天可以以非常低的成本感知到用户体验问题、性能问题;精确度高,与用户直接感受接近;通用性强,线下线上都适用。

分析体系

0455778597cdbf1427f9827077546ba600a558de

在监控SDK基础上开了一套基于大数据非常完善的体系。最简单的是度量体系,比如说通过体验数据、性能数据、稳定性数据可以快速帮助整个应用做一些监控趋势,这个趋势除了APP之外可以分到APP模块业务层面。我们还会根据统计学的原理,有一些常见的规则,如地域关系、网络关系、用户体征关系,我们会智能分析自动告诉你是否是一些客观元素导致整个网络或者整个应用出问题。如果不知道客观原因,还有移动日志分析,可以非常明确的指导当时用户现场发生的一些问题,比如用户发生问题之前CPU是什么样的,内存信息什么样子,如果你还不知道,突然发现下单不成功,会有一个远程的移动日志,用低成本的方式获取用户所有的网络信息,如果今天发现都不能知道的时候,你也可以通过主动上报的方式或者用户远程下发命令的方式,如果后台做一些解析规则的话,可以自动分析是因为什么问题导致的。

通过这些方式可以在非常短的时间之内让用户有反馈或者监控报警,可以快速的感知到APP是什么问题,如果是性能问题可以快速感知到,如果是稳定性问题影响因子是什么样子,发生概率是什么样子,特别是性能,可以快速感知到是否是某款机型适配问题导致了卡顿和性能低下。

修复体系

修复问题是更麻烦的事情,安卓端一周可以做到70%的覆盖,IOS也是这个程度,阿里主要做三个事情:

第一,动态部署。把整个功能进行更新,这是基于开源的体系做。

第二,热修复。可以快速时间之内把所有问题修复掉。

第三,远程配置。需要在开发过程中自己按开关,可以帮助你把功能快速关掉。

 

在阿里的价值

阿里2009年做无线,真正成熟在2013年、2014年,到去年从原来一个月到两个月发一个版本,现在每一天都在发版本,从测试完成到发布大概需要一天时间,现在灵敏度大概在10秒钟之内,手淘现在每天都在发布,稳定性保持在千分之一,我们重大的问题在一个小时之内可以完全修复掉。

ef6fa6df5d849cae34b192ebbb66bda3676761ea

实例如图,一个版本有很多用户,马上用户舆情报警,后台看数据量非常低,可能万分之一或者百万分之一,传统意义上基本没有办法做这个事情,移动端不可能把所有用户日志都存下来。我们发现和用户地域信息有很大关系,舆情自动报出来后,告诉你某个地域有问题,我们根据一些用户下报日志主动下发远程日志请求,一些敏感信息不会存,根据用户日志信息、流水信息可以发现问题,但是机器非常少,可能一台机器有问题,可以马上进行判别,把问题修复掉。

阿里更多借助于灰度体系、CR体系做一些查漏补缺的事情,保证快速交付,不会因为速度加快导致整个质量、性能、体验有很大的差别。

 

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1天前
|
前端开发 JavaScript API
无感验证码在不同平台和设备上的兼容性
无感验证码在Web平台兼容性良好,利用JavaScript和浏览器API实现。移动平台(iOS, Android)需适配不同操作系统版本和API。桌面应用平台复杂,涉及多操作系统API适配。开发者须按平台要求实现,确保在各种设备上的稳定性和可靠性,需进行充分测试。
|
6月前
|
存储 网络协议 调度
淘宝移动端统一网络库的架构演进和弱网优化技术实践
本文将介绍淘宝 APP 统一网络库演进的过程,讲述如何围绕体验持续构建南北向从监测到加速一体化的终端网络架构,通过构建 NPM 弱网诊断感知能力,落地原生多通道技术/多协议择优调度手段,贴合厂商附能网络请求加速,实现去 SPDY 及规模化 IPv6/H3 协议簇的平滑过渡,为用户提供弱网更好、好网更优的 APP 加载浏览体验,支撑业务创造更多的可能性。
229 0
|
7月前
|
开发框架 缓存 前端开发
区域LIS系统源码,SaaS模式,可扩展成医联体、医共体等模式
区域LIS可促进基层医疗机构条码化检验业务管理,为基层搭建标本采集、标本核收、标本检验、室内质控、报告发布、统计分析的规范流程,同时为医疗机构提供检验诊断知识库提升检验业务水准。
|
7月前
|
安全 区块链
基于OKExChain的去中心化交易平台KSwap开发规则功能/逻辑源码方案
// 购买数字资产 function buy(uint amount) public payable returns (uint remaining) {【更全面的开发源码搭建可看我昵称】
|
8月前
|
设计模式 数据安全/隐私保护
高效接入第三方登录且易扩展的方法
我们使用适配模式来实现一个实际的业务场景,解决实际问题。年纪稍微大一点的小伙伴一定经历过这样的过程。很早以前开发的老系统应该都有登录接口,但是随着业务的发展和社会的进步,单纯地依赖用户名密码登录显然不能满足用户需求。现在,大部分系统都已经支持多种登录方式,如QQ登录、微信登录、手机登录、微博登录等,同时保留用户名密码的登录方式。虽然登录形式丰富,但是登录后的处理逻辑可以不必改,都是将登录状态保存到Session,遵循开闭原则。首先创建统一的返回结果ResultMsg类。
96 0
|
8月前
|
存储 安全 区块链
区块链游戏系统开发(开发详细)/案例开发/设计功能/逻辑方案/源码平台
  区块链游戏系统开发是一个复杂而精密的过程。首先,需要进行需求分析和规划,确定游戏系统的功能和特性。然后,进行技术选型和架构设计,选择适合的区块链平台和开发工具。接下来,进行系统的搭建和编码,实现游戏逻辑和用户交互功能。最后,进行测试和优化,确保系统的稳定性和性能。
|
9月前
|
机器学习/深度学习 安全 PyTorch
DIDswap去中心化交易所系统开发案例项目/玩法规则/方案逻辑/开发稳定版/源码平台
  一般来说,区块链可按许可权限分为公有区块链、联盟区块链和私有区块链,其中,公有链面向全球所有用户,任何人都可以在其中读取数据和发送交易;联盟链由若干业务相关的机构共同参与管理,每个机构都运行着一个或多个节点,读写权限仅对联盟内的节点有限度地开放。
|
10月前
|
存储 安全 区块链
Avalanche公链dapp开发特性及部署规则解析
Avalanche公链dapp开发特性及部署规则解析