搜索技术架构

这幅图是某大厂前几年的搜索架构:
这里写图片描述
搜索支撑的业务线包括商品、店铺、订单、用户等大大小小20多个,双11期间搜索量在2亿/天,实体服务器超过100台。按功能分为分布式实时引擎、dump中心、数据分析和运维平台几大块

dump中心
实质是根据实例搜索与展现的需求将数据库中相关字段组装成document,并生成索引替换上线的过程。我们的dump分为全量和增量模式。
全量模式,依赖hadoop的批处理方式流程如下

1)将业务涉及到的db数据表加载到hdfs上,db表的每天快照对应hive上的一个日期分区
2)通过hive sql脚本过滤表中的业务字段,结合多表做join生成基础表,基础表也对应到hdfs上一个文件目录
3)运行mapreduce任务,对数据进行加工处理,并最终在dump机上生成索引文件。其中dump机可看作是一个不对外服务的搜索实例,它拥有与线上实例一样的schema和config配置文件。
数据的加工可能包括以下几种:
a. 对字段进行重命名
b. 对字段赋缺省值
c. 根据已有字段生成新字段
d. 对字段值做数值转化、归一化处理
e. 调用业务外部依赖接口,获取额外组装信息
4) 对线上leader的索引数据做替换,并结合增量补全数据
5) 同步replica到leader的数据更新 整个流程逻辑比较简单,但其中有几个重难点还是值得关注:
a. 流程的自动化和配置化
b.索引文件的分发和管理,特别是在分布式大数量的场景下
c.数据完整性和准确性的检验
增量模式,binlog+canal+mq的方式
采用canal解析db主库binlog,将update/insert的record主键信息存入mq,消费mq拿到主键后查询slave库,组装record生成document并实时写入。这里有个细节需要注意,就是当binlog的解析比数据库自身主从同步快时,可能会导致从slave库查不出更新的记录导致增量丢失,在我们的实际场景中确实发生过索引替换上线过程较复杂,涉及到增量数据备份(一般从当天凌晨开始)、追补增量数据、堆积mq阻塞写请求替换索引等步骤

基于solr的分布式实时引擎
分布式上采用了solrcloud,主要有shard的分片和路由、leader选举、容灾恢复等特性。

实时内核上参考了zoie的设计,即两个内存索引core和一个磁盘索引core实现
1) 在添加索引的过程中,索引是同时写入到disk core和ram0 core(当前可用)的,此时检索disk和ram0后merge就可以实时返回新增的文档
2) 当ram0写入到达一定阈值后,开始flush数据到disk上,在这个合并过程中会创建ram1 core。新的文档全部添加到ram1上,而ram0是只读的,此时检索文档需要通过ram0、ram1、disk。因为ram0和disk合并中并没有重新打开indexReader,无需对数据去重
3) 当ram0全部flush到disk上后,重新打开indexReader,并将ram1和ram0进行swap
4) 文档更新,写入当前ram core并在disk上进行标记删除,合并过程中先真实删除disk上的标记文档,然后在将ram上的更新向disk合并
5) 分布式去重

数据分析
主要是基于埋点日志的数据挖掘,支撑了业务指标计算、商品离线导航、相关性统计排序、链路监控优化等日常工作

hesearch平台
是我们的后台MVC系统,提供搜索数据服务、监控报警、配置管理、机器运维、元数据及权限管理的功能模块

http://mp.weixin.qq.com/s?__biz=MzI4OTU3ODk3NQ==&mid=2247483896&idx=1&sn=94025e338b0181d63ed84466f5c26ab1&chksm=ec2c4b48db5bc25e836ec559b30776d7e1a206dd5e551562c4313684635601fd50a40e428344&mpshare=1&scene=23&srcid=0215h1KGgbvr56eyIVgMCBI1#rd

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、课程优势本课程有陈敬雷老师的清华大学出版社配套书籍教材《分布式机器学习实战》人工智能科学与技术丛书,新书配合此实战课程结合学习,一静一动,互补高效学习!本课程由互联网一线知名大牛陈敬雷老师全程亲自授课,技术前沿热门,是真正的互联网工业级实战项目。二、课程简介       大数据和算法类的系统和传统的业务系统有所不同,一个是多了离线计算框架部分,比如Hadoop集群上的数据处理部分、机器学习和深度学习的模型训练部分等,另一个区别就是大数据和算法类系统追求的是数据驱动、效果驱动,通过AB测试评估的方式,看看新策略是否得到了优化和改进。所以在系统架构上,需要考虑到怎么和离线计算框架去对接,怎么设计能方便我们快速迭代的优化产品,除了这些,像传统业务系统那些该考虑的也照样需要考虑,比如高性能、高可靠性、高扩展性也都需要考虑进去。这就给架构师非常高的要求,一个是需要对大数据和算法充分了解,同时对传统的业务系统架构也非常熟悉。        本节课就对当前几个热门的大数据算法系统架构(推荐系统架构设计、个性化搜索引擎架构设计、用户画像系统架构设计)做一个深度解析!1.个性化推荐算法系统 是一个完整的系统工程,从工程上来讲是由多个子系统有机的组合,比如基于Hadoop数据仓库的推荐集市、ETL数据处理子系统、离线算法、准实时算法、多策略融合算法、缓存处理、搜索引擎部分、二次重排序算法、在线web引擎服务、AB测试效果评估、推荐位管理平台等。如下就是我们要讲的个性化推荐算法系统架构图,请大家仔细欣赏、品味:      这节课我们就对推荐系统的整体架构和各个子系统做了详细的讲解,解开个性化推荐算法系统神秘的面纱!2.个性化搜索引擎 和个性化推荐是比较类似的,这个架构图包含了各个子系统或模块的协调配合、相互调用关系,从部门的组织架构上来看,目前搜索一般独立成组,有的是在搜索推荐部门里面,实际上比较合理的应该是分配在大数据部门更好一些,因为依托于大数据部门的大数据平台和人工智能优势可以使搜索效果再上一个新的台阶。下面我们来详细的讲一下整个架构流程的细节。如下就是我们要讲的个性化搜索架构图,请大家仔细欣赏、品味:这节课我们就对个性化搜索的整体架构和各个子系统做了详细的讲解,解开搜索引擎神秘的面纱! 3.大数据用户画像系统 用户画像是一个非常通用普遍使用的系统,从我们的架构图中可以看出,从数据计算时效性上来讲分离线计算和实时计算。离线计算一般是每天晚上全量计算所有用户,或者按需把用户数据发生变化的那批用户重新计算。离线计算主要是使用Hive SQL语句处理、Spark数据处理、或者基于机器学习算法来算用户忠诚度模型、用户价值模型、用户心理模型等。实时计算指定的通过Flume实时日志收集用户行为数据传输到Kafka消息队列,让流计算框架Flink/Storm/SparkStreaming等去实时消费处理用户数据,并触发实时计算模型,计算完成后把新增的用户画像数据更新搜索索引。个性化推荐、运营推广需要获取某个或某些用户画像数据的时候直接可以毫秒级别从搜索索引里搜索出结果,快速返回给调用方数据。这是从计算架构大概分了两条线离线处理和实时。下面我们从上到下详细看下每个架构模块。如下就是我们要讲的大数据用户画像架构图,请大家仔细欣赏、品味:这节课我们就对大数据用户画像系统的整体架构和各个子系统做了详细的讲解,解开用户画像系统神秘的面纱!三、老师介绍陈敬雷  充电了么创始人,CEO兼CTO陈敬雷,北京充电了么科技有限公司创始人,CEO兼CTO,十几年互联网从业经验,曾就职于用友、中软、凡客、乐蜂网(唯品会)、猎聘网、人民日报(灵思云途)、北京万朝科技,曾任架构师、首席技术官、首席科学家等职务,对业务领域B端、C端、电商、职场社交招聘、内容文娱、营销行业都有着丰富的经验,在技术领域,尤其在大数据和人工智能方向有丰富的算法工程落地实战经验,其中在猎聘网任职期间主导的推荐算法系统项目获得公司优秀项目奖,推荐效果得到5倍的提升。陈敬雷著有清华大学出版社两本人工智能书籍,分别是《分布式机器学习实战(人工智能科学与技术丛书)》、《自然语言处理原理与实战(人工智能科学与技术丛书)》。目前专注于大数据和人工智能驱动的上班族在线教育行业,研发了充电了么app和网站,用深度学习算法、nlp、推荐引擎等技术来高效提升在线学习效率。 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值