分析问题
勾勒出解决方案
- 推荐的产品分为“固定的推荐产品数据库”,输入产品会输出固定的一推荐系列产品
- 还有动态的产品推荐,这个基于用户的clikcstream来生成到recommendation queue中
- 最后结合两种类型的推荐来给出最后的推荐列表
- 数据的处理过程种会使用到cache来存储session范围内的用户click stream,用来给推荐引擎来查询;还会缓存现在session用户的推荐列表来跟踪推荐列表,用户就可以更快的查询到推荐产品
考虑用什么技术
设计出架构
- 事件在同一个user session内是有顺序的,所以同一个user session的事件要发送到同一个kafka partition
- spark的map里使用cache里缓存的clickstream来做计算
- 推荐服务结合动态推荐和静态推荐的结果,而且是无状态的,所有的状态都存储在in memory数据库中。推荐服务是在load balance后面,这样就可以做横向扩展
- 这个架构需要做benchmark来保证响应时间在一定的范围内
设计中的关键元素
最佳实践(并发处理)
- 数据存储在中心存储中,包括状态数据。中心存储是可以横向扩展的
- 服务是无状态的
- 服务部署在负载均衡后面
- 并发处理是map reduce式的处理,map可以是处理并发进行,reduce尽量少而且在最后使用
网友评论