年初加入搜索组到现在快一年过去了,期间有幸经历了团队由小变大、系统从若变强的原始积累过程,回顾下走过来的技术体系,也算是年终总结
搜索支撑的业务线包括商品、店铺、订单、用户等大大小小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选举、容灾恢复等特性,具体请关注我总结的思维导图
http://dl2.iteye.com/upload/attachment/0104/4903/55cffb54-be33-3ec3-b3b4-61158260f6c9.png
实时内核上参考了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系统,提供搜索数据服务、监控报警、配置管理、机器运维、元数据及权限管理的功能模块
- 大小: 117.9 KB
- 大小: 79.1 KB
分享到:
相关推荐
当当网高可用移动入口与搜索技术架构.docx
阿里海量数据技术架构 按照数据的流向来划分,我们把淘宝数据产品的技术架构分为五层,分别是数据源、计算层、存储层、查询层和产品层。位于架构顶端的是我们的数据来源层,这里有淘宝主站的用户、店铺、商品和交易...
《大型网站技术架构》读书笔记思维导图,初始架构、服务数据分离、缓存改善性能、服务器集群化、数据库读写分离、反向代理CDN、分布式FS/DBS、NOSQL和搜索引擎、业务切分
中文搜索引擎技术揭密:系统架构 原理分析
搜索引擎和技术架构.ppt
Siebel 技术架构 Oracle 企业安全搜索 • Oracle Web 内容管理 • Oracle规则自动化
互联网公司技术架构资料.新浪微博.微博架构与平台安全
大型网站架构演化 大型网站软件系统的特点 大型网站架构演化发展历程 初始阶段 应用服务和数据服务分离 使用缓存改善网站性能 缓存类型 本地缓存 分布式缓存 缓存产品 redis 业界...
国外互联网公司大数据技术架构研究 Google大数据技术架构探秘 一、Google Google是大数据时代的奠基者 ,其大数据技术架构一直是互联网公司争相 学习和 研究的重点,也是行业大数据技术架构的标杆和示范。 1、谷歌的...
流批一体也开始真正的发挥出了价值,在我们的搜索离线数据处理和机器学习平台上均获得了较好的效果。本演讲将分享 Blink 针对流批一体化的场景做了哪些优化,在支持实际业务上碰到了哪些问题,我们又是怎么解决的。
,YouTube,MySpace,Twitter,国内如优酷网等大型网站的技术架构(本文重点分析优酷网的技术架构),以飨读者。本文着重凸显每一幅图的精彩之处与其背后含义,而图的说明性文字则从简从略。ok,好好享受此
• 采用hibernate3+struts2+spring2+freemarker主流技术架构 • 懂html就能建站,提供最便利、合理的使用方式 • 强大、灵活的标签,用户自定义显示内容和显示方式 • 在设计上自身预先做了搜索引擎优化,增强对...
每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而...数据层,提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等。分层架构是逻辑上的,在物理
『OneAPM 技术公开课』NO.1--《电商搜索引擎的架构设计和性能优化》吴英昊.pdf,请放心下载!
网上搜集的相关技术资料,介绍在中小型团队在.net企业级开发中常见技术选型,包括日志,搜索,持续集成,分层,单点登录等相关技术介绍
3.2.5. 搜索子系统 4. 物理架构 5. 开发架构 5.1. 开发流程 5.2. 系统组件图 6. 数据架构 6.1. 数据模型 6.1.1. 数据说明 6.1.2. 数据分布规则 6.2. 数据缓存机制 6.3. 数据兼容性方案 6.3.1 配置文件...
百度技术沙龙 91 期 深入浅出话搜索 架构技术最新应用与实践
4-1+搜索内容架构技术与实践
如何让用户精准地找到想要的商品呢?其背后有着强大的技术支撑。商品类目属性体系