苏宁11.11:搜索引擎Solr在苏宁易购商品评价系统中的应用

背景说明

苏宁易购商品评价系统主要提供商品维度评价数量聚合、评价列表展示功能,并为其他业务系统提供商品评价数据支撑服务。功能涉及对亿级数据的数量聚合、排序、多维度查询等复杂的业务场景,关系型数据库的索引为B-Tree结构,适合数值区分度或离散度高的数据,而评价系统中单个商品评价可以达到数十万条,相同星级的评价数则为亿级,故不适宜使用关系型数据库。解决此类海量数据准实时聚合的技术选型有以倒排表作为索引结构的Solr和Elasticsearch(底层都是Apache Lucene)搜索引擎服务,还有以bitmap作为底层索引结构的实时分析统计数据库Druid,但Druid只是支持数据统计功能并不保存原始数据,无法满足商品评价类的功能需求。系统建设之初对团队对Solr更为熟悉,故在Solr和Elasticsearch两者之间选择的Solr作为商品评价索引数据存储服务。

评价系统架构

苏宁易购商品评价系统架构如下:

\"image\"
图2-1

应用服务模块

根据苏宁易购技术规范要求,应用系统架构划分为前中后台三个主模块:

  • 前台:为web、app提供页面或接口服务,接入苏宁统一认证系统Passport;
  • 中台:通过苏宁自研RSF远程服务框架对前台服务和其他业务系统提供功能接口服务;
  • 后台:业务系统运营管理功能和任务批处理。
数据存储层
  • MySQL:存储和查询登录用户发表的评价,具备ACID特性,按照用户ID分库分表,根据业务要求和存储容量限制只保留指定时间内的评价数据
  • Redis集群:苏宁在开源Redis中间件基础上自研的支持分布式集群、熔断、横向扩容的高可用、海量缓存服务架构,缓存商品评价数量和列表数据,承载用户端的数据访问请求,降低对业务系统的访问压力
  • HBase:海量评价内容存储
  • Solr:评价索引存储和查询服务
外围系统
  • 商品中心:通过MQ(异步)和RSF(同步)接收保存商品主数据如商品信息、类目信息、店铺信息、商品关系信息等
  • 订单中心:待评商品主要来源于订单中心通过MQ下发的订单信息和订单状态通知,并由评价系统提供订单待评状态查询RSF接口,在订单页面展示商品评价发表入口
  • 搜索产品线:通过MQ下发商品评价数量到搜索产品线,为商品搜索排序计算提供数据支持
基础设施
  • 分布式任务调度系统(UTS):对各业务系统中的定时任务进行集中管理和调度,解决了集群环境下任务并发执行的控制,让业务系统从繁琐的技术细节中释放出来,并提供了对任务调度执行情况的监控和异常短信告警、重试机制,且提供跨业务系统的后继任务调度。
  • 集中配置管理(SCM):基于Zookeeper自研的应用配置信息集中统一管理和实时推送服务框架。
  • 消息中间件:由于历史原因,苏宁内部有多套MQ中间件,包括IBM MQ,Kafka和自研的WindQ。IBM MQ已经不建议使用,正在逐渐废弃;Kafka在大数据场景下使用较多;业务系统推荐使用WindQ,解决了解决多活场景下消息路由,提供消息发送重试熔断、在线动态扩缩容、顺序消费、异构MQ桥接等特性。
监控
  • 日志:改造Solr日志模块,接入苏宁统一日志框架,便于异常问题分析
  • 主机
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值