从未降级的搜索技术
在搜索我经历过全部的双11,12年和13年这2次大促,GN是开发总指挥,我是在礼台上看各种新武器实弹表演。过去6年里,我们的引擎体系每年做到100%的性能提升,以淘系搜索为例,从最初3000台机器翻倍到现在区区6000台,但搜索服务却从6千qps增长了40倍到现在的32万qps,同时还填补了算法欲壑(算法数据占用内存从最初的10%到了现在的50%),转化率持续攀升,目前大搜索GMV已经是全网的主体了。搜索工程师的双11历来是实弹各种新武器的大机遇,而常规的技术保障已经成为踩在脚下的底线。实施任何一种降级预案都被我们视为耻辱,因为预案都是以伤害用户体验为代价的。在技术保障部双11总指挥群里此起彼伏的降级通告里面,从来没有过搜索的身影!
14年双11大促总指挥是YF,搜索焦点集中在要检阅的5件新武器上:
- 天猫售罄率预估,商品加购和交易后及时预测它的售罄时间,通过降权或者加权提升搜索结果页每一个位置的价值,搜索GMV可提升10%。
- 天猫SKU搜索,颜色尺码等sku属性参与检索。引擎平台实现了子文档检索功能,将原来集群拓展五倍规模才能做到的天猫SKU在原有基础上增加60%即可实现。
- Hippo引擎在线管理系统,机群变为可灵活流动的三维架构,第一维度是根据商品质量或类目划分子机群,下面才是传统的二维行列架构,这带来的好处是查询性能的巨幅优化。
- 离线集群HBase升级0.98,近700台机器的离线集群上各业务线分头开发累积导致集群效率底下,支持售罄率预估也要求我们把调优经验更厚实的0.98版本升级上去。
- 搜索分层优化GMV,借助Hippo系统主搜根据商品质量划分子机群然后在业务服务层聚合,搜索GMV可提升6%,整体性能大幅提升80%。
10/17,离双11还有段日子,下午我常规心血来潮找XD了解Hippo的进展,结果却触动了我的神经,我们都希望看到Hippo在双11上线主搜和天猫实战检验,但GD坚持把统一到A8机器的运维工作一并完成(稍显保守),因为这需要补充近300台A8的机器,而机器已经拖延几个星期了,本该9月底完成上线的Hippo到了10/17看来机会渺茫,引擎体系奔向世界级的路上焉能贻误战机!更有甚者,售罄率预估与天猫SKU搜索这两个业务项目都依赖Hippo,业务项目要是延误可是要掉脑袋的,念及此处我没有心情观礼了。要知道,主搜天猫加上这些A8升级后,还要退出来低配机器给其它搜索服务扩容,上下游一系列连锁依赖都嗷嗷待哺需要时间呀。紧急状态,不得不对搜索工程各相关团队发起动员了。Hippo必须不能够等待A8的到来尽快上线检验,要打破常规的水平分工来一场混战了。我直接请YL担任紧急状态下引擎端的负责人,飞行时更换引擎是我们起步时代的杀手锏,今天必须成为我们的底线。
10/27日,紧急状态的第10天,ZY和GD在各应用集群间辗转腾挪,终于完成了Hippo上线和天猫SKU搜索上线;插件小组完成了售罄率预估上线,把主搜性能提升了30%;LT和XY在QA小组的陪伴下解决了各组件的core与慢,CS也分批交付了A8机器。淘宝搜索、天猫搜索、店铺内搜索、店铺搜索共四个核心应用的淘系搜索达到了40万qps服务能力。这火热的十天,恰好也是CS和GD的陪产假。
现在我是不是可以高枕无忧重上观礼台了呢?此次要实弹的新武器只有Hippo和天猫SKU搜索踏实了,而售罄率预估所需离线集群HBase升级后鲜有指标超越升级以前,全链路压测未能成功。更为甚者,TM根据10月份无线端流量情况,把对搜索的要求从10万qps提升到了15万qps,也就是说现有的40万qps整体能力必须提升到45万qps!而多出来的5万qps要求又只能实打实落在最大的主搜索集群上,目前的优化手段已经用尽,降级是容易的也是耻辱的,怎么办?崩溃前奏,我冷汗直冒,尽管现在是YF担任总指挥。
搜索分层优化GMV成了救命稻草,尽管已经在无线全量上线并拿到了大部分性能成果,已经体在现有40万qps的服务能力里。但在PC端上线却因为对广告的负面影响而步伐迟缓,这里还有100台机器可以省下来。此外协同搜索是主搜的辅助引擎,这有200台机器不得已可以下线。分层优化GMV和协同检索一上一下恰好可以抵消GMV损失,同时又能节省300多台机器。紧急关头,老板给我们亮了黄灯,暂时下掉代表搜索体系技术一大进步的协同关系搜索是我此次最大的遗憾。
11/7日,紧急状态的第20天,大促准备的战场收尾之后,全淘系搜索在线服务规模达到了2500台机器,搜索服务能力推高到至45万qps,此外还有推荐服务能力到了12万qps,以及4万qps的AE引擎服务能力。已成为集团基础设施的opensearch在那个周末还有个插曲,HT应淘点点要求紧急把集群扩容到4万qps。至此万事俱备,欢度周末之后我准备上观礼台了。
11/10日21点到11日晚12点共27个小时,5种新武器实弹表演渐入佳境,事后回顾流量高峰在最初的4小时就已经到来了,尽管11日白天来势汹汹比前一天高出一倍不止,但到了晚上涨幅回落基本和10日持平了。观礼过程最为惊险的在11号上午8点到12点这段期间,对IC销量字段的更新度预估不足,导致天猫引擎有约半小时的延迟,售罄率预估也无法开启;无线推荐因为上游降级而流量大损峰值只有4万qps(上限12万qps)。在这27个小时里,搜索峰值是32万qps(上限45万qps),其中最大的份额来自手淘搜索峰值10万qps(上限15万qps)。手淘UV只到了理想目标的60%,真要是满负荷过来的话,手淘搜索峰值会突破上限15万qps而达到16.7万,那么等待我们的唯有耻辱降级一途!售罄率预估当天开启12个小时,对成交转化提升达到了10个百分点。Opensearch的服务大大低于预期只跑到了7千qps。最后AE的大促意外交出了完美的业务答卷,同时引擎后台服务真的一度达到了3.2万qps(上限4万qps)。
迄今为止的每一次大促搜索在线服务都没有任何形式的降级,无论是天猫还是淘宝还是SC/AE还是1688,这一次游走在天堂和地狱之间,我们更清醒的认识到,技术进步永无止境!