
知乎舰桥平台是一站式内容&用户&创作者管理、运营、分析平台。它集筛选、打包、分析、监控、营销、投放、干预等多种能力,专注于内容运营、内部营销、创作者运营、内容供应链、数据中心和内容分层运营等场景。为市场感知与前瞻预判、内容和创作者生态调节、头部创作者关系维护、营销和促进公司业务发展,知识分享和交流创造无限可能。上篇文章介绍了舰桥产品体系的内容运营平台建设实践,本篇文章将深入探讨知乎舰桥平台内部营销平台的痛点问题以及基于 Apache Doris 的解决方案与性能优化策略。
了解内容营销平台业务场景
这 3 个图分别为营销活动的话题页、落地页和对应的玩法(目前的这个活动是任务积分兑换玩法),与此同时连同宣传页、资源投放和对应的活动监控就形成了完整的内部营销的业务能力,这就是内部营销平台面对的业务场景。

01 内部营销的目的
目前我们接触的内部营销场景,无非是达成以上目标,促进用户增加、促进用户消费、促进内容生产、促进问题生产、促进创作者变现。促进领域 DAU 增加:这部分通过活动的手段,定向激发用户对领域内容产生阅读消费的兴趣等,从而增加领域 DAU。其中用户来源有两种,一方面是知乎用户对该领域产生兴趣,另一方面可以借助活动让非知乎用户成为知乎用户并对该领域产生兴趣。 促进内容生产(促进创作者增加):这部分是通过活动的手段,定向激发用户生成优质内容,如回答、短内容等。 促进创作者变现:创作者是内容生态的重要组成部分,支持并激励他们创作并从中盈利,是保持内容生态的活力和吸引力的重要方式。
02 营销和用户&创作者的生命周期的关系

03 内部营销的闭环逻辑
从上述观察,内部营销的本质就是抓住用户生命周期变化的路径,通过刺激、激励、营销等多种,让用户从一个生命周期的阶段,扭转到另一个生命周期的阶段。这样做一方面是通过激励手段快速改变用户行为,另一方面也是借助活动将社区的导向传递出去。与此同时,做活动也能创建一种适合分享的讨论氛围,将外部优质创作者引入参与讨论。最后通过活动定向促产内容,通过内容挖掘新的创作者。
达成以上目标的过程内部营销简化后可以描述为:通过某种触达渠道进行推广,针对目标受众,使用某种激励或营销手段,促使用户或创作者达成某个转换目的。所以触达渠道、目标受众和激励或营销手段就组成了三位一体的内部营销主逻辑。
产品功能概念

01 CDP(客户数据平台)
人群圈选:在营销过程中,我们经常需要对特定的人群进行定向投放。人群圈选就是通过对用户数据分析,选出具有特定行为或特性的客户群体。根据不同的营销目标,按照地理位置、流量行为、购买行为、兴趣爱好等多种标准来进行圈选。 人群洞察:在圈选出特定人群后,人群洞察功能可以对这些人群进行深度分析。通过数据挖掘,可以了解这个人群的行为习惯、偏好、阅读兴趣等诸多有价值的信息,为制定有效的营销策略提供支持。
02 活动平台
活动平台是进行营销活动设计和运营的地方。通常会包含活动策划、执行和分析三大步骤。
活动搭建:活动搭建是指定制化设计营销活动的过程。可以根据公司的市场策略和目标客户群体,选择合适的活动形式,如瓜分获得盐粒、完成任务抽大奖、优惠券发放等,并在平台上完成活动设置。 活动玩法:活动玩法是指在活动中增加的吸引人的元素,以提高用户的参与度和活动的影响力。例如,可以设置签到抽奖、签到获奖、答题赢奖品等吸引人的环节。 抽发奖:对于涉及奖励发放的活动,抽发奖能自动抽选、发放、瓜分和兑换奖品。这样不仅能降低手工发放的错误率,提高工作效率,而且还可以增加用户参与活动的积极性。 权益:对于通过活动获取的权益,平台可以清晰地展示并发放给用户,让用户了解自己能享受到的优惠和服务,直接看到获得权益的流水,同时这个系统也会对总体权益发放金额做资金管理。 落地页:落地页是活动的展示页,一般会包含活动的详细信息,如活动规则、活动期限、奖品内容、活动玩法等。落地页的设计直接影响用户对活动的认知和参与积极性。
03 内部投放平台
内部投放平台是将设计好的营销活动推送给用户的平台,包括但不限于资源位投放、信息流内容投放、主动触达等。
资源位投放:资源位投放是以资源位的视角,如创中弹窗、首页金刚位等,针对目标资源位进行定向曝光的投放渠道。 信息流内容投放:信息流内容投放主要是依托于推荐引擎,将内容面向不同的受众通过推荐策略的方式在信息流中展示给用户。 主动触达:主动触达是通过系统发送消息、私信等,直接推送给用户,通常是以推送通知、私信,也包括短信等形式存在,比如促销活动的通知、优惠券的发放消息等。
业务架构

业务能力层:这里是内部营销平台的核心业务能力,主要包括 CDP、活动平台、内部投放平台和内部营销分析&诊断。 共享服务层:这里是为了搭建上面的业务能力,所抽象出来的通用共享服务,避免在技术上和业务上重复造轮子的共享服务。 业务模型层:这里主要是隔绝了接入层和业务层,将外部的各类数据和 RPC 抽象成在内部通用的数据模型,内部开发只理解内部模型,接入层只理解如何将物理原始事实完成接入,提高了平台开发的效率。 外部接入层:这里集成了多种外部接口和协议的接入工具,以及提供低成本快速接入新的业务事实的脚手架,降低接入成本,提高接入效率。
左右滑动查看架构图
挑战及难点突破
01 活动平台难点突破
任务达标 -> 获得积分:可靠事件队列 + 幂等 + 最终一致

积分消耗 -> 获得奖励 -> 奖励到付:TCC

活动平台中存在的几个子系统:任务框架、瓜分框架、抽发刮兑奖模块、用户奖品模块、权益模块。其中最核心的一个工作是,在任务达标后产生的任务完成记录,任务完成后在用户奖品中的获得奖励记录和奖励实际下发到用户这三者全局一致,不多且不少。

在整体的奖品和权益下发过程中,存在两个库存,一个是一个活动的奖品有最大上限,另一个是某权益,例如超赞包,有最大上限。为了解决在完成任务和用户兑换过程中的承载能力,我们通过预占提交 + MQ 和定时脚本同步状态的方式来保障高并发下的库存限制,具体如上。
活动总积分下发上限 - 分而治之

分而治之,提前将积分按照号段划分成多块,每次完成任务后,随机进入一个存活号段(如果号段内无积分的话,则认为该号段失活)进行发放,如果有号段存活,完成发放;如果所有号段失活,则返回超发并拒绝。
复杂任务系统的抽象

目前活动平台->玩法引擎->任务框架的难点是如何将复杂的任务流程和架构进行适当的抽象,从而方便配置和实现。原子任务的配置,一个原子任务的复杂性主要来自任务自身的灵活性和业务特征增多,会随着业务发展可选项和灵活程度越来越大,涉及的规则的适配性,特征的完备性就觉得了一个任务系统可扩展的上限。在这里我们将任务按照模板类型进行拆分,同时将每个模板的子模板通过可配置的规则引擎来予以解决。
任务编排

另一方面,当原子任务支持后,任务间的依赖关系以及任务的类型和性质差异性,这些都使得任务管理变得富有挑战。这也就需要我们寻找一种方法来抽象这些复杂性,使得在面对大量的具体任务时,我们可以有一个整体、宏观的角度去理解和控制这些任务。
对此,我们如上图,将不同模板类型的任务进行抽象。我们必须抽离出任务的共性元素,例如任务的分类、优先级、依赖关系,从而建立一个易于理解和操作的抽象结构。同时这种抽象结构需要能够灵活地适应新的任务类型和状况,以便于我们更好地应对未来可能出现的挑战。
通过实施这样的抽象化策略,我们能够更好地理解和掌控复杂的任务系统,并针对其共性的部分做到可扩展的、通用的涉及。同时降低了新人理解和上手整个系统,提升工作效率。
02 内部投放平台难点突破

用户定向难

更多的人能看到; 看到后点击、阅读等转化高。
运营人工圈人群包定向; 策略自动圈人群包定向,舰桥提供的策略,根据内容属性找到用户兴趣,快速地生成对应的人群包并进行投放。 算法内容找人定向,由推荐团队需要细致地对内容信息和用户画像进行深入分析,并完成合理匹配策略和匹配过程。
任务链路长&状态密集

资源管理
03 CDP(客户数据平台)查询性能调优
当前 CDP 系统中有两大功能,第一大功能是人群定向,另外一大功能是人群洞察,这两部分的功能是基于 Apache Doris 构建的。基于这两大功能会有一个底层的功能是建设各种用户方面的画像特征。当我们完成拆解之后,我们就会发现人群定向的这部分功能是运营侧或业务侧的痛点。

人群预估,针对投放和营销场景,运营侧会有人数预期,那么会构建相应规模的购物车,持续在购物车中加入新的特征,需要立即看到新的特征加入之后会圈选出多少人,而不是每次加入新的特征后都需要很长时间的等待。
人群圈选,针对热点运营。运营侧在日常工作中会持续跟进发生的各种热点事件,当发生了某些热点事件后,要快速地圈选出人群包发布 Push 和推荐。如果圈选过程需要好几分钟,就会错过热点事件。
以上场景场景数据量极大,如上图标注。同时对查询响应时效要求非常高,人群预估期望在 1s 内响应,人群圈选期望在 1 分钟内响应。
性能优化(1)
第一阶段优化我们通过了以下几点来解决这两个问题:

倒排索引和按条件查询

首先,倒排索引方面,我们将查询条件由原先的 and or not 改成了 Bitmap 函数的交并差;同时我们把连续数值打散成为离散标签。举例:用户的年龄是大于 0,小于 100 的 int 型,如果按照数字顺序进行筛选,运营侧是不好把控的,圈选的过程中也会导致使用效果不理想。因此我们把按照顺序排列的年龄打上另外的标签,称为年龄段,比如 18-25,0-18 等。
接着,把原先的 and or not 的查询转换为了倒排索引的相关查询,原先建立的表就会变成按照 tag_group 、tag_value_id 、置信区间的标识、Bitmap 的顺序排序。同时基于这部分我们也需要进行 ID Mapping,ID Mapping 在导入的过程中的核心就是要把用户 ID 变成连续自增的。
查询逻辑变更

bitmap_and,bitmap_or,
bitmap_not,我们通过业务代码,将外部运营通过可视化后台配置的 and、or、not 的逻辑全部改为函数式的逻辑,相当于把 where 条件放到了函数和聚合逻辑之中。
性能优化(2)

分而治之

数据预置
算子优化
04 舰桥共享事实服务离线事实导入性能提升 9 倍
离线批量更新:数据源 -> Spark -> Broker Load -> Doris。 实时流式更新:数据源 -> Flink -> Routine Load -> Doris。

查询变慢:很多业务的查询对延迟敏感,影响使用体验。 导入变慢:很多耗时在小时级别,时效性满足不了业务的要求。
观察监控可以发现:导入任务运行时 CPU 下降的比较明显,同时磁盘 I/O 保持在低水平( SSD 盘),说明在导入时 CPU 算力是个瓶颈,因为导入时需要排序、解压缩、分桶计算,这些都是 CPU 密集型的操作。同时 Yarn 集群算力存在潮汐现象,空闲可以成长导入过程的计算卸载到 Spark 上, 充分发挥各自的优势。


05 CDP 圈人&活动分析&投放诊断场景,极限压榨集群性能 -全局向量化
使用场景
OLAP 引擎 Bitmap 倒排表,通过交并差,快速预估并完成筛选、打包能力。
维度&指标汇总宽表:较短时间多数据分析看板,或最新日期聚合数据看板。 多日期指标窄表:较长时间(一年)指标变化趋势图。
追踪明细表:每一时刻的数据明细,用于浏览和异常异动报警计算使用。 多日期指标宽表:追踪时间内的细粒度数据趋势波动,同时可用于异常波动报警。
集群配置
核心场景查询耗时对比


调优实践
FE 下发 Fragment 超时问题

支持返回二进制 Bitmap 数据
未来展望
内部营销平台发展的大方向是:营销数字化 -> 营销自动化(MA)-> 营销智能化。
01 内部营销全面数字化
02 内部营销自动化











