本期内容
背景
目标
技术方案
业务效果
远景规划
随着电商app不断精细化的设计, 各种标签投放到app的各个位置(如下图:某app中品牌, 退货包运费, 假一赔十, 7天无理由退货)
如何全局,高效管理好这些标签投放成为了一个难点.
1 统一全局业务标签逻辑方便运营同学维护
2 业务逻辑层不做重复开发,复用功能,业务方零成本接入。
运营后台提供对应的标签实体的信息维护, 以标签组件SDK的形式接入其他业务方的应用, 统一调用sdk提供的api, 以位置埋点的形式透出给app/h5 如下图所示:
各个应用接入标签sdk
标签组件采用的sdk承载业务处理, sdk各个功能模块图如下
功能模块
标签实体
标签属性中位置映射关系 标签所属页面(位置1)
标签所属卡片(位置2 )
标签所属卡片位置(位置3)
如图所示假一赔三的具体标签位置为 REC:ITEM_CARD:PIC_BOT
标签查询过程:
1 业务方应用传入SDK对应位置, 业务ID信息,
2 标签SDK查询标签中心,获取该位置上所有的全局业务标签信息
3 SDK对所有的标签进行分类聚合
4 标签中心返回对应位置上的所有的全局业务标签信息
5 不同类型的标签查询不同的业务应用
6 返回是否有该类型的标签
7 返回数据到业务调用方
具体时序图如下
1 保证各个标签业务相互不受影响, 由于标签底层承载的业务不同, 每个业务rt,qps 都不一样,为了保证多个业务调用之间互相不影响,减少rt等, 尽量做到不影响主业务的正常运行, 所以采用了多线程处理
2 在处理多个位置查询的场景也采用线程隔离手段,保证每个位置之间相互不影响, 查询的时候如果是单个position则直接用业务线程调用,如果是多个position或者页面来请求的时候,则用的是executor线程池
如下图:
缓存设计
由于标签配置数据量不大, 采用的是本地缓存方案, 本地缓存采用的caffine, 刷新策略是写入一段时间后自动刷新, sdk组件内投放标都是查缓存的(标签配置数据借助apollo配置变更监听事件刷新,所以配置生效的实时得到保证), 查询投放标配置信息基本不耗rt, 尽量满足业务对rt的要求, 另外店铺的标签数据也是部分存放本地缓存.
1 位置监控 每个位置对应的rt ,qps, 限流等
2 页面监控 每个页面如(推荐瀑布流,商详等)对应的rt ,qps, 限流等
3 业务监控 每个位置可以包含多个标签, 每种标签的业务可能不一样, 监控每种业务有助于我们排查业务rt,qps引起的问题
4 各个指标报警的支持
具体某监控如下
1 业务运营有了一个更好的标签投放营销工具, 通过全局标签控制, 能快速将营销标签实时投放到线上.
2 业务方仅需要知道如何使用全局业务标签配置管理工具, sdk组件屏蔽了业务细节, 业务方不用关心全局业务标签底层细节, sdk统一维护开发,节省了业务方开发时间.
1 标签组件客户端监控, 标签组件自身提供升级提醒, 强制升级的保障
2 业务编码采用动态化方式编码下发,动态监听, 实现对新功能的无感升级