在业务开发里,跨多业务系统、长时间跨度且需实时更新的数据展示需求,就像一个大难题。今天就以闲鱼粉丝系统标签实现方案为例,看看如何解决!
业务痛点凸显
当代业务开发挑战重重,新需求常要求展示跨多业务系统的数据。以闲鱼粉丝系统标签场景来说,像“我的粉丝”页面有新粉、老粉和已购粉等分组。其面临的问题是,数据来源复杂且时间跨度大,要实时反映数据变化,同时QPS高、rt要求小,怎么破?
离线数据计算
为解决上述问题,先采用方案二。每天凌晨,把不同系统的业务数据导出,做离线关联计算,再对计算结果进行schema转化,作为业务数据的离线数据源。这种做法能涵盖多个业务系统的全量历史数据,数据准度高。举例,它能精准统计不同时间段粉丝的各类数据。
实时数据补偿
仅靠离线数据不行,还得反应实时数据变化。在此基础上,采用方案三对离线数据实时补偿。基于消费业务变更消息来实现,例如在系统标签场景中,处理关注/取关消息、交易消息等,生成实时补偿数据。新增粉丝或者粉丝状态改变时,能及时更新数据。
数据存储优化
根据查询的数据视图生成数据存储的schema。目的是降低数据查询频率和后处理复杂度。有一对一交易数据,用于交易次数的正反向查询,新增关注后能实时查到两人的历史购买数据。这使得数据存储更合理,查询更便捷。
查询展示机制
查询已购粉列表时,把一对多实时交易数据和一对多离线数据merge,按最新购买时间重新排序。然后查已购数据服务获取交易次数展示给用户。此过程展示了从数据查询到最终呈现的详细逻辑,确保数据准确实时展示。
新增粉丝处理
有新增粉丝情况时,要查询其历史购买数据补充到已购粉列表。具体在更新链路中消费新增关注消息,通过查询离线和实时一对一交易数据获取最新交易时间,更新到已购粉列表的实时补偿数据。这样保证新增粉丝数据也能及时融入系统。
这套方案解决了数据全量展示与实时更新的问题,保障了数据准确度,承载近1w的QPS,查询rt控制在几毫秒内。但也有局限,像热点数据会使实时补偿数据激增等。你觉得面对这些局限,该如何进一步优化这个方案?