Storm是一个无状态的流式计算框架,而无状态的流式计算体系,更适合做简单的统计分析,比如针对成交维度或者点击维度做计数。而阿里自研的流式计算框架iStream,已经不再是简单的丶无状态的流式计算概念。iStream借助HBase集群存储用户状态,以完成一些相对复杂的模型的计算。同时模型的计算结果可以通过相应的接口直接推送到上层的搜索引擎中,以服务每一条流量的排序变化。
在搜索引擎层,不仅包括商品的搜索引擎,还会包括其它层面的服务(如架构图所示)。商品搜索引擎中包含商品丶店铺丶活动等维度的信息,而图中的个性化服务旨在为用户提供个性化的搜索体验,个性化服务会根据用户的实时行为反馈搜索结果。而QP(Query Planner)会对用户的搜索请求进行分析(搜索词丶搜索场景丶页面)进一步个性化搜索服务。在搜索引擎层,通过这三个系统的互相配合为上层的业务层提供个性化的搜索数据。
不同的业务对应的搜索排序结果不同,阿里搜索引擎中排序部分是通过类似链式处理的方式实现的,内部称为排序链。排序链是由不同的用户特征对应的算法插件组合而成,算法插件是单独存在的,可以根据具体情况组合到不同业务的排序链中。目前在线上运行的排序链有几十条,系统会根据不同的业务丶用户丶场景丶Query选择不同的排序逻辑。
而在双十一这样的高并发活动中,搜索引擎需要保证流量的合理分配,比如搜索结果中不能显示售罄的商品。但是对于一些热门商品,从库存充足到售罄可能是几分钟的时间。为了保证搜索结果的实时性,阿里搜索引擎架构针对这样的场景做了优化,去掉了不能感知业务变化的缓存(业务层),重点优化搜索引擎层的缓存。以商品售罄的场景为例,当商品售罄时,业务系统会发送异步消息通知离线集群,离线集群通过流式计算将更新同步到引擎,而当引擎返回搜索结果时,会在缓存的基础上对结果进行二次过滤,从而保证搜索结果的实时性和准确性。
另外,在今年双十一中,天猫搜索底层第一次使用精确到更新粒度的SKU(Stock Keeping Unit)引擎代替之前的宝贝引擎,底层引擎索引量较之前翻了几番。天猫从召回逻辑丶前端的属性展示丶筛选以及搜索结果页到详情页的联动,向用户提供了精确度更高丶更细致的搜索购物体验。对于标类产品,基于SKU引擎的搜索导购缩短了用户的搜索购物路径,比如搜索iPhone 5s后,SKU引擎会显示对应的销售属性,方便用户选择。此外在SKU引擎的基础上,天猫还实现了用户的尺码个性化,在包含确定尺码信息的类目中,如鞋丶文胸,天猫可以匹配用户的尺码个性化信息,将适合的商品优先展示给用户。
文章TAG:升级 搜索 搜索引擎 天猫