新一代实时特征计算架构:融合Flink SQL和Flink State的智能升级|青训营

385 阅读5分钟

新一代实时特征计算架构:融合Flink SQL和Flink State的智能升级

在抖音这个充满活力的短视频社交应用中,推荐系统的实时特征计算方案是其成功的关键支撑。随着用户数量和内容的急剧增长,我们迎来了一个全新的挑战:如何更高效、更精准地进行实时特征计算?为了解决这一挑战,我们从业务背景出发,基于Flink SQL和Flink State的能力,重新设计了新一代实时特征计算架构。

架构设计定位

新一代实时特征计算方案旨在缩短业务基础特征的生产周期,同时提供更加抽象的基础特征业务层DSL。在这个方案中,我们将特征生产的链路分为数据源抽取/拼接、状态存储、计算三个阶段,充分利用Flink SQL和Flink State的灵活性和强大能力,支持各种复杂的窗口计算。

Flink SQL与数据处理

在我们的架构中,Flink SQL扮演着关键的角色。它不仅能够处理不同数据源的数据,还能将它们进行高效的拼接,为后续的特征计算提供优质的数据准备。这种灵活的数据处理表达能力,使得特征数据的抽取和拼接变得更加高效。

Flink State与中间状态存储

Flink State在我们的架构中用于存储特征计算的中间状态。这种状态存储方式不仅支持复杂的窗口计算,还能够确保特征计算的可靠性。我们充分利用Flink State的计算能力,将特征计算的中间状态存储在其中,从而实现更高效的计算流程。

窗口计算与性能提升

对于带有各种窗口的特征计算,我们采取了“轻在线重离线”的解决思路。这一策略将较重的时间切片明细数据状态存储和窗口聚合计算放在离线层完成。通过离线窗口触发机制,将特征结果推送到在线KV存储中。这种架构不仅大大简化了在线层的结构,还提升了特征计算的性能。

中心化存储与状态冷启动

对于长窗口特征,我们引入了中心化存储作为底层状态存储层的存储介质,实现了“状态冷启动”。这一“Hybrid”架构,将7天以内的状态存储在本地SSD,而7~30天的状态存储在中心化的存储引擎中。这种架构在性能和存储需求之间取得了平衡,使得离线数据回溯更加方便。 综上所述,我们的新一代实时特征计算架构将Flink SQL和Flink State的强大能力融入其中,为抖音推荐系统的特征计算提供了更高效、更灵活的解决方案。这一架构在提升性能、提高稳定性以及简化业务链路方面发挥了重要作用。未来,我们将不断优化和发展这一架构,为用户带来更加精准、个性化的内容推荐体验。

抖音推荐系统的智能演进:从个性化到高效窗口计算

抖音作为全球知名的短视频社交应用,其推荐系统一直在不断演进,从最初的个性化推荐到如今更高效的窗口计算。我们深知,在大规模用户和内容的环境下,如何更好地满足用户需求,并为他们呈现更精彩的内容,是推荐系统持续演进的核心目标。

个性化推荐的起源

早期,抖音主要采用个性化推 荐策略,通过分析用户行为和兴趣,为用户推荐与其喜好相符的短视频。这种推荐方法依靠用户的历史行为,例如观看历史、点赞、评论等,来建立用户画像,从而为用户提供符合其口味的内容。然而,随着用户规模的增长和内容多样性的提升,仅依靠个性化推荐已经无法满足用户的多样化需求。

窗口计算的引入

为了更高效地处理窗口类型的特征,抖音推荐系统引入了窗口计算的概念。窗口计算允许我们基于时间窗口对特定事件进行聚合和计算,从而获得更有针对性的特征。例如,统计最近5分钟内视频的播放量等。这种窗口计算方法为用户呈现了更加实时和与时俱进的内容,提升了用户体验。

Flink SQL和Flink State的融合

随着业务的不断发展,我们重新设计了新一代实时特征计算方案,融合了Flink SQL和Flink State的能力。在这一架构中,Flink SQL负责数据处理和特征数据的抽取与拼接,而Flink State用于存储特征计算的中间状态。这种架构不仅提升了特征计算的效率,还为业务提供了更高层次的抽象。

窗口计算的性能优化

为了更好地处理带有窗口的特征计算,我们采取了“轻在线重离线”的策略。将较为重的时间切片明细数据状态存储和窗口聚合计算放在离线层完成,通过离线窗口触发机制将特征结果推送到在线KV存储中。这一策略不仅简化了在线层的架构,还提升了特征计算的性能。

不断演进的推荐系统

抖音推荐系统持续演进,从个性化推荐到窗口计算,再到Flink SQL和Flink State的融合,每一步都是为了更好地服务用户。未来,我们将继续优化和发展推荐系统,借助最新的技术和算法,为用户提供更精准、多样化的内容推荐体验。通过不断的智能演进,抖音将继续成为用户喜爱的短视频平台。