背景
推荐算法涉及的数据范围多,而且来源于不同的表。如果基于mysql去做推荐需求,很快会遇到性能瓶颈。说到底,基于mysql构建的数据模型,适合普通的业务需求,而推荐需求,需要寻找新的数据模型。
因此,引入ES,构建新的数据模型,35W基础数据,性能提升15倍以上(500+ms > 30ms),并且随着数据量的提升,性能提升会更大。
新数据模型架构图
- 通过canal监听mysql数据库相关表的变化,将变更发送给MQ,消费者消费MQ,将变更更新到ES。
- 使用HightLevel Client,结合计分脚本painless做推荐业务。
- 基于开闭原则,封装相关模块,使得易拓展。