作者:杜仲舒(花名:神天)淘宝订阅开发,现次要负责淘宝订阅业务,主研内容特色了解。
简介:通过本文咱们将会介绍,Hologres 共享集群如何助力淘宝订阅零碎进行精细化经营。
急需精细化内容经营的淘宝订阅
淘宝订阅是基于 C - B 关系的用户 / 商家双私域产品,用户侧与举荐 - 猜你喜爱互补,构建订阅 - 我的喜爱心智。商家侧与商家深度联动,结构化,自动化引入优质供应,帮忙商家更好地经营粉丝会员。
初期构建了从商家后盾内容公布,到算法散发举荐,再到前台生产和数据回收的残缺链路;前期为了精细化经营,晋升内容举荐体验,开始摸索内容特色,搭建内容特色圈选零碎。
1、内容在举荐散发时须要应用特色
• 优质内容圈选:在手淘订阅前台进行内容散发,反对多种维度的特色筛选形式。
• 低质内容过滤:涉黄涉政和无意义内容,通过特色筛选来进行过滤。
2、内容经营时须要应用特色圈选
• 核心内容投放展现:经营将筛选一批外围深度经营内容进行前台投放,通过圈选零碎,依照不同的维度进行筛选,失去的内容用于前台的内容聚合页面
• 大促内容气氛增强:经营圈选失去一批流动内容,前台透出时会对其进行大促气氛增强
• 单干商家流量歪斜:通过圈选零碎,圈出一批外围单干商家的内容,在手淘前台内容展现时进行流量歪斜。
订阅内容特色圈选零碎引擎选型
内容圈选是对现有内容的的一个筛选操作,圈选内容指标维度多,数据量大,对数据预览也有肯定要求,因而须要整体设计一个计划,来使得圈选内容更加精准。另外,技术上也须要思考到将来的扩展性,使得后续减少数据指标筛选更加不便。
以后订阅圈选零碎的架构设计
上面是内容特色生成和订阅圈选零碎的设计方案。
- 将圈选过程形象为内容 id+ 关联 id+ 多维度指标筛选,失去筛选后的指标内容 id 的过程;
- 将圈选操作作为一个蕴含一批内容的流动实例的创立过程;
- 将可圈选信息配置化成筛选项 schema;
-
将理论过滤条件值作为筛选项 value。
因而,就能够将问题转变为基于筛选项 schema 和筛选项 value,按不同指标过滤,进行数据查问的操作。引擎选型外围诉求:灵活性 & 高性能
现有圈选零碎曾经反对了配置化,能够自定义数据源和指标进行圈选。圈选过程中,多个筛选项翻译成可执行查问语句的过程就是圈选引擎最外围的局部。筛选引擎须要对不同的筛选项映射到不同的表中的字段,生成可执行语句,再在筛选引擎中进行执行失去筛选后果。基于业务场景,咱们总结出对筛选引擎的外围诉求如下:
• 接入简略,升高筛选可执行语句翻译的复杂度
• 性能和稳定性保障,圈选的逻辑追随经营策略变动,须要反对简单查问疾速响应。
• 反对多变的特色字段增加,具备肯定的灵活性。
通过在阿里团体内外的大量调研,并最终在几款产品之间做了具体的比照,具体如下:
计划比照
计划比照 | MaxCompute | Hologres 共享集群 |
---|---|---|
灵活性 | 个别,可多表关联查问,需指定表空间 | 高,可聚合到同一空间多表关联条件查问 |
老本 | 低 | 中,无需数据导入导出就能间接查问 |
查问速度 | 个别单次查问 15s 以上 | 亿数据量级,单次查问秒级 |
通过 Hologres 集群搭建的订阅零碎
通过调研和测试,最终抉择了 Hologres 集群作为订阅零碎的计算引擎。上面将会介绍订阅零碎基于 Hologres 集群的最佳实际。
Hologres 集群:更少的数据挪动 + 更快的查问
1、应用成本低
• 疾速接入:Hologres 共享集群只需建设实例疾速应用,能够不便业务疾速入门,根本满足了大部分应用场景。当业务倒退有须要的时候,能够再申请独立集群并迁徙,这一点在团体泛滥引擎中是比拟敌对的。订阅业务也是在初期基于公共集群搭建,前期逐渐开始应用独立集群。
• 无缝开发:Hologres 所反对的 SQL 查问语法和常见的 SQL 查问基本一致,根本无缝应用。可视化界面反对一键同步表构造性能,尤其适宜表构造常常变动的同学。
• 缩小数据挪动:Hologres 人造反对通过表面形式读取存储在 MaxCompute 多个 project 的数据,这样就能够聚合来自不同 project 的离线数据,升高了查问的复杂度,无需数据导入导出就能间接查问,也升高了存储老本。
2、查问效率高
• 相比于 MaxCompute 的查问,性能晋升很高。通过屡次测试:数据量亿级别,表面查问简单语句(蕴含多表 JOIN)耗时约为 8 - 9 秒;表面单表筛选查问耗时在 2 秒左右。适宜用于离线 / 准实时查问场景。内表查问约为 60ms,可用于在线查问。
• 通过反对 UDF/ 表达式下推,来实现用户自定义的 UDF 计算;将表达式下推能够缩小无用的数据传输带来的开销,进一步晋升性能。
通过 Hologres 搭建订阅零碎最佳实际
通过 Hologres 共享集群搭建的订阅圈选零碎流程如下图所示:
经营只须要在后盾圈选页面勾选筛选项和填写筛选值,圈选零碎将会主动生成 Hologres SQL 语句(如下示例)并在 Hologres 中执行获取数据,最终将数据返回到前端,并进行前台投放。经营再依据投放成果一直优化圈选计划,晋升圈选成果,达到更加精细化经营的目标。
整个过程,不须要数据在各个系统之间的导入导出,仅通过页面点击的形式,就能转化为 SQL 进行计算。同时能够依据业务逻辑调整圈选内容,简单的 SQL 也能疾速高效的计算出想要的圈选数据后果,节约获取数据的工夫。使得整个链接变得十分的简略高效。
SELECT feed_id
FROM qn_xxx_provider AS a
WHERE a.xxx_pv > 30000
AND a.xxx_pctr > '0.1'
AND a.last_publish_time >= '2022-06-17 08:00:00'
AND a.biz_xxx_code = '111'
AND a.ds = MAX_PT('xxxxxx_table')
AND CAST(a.owner_xxx_id AS VARCHAR) IN (SELECT b.domain_xxx_id FROM xxxxxxx_table AS b WHERE b.rule_type = 12 AND b.channel_xxx_id = 137 AND b.dataset_xx_id = xxxxx AND b.ds = MAX_PT('xxxxx_odps_channel') )
and a.feed_id in (SELECT feed_id from xxxxx_submission_feed_hh where activity_id = 222 and approval_status=1 and ds = MAX_PT('xxxxx_submission_hh') and hh = '13')
;
业务价值
通过 Hologres 共享集群搭建的淘宝订阅零碎,撑持了 1000+ 场经营圈选流动工作,反对了双 11、618、新权势周等多场大促流动,撑持了订阅玩搭场景等的多个二级页面配置,简化了订阅零碎的搭建,无需数据导入导出就能间接减速离线数据,升高了经营的上手老本,能让业务更加高效的专一于业务增长。
在将来,咱们也将会继续应用 Hologres 来丰盛订阅零碎的性能,以此来放弃业务的高速增长,咱们心愿圈选零碎可能:
• 反对更实时的特色:Hologres 内表性能更优越,将实时特色导入到 Hologres 内表中,反对实时特色的查问
• 升高调优 GUC 参数的应用,例如:set hg_foreign_table_max_partition_limit =128;(调整单次 query 拜访表面分区数),冀望能够更好的产品化能力解决,升高 GUC 参数的应用。
作者:杜仲舒(花名:神天)淘宝订阅开发,现次要负责淘宝订阅业务,主研内容特色了解。