近线另一个工作是产品数据缓存,携程的业务线很多,而我们的推荐系统会推各个业务线的产品,因此我们需要调用所有业务线的产品服务接口,但随着我们上线的场景的增加,这样无形的增加了对业务方接口的调用压力。而且业务线产品接口服务主要应用于业务的主流程或关键型应用,比较重,且SLA服务等级层次不齐,可能会影响到整个推荐系统的响应时间。
为了解决这两个问题,我们设计了近在线计算来进行业务的产品信息异步缓存策略,具体的流程如下。
我们会将待推荐的产品Id全部通过Kafka异步下发,在Storm中我们会对各业务方的产品首先进行聚合,达到批处理个数或者时间gap时,再调用各业务方的接口,这样减少对业务方接口的压力。通过调用业务方接口更新的产品状态临时缓存起来(根据各业务产品信息更新周期分别设置缓存失效时间),在线计算的时候直接先读取临时缓存数据,缓存不存在的情况下,再击穿到业务的接口服务。
产品异步缓存框架