2020双11养猫技术大揭秘

简介: 你养猫了没?

作者 | 淘系-珑晴

image.png
在电商领域,互动是一个重要的用户增长方案,在提升用户黏性、活跃以及拉新上都发挥着重要的作用。今年双11,淘系互动团队推出了“超级星秀猫”,我们不盖楼、不开车,全民参与养猫出道,3只风格各异的萌猫咪一经问世,瞬间俘获了无数消费者的心。通过 EVA 互动体系一整套解决方案,大幅提升研发效率,支撑全民养猫猫在手淘、猫客、支付宝等多个 APP 互通。借助客户端能力及 EVA 互动体系将性能与内存良好控制,让多数用户体验高清稳定的互动,实现 0 故障及秒开,同时星秀猫参与人数再创新高。这篇文章将主要从页面渲染基建、EVA 研发体系和全局稳定性方案 3 个方面,来具体阐述淘系互动前端团队是如何做到双11互动又快又好又稳的。
image.png

页面渲染基建

不知道大家有没有发现,今年的双11养猫互动(以下简称双11互动)页面打开特别快,具体可看下面与去年双11互动主页在 iPhone 11 PRO 机器手机淘宝上的主页加载对比视频。不仅如此,还有个明显的变化是以往互动页面的标配--进度条9027e752cfc24e2bbb54a8ac1c2da384.png没有了。

点击查看视频

互动主页加载对比,左:2019年双11,右:2020年双11,机型:iPhone 11 PRO

见多识广的你也许会问,是不是今年双11互动使用了 Native 版本?是不是今年双11互动使用了缓存方案?是不是今年双11互动也使用了预渲染技术?然而,答案是,都没有,今年双11互动与历年狂欢城一样,仍然是 web 页面,且资源全部走 CDN 无额外缓存。

那么,我们是如何做到如此顺滑的加载体验呢?这就要从 Solution 说起。

Solution 是天马搭建体系(https://zhuanlan.zhihu.com/p/137470317 )的概念,主要解决的问题是将模块+数据组合成页面,简单理解就是负责页面渲染 Layout。

自去年618起,淘系互动团队全部业务都开始迁移到天马搭建体系,Solution 也使用了官方推荐的通用 Solution。但是,通用 Solution 由于其通用性,冗杂了淘宝/天猫 60% 以上业务逻辑(粗略估计),体积大的同时易受其他业务影响导致稳定性风险高;而互动由于其业务特殊性,很多优化甚至稳定性保障方案的实现也需要在 Solution 层面进行定制。基于此,淘系互动团队定制了自己的页面渲染方案,即互动专用 Solution,这也是今年双11互动之所以那么快的核心原因。

得益于天马团队提供的新版 Solution 解决方案,既提供了标准化端渲染机制,又提供了基于插件进行业务定制的能力,还提供了产品化平台。互动专用 Solution 是在上述解决方案的基础上扩展实现,主要做了以下事情:

  • 精简基础依赖/逻辑,去除非必要依赖及非必要逻辑
  • 根据互动场景定制模块加载顺序,提供分批加载能力(当前主要是首屏/非首屏)
  • 提供数据处理能力,通过去除渲染无关字段实现数据自动瘦身
  • 内置基于客户端评分的稳定性保障方案,保障互动页面稳定性,详见下面稳定性方案章节
  • 增加资源及模块加载监控,保障稳定性
  • 集成互动通用能力,包括规范化 CSS/通用的渲染干预能力/常用的移动端调试方案/页面上下线能力等

image.png

EVA 研发体系

今年双11互动,非常多的用户反馈猫猫们太好看了、太萌了、特别可爱,很多人都纷纷来咨询小编是如何开发出来的。
image.png
接下来将重点阐述双11星秀喵加工厂--EVA 研发体系,TA 是淘系互动团队提供的从素材上传到端上渲染的互动研发的一整套解决方案,以引擎、框架、工具、平台为支点,致力于为广大前端带来简单舒适的互动研发体验。

EVA 研发体系,提供互动研发一条龙服务,我们是认真的

EVA Store:素材上传服务

大家看到的星秀喵,并不是3D模型,而是如假包换的2D骨骼动画。它使用 Spine制作,通过网格自由变形和蒙皮技术在视觉上呈现“3D轴”的偏转,应用此类技术的动画软件还有大名鼎鼎的 Live2D。在 Spine 强大动画创作的支持下,双11的星秀喵才有了“3D化”的动画化表现力。一个标准的Spine动画文件包含一张雪碧图、一份骨骼数据以及一份动画数据,那么,我们应该如何上传到 CDN 呢?

EVA 为了解决互动业务中常见且频繁的动画和模型素材,提供了一站式的素材上传服务 EVA Store,包括帧动画、雪碧图、DragonBones、Spine、音频等,这些互动素材的协议标准是由阿里巴巴经济体互动小组统一制定。
image.png

EVA JS:2D 互动引擎

互动引擎是互动研发的基础,一款好的互动引擎能大大降低研发成本,EVA JS 应运而生。EVAJS 是一款轻量级,用于开发互动游戏的前端框架。EVA JS 支持插件体系,所有的互动游戏能力都是由插件提供的。EVA JS 一方面能够让前端互动游戏开发更加专业,另外一方面帮助前端开发者无需深度学习互动游戏技术即可开发互动游戏。TA 的整体设计是以游戏行业最佳实践的 ECS 设计模式为基础,拆分核心功能和组件能力,按需使用。

image.pngEVA JS 引擎

值得一提的是,EVA JS 还提供了无障碍化的支持。以往,游戏区实现无障碍需要手动在图层上添加辅助 DOM 来指定无障碍内容。今年双11,EVA JS 研制了 Canvas 上的无障碍技术,能够在手机淘宝/支付宝客户端上自动识别无障碍对象上的交互事件,降低研发成本的同时,让广大有障碍人士也能全方位体验到撸猫的乐趣,真正做到了互动无障碍体验。

640 (16).gif
双11养猫无障碍体验

EVA JS 计划在2021年6月份前完成开源,了解更多,可参考 淘系前端互动引擎EVAJS架构与生态实现 。

Rax EVA:Rax 解决方案

素材和引擎都准备好后,就可以上手开始写代码了。市面上大多数的游戏引擎无法和 JSX、Hooks 结合在一起,这样,开发者就需要学习“两套框架”,再加上游戏引擎的学习成本也不低,整体上增加了开发门槛。为解决门槛高、上手难的问题,淘系互动前端团队设计了一套用于开发互动的 Rax 解决方案--Rax EVA,TA 是一个能够在Rax技术体系下,利用 EVA JS 的游戏研发能力,开发动画、游戏类场景的框架。它可以让开发同学用熟悉的 JSX 和 Hooks 语法编写动画、游戏场景的代码。

例如,我们把上一章节上传好的 Spine 动画显示出来(此处为示意版伪代码)


import {createElement, render} from 'rax';
import DriverUniversal from 'driver-universal';
import {Eva} from '@ali/rax-eva';
import Spine, {useSpineResource} from '@ali/rax-eva-spine';function App() {const catSrc = useSpineResource({image: 'https://gw.alicdn.com/tfs/TB1YHC8Vxz1gK0jSZSgXXavwpXa-711-711.png',altas: 'https://pages.tmall.com/wow/eva/b8597f298a5d6fe47095d43ef03210d4.atlas',ske: 'https://pages.tmall.com/wow/eva/b5fdf74313d5ff2609ab82f6b6fd83e6.json',});return (<Evawidth={750}height={1334}><scene><Spineresource={catSrc}animationName='idle'anchorX={0.5}anchorY={1}/></scene></Eva>);
}render(<App />, document.getElementById('root'), {driver: DriverUniversal,
});

另外,对于前端来说,DOM 和 CSS 有天然的排版能力,这也是它们的优势。而游戏引擎是通过图形引擎渲染的,并不具备 CSS 那样高级的排版能力。于是在整个游戏互动的项目里,即存在 Canvas 又存在 DOM+CSS,也就是所谓的混合开发。Rax EVA 也为这类混合开发提供了方便快捷的方式,在 EVA 组件内,使用background / hud 这两个原生标签划分了游戏区域Z轴方向的三层布局,在这两个标签内以及 EVA 组件外,任何DOM 标签或其他熟悉的 JSX 都可以照常使用。

 

image.png
互动项目分层最佳实践

EVA Ware:弹窗规模化生产

除了基础的游戏研发外,EVA 研发体系还提供了一系列的低代码工具或服务,其中表现尤为突出的就是在今年 618 互动中就表现优异的弹窗规模化生成方案(以下称 Super Modal)。

互动研发最大的工作量之一就是弹窗的开发,相比今年 618,今年双11互动弹窗数量更甚。得益于 Super Modal 在弹窗研发上的抽象,所有的弹窗样式都是在平台上简易拖拽复制生成,通过 DSL+Runtime 提供端上稳定的渲染服务。弹窗的样式、文案可以作为页面配置项快速修改,前端在开发弹窗功能时,不用过多关注弹窗的样式问题,专注于弹窗的显示、关闭逻辑即可。除此之外, Super Modal 还在今年 618 功能的基础上,增加了相对定位布局、自定义组件、弹窗队列管理器插件等功能,并提供了简单的项目管理能力,进一步降低了弹窗开发的成本。

image.png
image.png

了解更多,可参考 2020年618淘系技术分享-互动生产力进化之路。

全局稳定性方案

细心的同学会发现,今年双11互动主页动效特别多,除了开场视频外,养猫和比拼的主界面上每个区域都在各种动。你一定在好奇,为什么你没有感觉到卡或者出现闪退的情况呢?这一切的背后,除了手机淘宝客户端架构组底层升级外,也有全局稳定性方案在护航。

点击查看双11互动主页动效展示视频

互动场景中存在大量动效、视频,而过高的内存占用可能会引发客户端 crash 影响业务结果。一边是客户端需要更炫酷的玩法去支撑业务发展,一边是一些设备性能较差的用户反馈卡顿,如何让所有设备都能流畅的参与互动呢?比起不顾一切的上动效或是一刀切的砍玩法,显然存在一个更合理的选项--体验分级。淘宝技术质量团队提供了名为 Kite 的获取设备评分的统一降级 SDK,结合互动特性,如下图所示,我们将设备划分为 4 个等级,其中,容灾等级时页面将进入到一个异常兜底页面,用于应对一些低版本或者兼容性较差的机器场景。至此,我们完成了体验分级。

 

image.png
互动设备分级

接下来,就是针对不同设备等级的机型做不同降级方案,这也是互动的稳定性保驾护航重要的一环。基于客户端架构组提供的稳定性指标,我们需要整体考虑页面的内存、帧率、CPU 3 个指标,而动效、图片尺寸、游戏区画布尺寸、FPS 等配置则直接影响这 3 个指标的结果。然而,众所周知,在实际的开发过程中,对每张图片、每个动效做针对性的降级往往需要各种配置项,且人人参与,操作起来非常繁琐和耗时。因此,淘系互动前端团队在上面体验分级的基础上,通过 1 份静态全局降级规则 + 1 个运行时获取配置的稳定性保障 SDK,设计了一套完整的全局稳定性保障方案。

 

image.png
全局稳定性保障方案

正是这套稳定性方案,让双11互动在极大程度做到了高清互动、符合了架构组验收标准而且在线 22 天全程 0 故障。TA 让互动稳定性保障更加系统,也已经成为营销互动的标配。

总结展望

今年双11整体节奏从之前的“光棍节”到今年的“双节棍”,在这样变化的背景下,今年双11互动依然做到了参与人数再创新高。未来,我们希望完善 EVA 体系,通过不同的技术方案不断地优化我们的开发方式和生产关系,逐渐让更多的人来开发互动,实现“人人可开发,处处有互动”。
image.png

 

原文链接
本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitHub 遭抵制!AI 代码生成神器竟成“抄袭工具”?

整理 | 郑丽媛出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;上周&#xff0c;微软、GitHub、OpenAI 三方联手推出的 AI 代码生成神器 GitHub Copilot 一经官宣便引起巨大关注&#xff1a;试问哪个开发者不想要这么一位“虚拟程序员”来解放自己的双手&#xff1f…

阿里云性能测试工具PTS介绍

简介&#xff1a; 性能测试 PTS&#xff08;Performance Testing Service&#xff09;是具备强大的分布式压测能力的 SaaS 压测平台&#xff0c;可模拟海量用户的真实业务场景&#xff0c;全方位验证业务站点的性能、容量和稳定性。 阿里云 阿里云智能GTS-平台技术部-SRE团队 1…

php微信公众号的服务器配置,微信公众号服务器配置选项PHP示例代码

最近微信公众号遇到有点奇怪的问题&#xff0c;使用的是tp框架&#xff0c;之前配置都ok的&#xff0c;最近有需求重新填写url选项&#xff0c;可配置时一直显示token失败&#xff0c;解决方案&#xff0c;参考以下php示例代码来修改&#xff0c;同时最好把输出注释掉。最后通过…

Dubbo 3.0 前瞻系列 | 2020双11,Dubbo3.0 在考拉的超大规模实践

很多开发者一直以来好奇&#xff1a;阿里自己有没有在用Dubbo&#xff0c;会不会用Dubbo&#xff1f;在刚刚结束的双11&#xff0c;我们了解到阿里云今年提出了“三位一体”的理念&#xff0c;即将“自研技术”、“开源项目”、“商业产品”形成统一的技术体系&#xff0c;最大…

OpenStack管理界面开源啦!

日前&#xff0c;木兰开源社区TOC召开了孵化项目审议会议&#xff0c;其项目分别覆盖数据库、大数据处理、网络、流媒体、云计算等关键领域。其中&#xff0c;浪潮数据纯自研产品Skyline成功入围。 自开源至今&#xff0c;OpenStack常被诟病的一点是原生界面不太好用&#xff…

厂商 push 不通排查指南

简介&#xff1a; MPS 集成多个三方渠道&#xff0c;保障 push 使命必达的必须知道的几件事。 为了提升「MPS 消息推送」的推送的到达率&#xff0c;mPaaS 集成了华为、小米等厂商的推送功能&#xff0c;从而有效地提高用户留存率&#xff0c;提升用户体验。在日常运维过程中&a…

Hologres助力飞猪双11实时数据大屏秒级响应

简介&#xff1a; 本文重点介绍Hologres如何落地阿里巴巴飞猪实时数仓场景&#xff0c;并助力飞猪双11实时数据大屏3秒起跳&#xff0c;全程0故障。 摘要&#xff1a;刚刚结束的2020天猫双11中&#xff0c;MaxCompute交互式分析&#xff08;下称Hologres&#xff09;实时计算F…

燧原科技首发国内第二代人工智能训练芯片“邃思2.0”

7月7日&#xff0c;燧原科技发布第二代人工智能训练产品——“邃思2.0”芯片、基于邃思2.0的“云燧T20”训练加速卡和“云燧T21”训练OAM模组&#xff0c;全面升级的“驭算TopsRider”软件平台以及全新的“云燧集群”&#xff0c;成为国内首家发布第二代人工智能训练产品组合的…

高德最佳实践:Serverless 规模化落地有哪些价值?

作者 | 何以然&#xff08;以燃&#xff09; 导读&#xff1a;曾经看上去很美、一直被观望的 Serverless&#xff0c;现已逐渐进入落地的阶段。今年的"十一出行节"&#xff0c;高德在核心业务规模化落地 Serverless&#xff0c;由 Serverless 支撑的业务在流量高峰期…

Java全能手册火了!Redis/Nginx/Dubbo/Spring全家桶/啥都有

前言本文是为了帮大家快速回顾了Java中知识点&#xff0c;这套面试手册涵盖了诸多Java技术栈的面试题和答案&#xff0c;相信可以帮助大家在最短的时间内用作面试复习&#xff0c;能达到事半功倍效果。本来想将文件上传到github上&#xff0c;但由于文件太大有的都无法显示所以…

存储计算解耦合,构建中国人英语语音数据库

简介&#xff1a; 通过阿里云为流利说量身打造的数据湖解决方案&#xff0c;解决了流利说多种应用的各类数据的统一存储&#xff0c;帮助流利说构建数据规模高达上千亿的“中国人英语语音数据库”。 公司介绍 流利说是世界领先的科技驱动的教育公司&#xff0c;作为智能教育的…

Hologres+Flink流批一体首次落地4982亿背后的营销分析大屏

简介&#xff1a; 本篇将重点介绍Hologres在阿里巴巴淘宝营销活动分析场景的最佳实践&#xff0c;揭秘FlinkHologres流批一体首次落地阿里双11营销分析大屏背后的技术考验。 概要&#xff1a;刚刚结束的2020天猫双11中&#xff0c;MaxCompute交互式分析&#xff08;下称Hologr…

Service Mesh微服务熔断、限流的骚操作

在微服务架构中&#xff0c;随着服务调用链路变长&#xff0c;为了防止出现级联雪崩&#xff0c;在微服务治理体系中&#xff0c;熔断、限流作为服务自我保护的重要机制&#xff0c;是确保微服务架构稳定运行的关键手段之一。那么什么是熔断、限流&#xff1f;在传统Spring Clo…

pca主成分分析用matlab实现,PCA (主成分分析)详解 (写给初学者) 结合matlab

一、简介PCA(Principal Components Analysis)即主成分分析&#xff0c;是图像处理中经常用到的降维方法&#xff0c;大家知道&#xff0c;我们在处理有关数字图像处理方面的问题时&#xff0c;比如经常用的图像的查询问题&#xff0c;在一个几万或者几百万甚至更大的数据库中查…

微服务最佳实践:MSE 微服务引擎

简介&#xff1a; 微服务引擎 MSE&#xff08;Microservice Engine&#xff09;是一个面向业界主流开源微服务框架 Spring Cloud 和 Dubbo 的一站式微服务平台。其由四个主要部分组成&#xff1a;微服务治理中心、微服务注册中心、微服务配置中心、微服务网关。 MSE 是什么 微…

异地多活之企业架构案例

简介&#xff1a; 异地多活之企业架构案例 1. 前言 多活容灾 MSHA&#xff08;Multi-Site High Availability&#xff09;&#xff0c;是在阿⾥巴巴电商业务环境演进出来的多活容灾架构解决⽅案&#xff0c;可以将业务恢复和故障恢复解耦&#xff0c;有基于灵活的规则调度、跨…

WAIC|高精准、低成本,九章云极DataCanvas突破AutoML难题

2021 年世界人工智能大会&#xff08;WAIC&#xff09;于 7 月 8 日 在上海世博中心拉开帷幕。九章云极DataCanvas董事长方磊受邀参加由世界人工智能大会组委会主办、机器之心承办的“2021 WAICAI开发者论坛”&#xff0c;并发表“Hypernets&#xff1a;自动化机器学习的基础框…

matlab样条插值如何用,三次样条插值matlab实现

%三次样条差值-matlab通用程序 - zhangxiaolu2015的专栏 - CSDN博客 https://blog.csdn.net/zha%【图文】三次样条插值算法详解_百度文库 https://wenku.baidu.com/view/14423f2e1711cc7931b716clcclearxinput(请按照格式[x1,x2,x3...]格式输入yf(x)函数已知点的横坐标xi); %三…

在阿里淘系6个月能有哪些收获成长?

本文作者&#xff1a;刘博文&#xff08;Berwin&#xff09;&#xff0c;花名“玖五”&#xff0c;畅销书《深入浅出Vue.js》作者、知名技术博主、讲师、阿里巴巴淘系技术部前端技术专家&#xff0c;现负责淘系618、双11等超大型营销活动主会场的终端渲染架构。 回想起年初刚来…

matlab 向前欧拉公式,向前欧拉公式在Matlab解微分方程初值解的问题

向前欧拉公式在Matlab解微分方程初值解的问题0fuqilin1202013.07.04浏览527次分享举报用向前欧拉公式(10.8)求解初值问题&#xff0c;dy/dx-3x8x-7,y(0)1,分别取n10,n100&#xff0c;并将计算结果与精确解作比较&#xff0c;写出在每个子区间[xk,xk1]上的局部截断误差公式&…