XView 架构升级之路
作者:京东零售 胡本奎
一 背景
1 是什么
XView是一个透明的塑料袋(容器),基于通用的webview框架改造而来,通常用于大促弹窗等营销场景,展现形式如下图:
2 痛点
在实际的开发使用中XView存在产研过程效率低,曝光率不高的2个核心痛点。
1,产研过程低效: 在研发过程中比较繁琐,不仅需要前端开发弹窗内容还需要客户端接入XView SDK以及服务端数据配置,同时依赖发版,导致交付周期长,重复工作多。
2,曝光率不高: 升级前的XView 加载流程比较长,导致曝光率不高。
3 升级
为了解决以上XView 的诸多痛点,我们将XView 弹窗进行了3个时代的升级,具体如下:
1,客户端H5弹窗组件时代: 传统的xview 只支持h5链接,这样弹窗在加载过程中存在加载速度慢,性能差,曝光率低等问题。
2,弹窗配置化时代: 通过配置弹窗可以不仅支持h5链接,同时支持图片,Gif,视频,Lottile等多种类型的素材,通过SDK 的方式,提供统一的弹窗控制,保障了弹窗的稳定性,弹窗可以通过快速配置的方式最快可以做到2个小时内测试,交付上线,同时XView CMS提供数据中心查询,可以查询线上弹窗实时的数据动态,包括曝光量,点击量,点击率等弹窗数据,同时可支持生成数据报表,但是配置繁琐,概念多,理解成本高造成“客服”工作量大,同时内容生产能力弱,不能覆盖更上游的内容生产环节,提效上限有限。
3,弹窗可视化搭建时代: 采用原生搭建的方式,尽可能的使用原生方式渲染,这样提高了曝光率,从配置化时代进入页面弹窗搭建时代,丰富了弹窗的触发场景,新增了返回,摇一摇等多种触发形式。
二 升级方案
XView 的升级方案主要从搭建流程,互斥管理,预加载升级, 页面管理以及接入这几方面介绍。
1 搭建流程
XView 搭建整个流程包括4个阶段,CMS 弹窗搭建,策略配置,客户端展示以及数据采集:
1 弹窗搭建: 由运营或产品在XView 的CMS搭建平台上通过随意拖拽组件的方式完成弹窗的内容搭建,在搭建过程中XView CMS通过低代码引擎生成弹窗页面的描述文件Schema(json),导出终端代码搭建产物(出码),在点击弹窗保存时,搭建产物经协议转换,映射为通天塔DSL,生成通天塔可渲染的数据模版,这套数据模版发布在OSS平台上,最终客户端通过通天塔灵活化SDK进行弹窗内容渲染。
2 策略配置: 在弹窗模版生成的同时,会对弹窗的弹出策略进行配置,对于频次策略,可以通过客户端的本地频次控制也可以通过服务端曝光频次控制,同时支持定向的策略,包括版本的区间,生效时间,白名单,黑名单,定向人群等策略的配置下发。
3 客户端展示: 在CMS的配置完后,客户端通过通天塔灵活化SDK完成弹窗内容渲染,弹窗的触发方式包括进入页面自动弹出和手动弹出等弹出触发方式,为了提高弹窗的曝光率通过对资源预进行预加载。
4 数据采集: 为了验证和提高弹窗的曝光率和点击率,XView 提供一整套的数据采集和展示方案,通过数据埋点以及异常埋点的分析建模,保障了弹窗曝光的成功率。
2 互斥管理
同一个页面可能同时存在多个弹窗,每个弹窗的弹出先后顺序,优先级也可能不一样,因此需要对弹窗进行互斥管理,互斥管理的流程如下:
1 同一个时刻互斥(同时触发优先级才有用),高优先级的弹过,才允许弹出低优先级的。
2 互斥组号相同的时候,对于排他设置,设置不排他,按天排他,有效期内排他,当两个弹窗同时参与排他,那么同一个时段,一个弹过,另一个就不会弹出了。
3 预加载升级
H5 时代: 手动预加载,预加载成功率不高。
配置时代: 支持图片和视频以及webview预加载,在App启动时触发预加载,可以配置提前多少天缓存以及缓存的天数,预加载成功率不高,影响App启动性能。
搭建时代: 支持图片,视频,webview,Lottie,DSL 文件等预加载,在App启动或者进入目标页面时会触发预加载,预加载的元素的优先级会根据权重,优先级组合条件进行排序决定预加载先后顺序。
4 页面管理
原生页面: 对只有Activity只配置Activity 的路径,对页面中含有Fragment或者多tab的页面,同时配置Activity 和 Fragment 的路径进行页面标示。
H5页面: 通过页面Url 链接中 host 和 path 进行匹配标示。
RN页面: 通过RN 的moduleName进行匹配标示。
通天塔页面: 通过活动acitivityId进行标示匹配或者和H5页匹配规则保持一致。
Flutter页面: 待完善。
动态化搭建页面:待完善。
5 接入:低成本
三 升级后框架
升级后XView包括外部依赖,CMS后台,CMS搭建引擎,客户端四个部分。
外部依赖: 包括对通天塔,水滴,投放,Switchquery开关平台,子午线,鲁班,果盾屏蔽系统等系统的依赖。
CMS后台:处理数据库数据,低代码引擎搭建产物和通天塔灵活化协议的转换,用户权限的设置以及搭建过程中上传图片,视频等文件处理,业务方接入发布审批,以及第三方数据源的编排等。
CMS搭建引擎:管理,配置弹窗,复制,删除弹窗。对弹窗内容的搭建目前支持关闭按钮,内嵌网页,以及布局等单例组件,还支持热区,图片,文本,视频,Lottie等基础组件的搭建。同时包含实时UV数据,弹窗性能等指标数据的建设。
客户端:包括客户端接口的处理,客户端SDK对触发时机,触发策略,元素预加载策略,事件协议处理等;对不同技术栈页面上触发弹窗的处理;对弹窗容器动效,交互处理;通天塔灵活化对弹窗内容的渲染等。
四 数据中心
数据中心支持分平台数据实时统计,包括曝光总量,关闭点击量,以及部分可点击元素的点击总量,同时支持点击率,曝光率等数据指标的统计。
****通过饼状图直观的展示弹窗的点击率数据,建立漏洞模型展示弹窗的曝光率等数据指标,未来可通过对用户人群等数据分析,提高弹窗的业务价值。
弹窗实时数据查询,让业务方能实时了解弹窗数据情况。
五 现状和未来规划
1 现状
目前赋能业务数量10+ ;覆盖首页,秒杀,新品,互动(领京豆),短视频,发现好货等业务,弹窗生产耗时可缩短到半个小时以内。
2 未来规划
XView 未来主要从技术赋能和业务价值两方面规划
技术赋能: 降低运营和产品的学习成本和操作门槛,同时提供更强大的内容生产能力,可以使得部分H5页通过原生搭建的方式实现,同时能做到自助上线,精准投放达到降本增效的目的。
业务价值: 尽可能采用原生渲染,提升曝光率,支持更多的素材类型和展现形式,包括动态数据,事件绑定等灵活化交互,同时支持更丰富的触发形式,包括返回,摇一摇,下拉刷新等多种触发场景,引入动画交互,提升点击转化达到提升业务价值的目标。
XView 架构升级之路的更多相关文章
- CODING 代码托管架构升级之路
本文为 CODING 创始团队成员王振威在『CODING 技术小馆:上海站』的演讲实录. CODING 技术小馆,是由国内专业的一站式软件服务平台 CODING 主办的一系列技术沙龙.将邀请数位业内知 ...
- 【IT名人堂】何云飞:阿里云数据库的架构演进之路
[IT名人堂]何云飞:阿里云数据库的架构演进之路 原文转载自:IT168 如果说淘宝革了零售的命,那么DT革了企业IT消费的命.在阿里巴巴看来,DT时代,企业IT消费的模式变成了“云服务+数据”, ...
- 美团点评基于MGR的CMDB高可用架构搭建之路【转】
王志朋 美团点评DBA 曾在京东金融担任DBA,目前就职于美团点评,主要负责金融业务线数据库及基础组件数据库的运维. MySQL Group Replication(以下简称MGR),于5.7.17版 ...
- QPS从0到4000请求每秒,谈达达后台架构演化之路(转载)
https://blog.csdn.net/czbing308722240/article/details/52350219 QPS从0到4000请求每秒,谈达达后台架构演化之路 达达是全国领先的 ...
- 物联网架构成长之路(31)-EMQ基于HTTP权限验证
看过之前的文章就知道,我之前是通过搞插件,或者通过里面的MongoDB来进行EMQ的鉴权登录和权限验证.但是前段时间发现,还是通过HTTP WebHook 方式来调用鉴权接口比较适合实际使用.还是实现 ...
- 从游击队到正规军:马蜂窝旅游网的IM系统架构演进之路
本文引用自马蜂窝公众号,由马蜂窝技术团队原创分享. 一.引言 今天,越来越多的用户被马蜂窝持续积累的笔记.攻略.嗡嗡等优质的分享内容所吸引,在这里激发了去旅行的热情,同时也拉动了马蜂窝交易的增长.在帮 ...
- 阿里云云开发平台助力风变科技Serverless架构升级实战
阿里云云开发平台助力风变科技Serverless架构升级实战 背景 风变科技 一个希望通过技术去推动下一代基础教育的组织.旗下产品包括第一代的熊猫书院(读书类产品).第二代的熊猫小课(泛学科综合学习平 ...
- QQ音乐PB级ClickHouse实时数据平台架构演进之路
导语 | OLAP(On-Line Analytical Processing),是数据仓库系统的主要应用形式,帮助分析人员多角度分析数据,挖掘数据价值.本文基于QQ音乐海量大数据实时分析场景,通过Q ...
- 架构师之路-redis集群解析
引子 上篇<架构师之路-https底层原理>里我提到了上面的整体视图,文章也介绍了想要真正能在工作中及时正确解决问题的基本功:原理理解透彻.今天以redis集群解析为例介绍一个及时敏锐的发 ...
- Oracle打怪升级之路二【视图、序列、游标、索引、存储过程、触发器】
前言 在之前 <Oracle打怪升级之路一>中我们主要介绍了Oracle的基础和Oracle常用查询及函数,这篇文章作为补充,主要介绍Oracle的对象,视图.序列.同义词.索引等,以及P ...
随机推荐
- socket模块/TCP协议/黏包处理
socket模块 如果我们需要编写基于网络进行数据交互的程序 意味着我们需要自己通过代码来控制我们之前 所学习的OSI七层(很繁琐 很复杂 类似于我们自己编写操作系统) socket类似于操作系统 封 ...
- 当 xxl-job 遇上 docker → 它晕了,但我不能乱!
开心一刻 某次住酒店,晚上十点多叫了个外卖 过了一阵儿,外卖到了 因为酒店电梯要刷卡,所以我下楼去接 到了电梯口看到个模样不错的妹纸 我:是你么? 妹纸愣了下:嗯! 于是拉上进电梯回房间,正准备开始呢 ...
- 有备无患!DBS高性价比方案助力富途证券备份上云
"某中心受病毒攻击,导致服务中断,线上业务被迫暂停" "某公司员工误操作删库,核心业务数据部分丢失,无法完全找回" "由于服务器断线,某医院信息系统瘫 ...
- AVM 拖动组件 movable-view 介绍
应用开发中拖动功能是比较常见的 ,如滑动解锁,滑动验证码,实现一些小游戏,少儿编程中常见. avm.js 是多端开发框架,一套代码可同时编译为APP .小程序.h5. avm 框架中实现拖动功能非常简 ...
- pip19.2.3升级到20.3.3版本升级失败问题
2021-01-06 macOS版本:11.1 安装pip: sudo easy_install pip 话不多说,直接上问题 一行命令搞定 终端:sudo pip install --upg ...
- C Primer Plus (6.16) 編程練習
/*C Primer Plus (6.15) 6*/ 1 #include<stdio.h> 2 int main() 3 { 4 int i,j; 5 for(int i=0;i< ...
- 使用 flex布局 制作携程网首页
1. 技术选型 2. 搭建相关文件夹结构 3. 引入视口标签以及初始化样式 4. 常用初始化样式 5. 首页布局分析以及搜索模块布局 index.css /*搜索模块*/ .search-index{ ...
- 洛谷 P3137 [USACO16FEB]Circular Barn S
题目链接 本蒟蒻的第一篇题解,写得不好请指出,敬请谅解 题意: 有\(n\)头奶牛,分布在一些房间,某些房间可能有多头牛,要让这些牛按顺时针移动,求使每一个房间刚好有一个奶牛的最小花费 花费计算:如果 ...
- you-get下载B站视频
you-get下载B站视频 库存 you-get介绍 https://github.com/soimort/you-get you-get是一个命令行工具,可以下载知名网站的视频 支持的网站有 ht ...
- Vue框架-03:JS的几种循环方式,Key值的解释,数组/对象的检测与更新,input事件,v-model数据双向绑定,过滤案例,事件修饰符,按键修饰符,表单控制
目录 前端开发之Vue框架 一.JS循环的几种方式 1.v-for可循环的变量 2.js的循环方式 二.Key值的解释 三.数组.对象的检测与更新 四.input事件 五.v-model双向数据绑定 ...