年初加入搜索组到现在快一年过去了,期间有幸经历了团队由小变大、系统从若变强的原始积累过程,回顾下走过来的技术体系,也算是年终总结
搜索支撑的业务线包括商品、店铺、订单、用户等大大小小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
分享到:
相关推荐
【当当网高可用移动入口与搜索技术架构】 在电商行业中,尤其是在双十一这样的大型促销活动中,网站必须具备处理巨大流量的能力。当当网通过构建高可用的移动入口和搜索技术架构,确保了系统的稳定性和用户体验。...
微服务技术架构设计是现代软件开发领域中的一个重要话题,它旨在通过将大型的单体应用分解为一组小型、独立的服务,以提高系统的可扩展性、可维护性和敏捷性。在"微服务技术架构设计图.pptx"中,我们可以看到多种...
淘宝技术架构经历了多个版本的迭代,随着业务的发展和技术的演进,不断地进行升级和优化。在早期,淘宝采用的是LAMP架构,即Linux、Apache、MySQL和PHP的组合,这是一个典型的开源技术栈,用于构建动态网站和网络...
这些文件名为14.pdf、11.pdf、2.pdf、5.pdf、7.pdf、12.pdf、6.pdf、10.pdf、13.pdf、4.pdf的压缩包内容,很可能包含了新浪、百度、腾讯和淘宝这四家著名互联网公司的技术架构系列资料。我们可以推测,这些PDF文档...
《大型网站技术架构_核心原理与案例分析》是李智慧撰写的一本专著,主要针对Web开发领域的高级架构设计进行深入探讨。这本书旨在帮助读者理解并掌握构建大规模、高性能、高可用性的网站所需的关键技术与实践策略。...
淘宝作为中国最大的电子商务平台,其技术架构的发展历程和背后的技术实力是值得深入探讨的。从2011年的“双11购物狂欢节”可以看出,淘宝面对的流量压力巨大,一分钟内就有342万人同时在线,这对其技术架构提出了极...
【语雀技术架构演进】是关于一个名为“语雀”的知识管理工具从原型阶段到商业化阶段的技术发展历程的概述。语雀最初是一个内部项目,旨在为阿里员工提供文档编写和知识沉淀的平台。随着其发展,语雀的技术架构经历了...
《大型网站技术架构核心原理与案例分析》这本书深入探讨了构建和优化大型网站所需的关键技术和实践,对于希望成为或已经是架构师的专业人士来说,是一本不可或缺的参考书。书中不仅涵盖了理论知识,还通过实际案例...
### 淘宝数据魔方技术架构解析 #### 一、引言 随着互联网的快速发展,数据成为支撑电子商务发展的核心资源之一。淘宝作为中国最大的电商平台之一,积累了庞大的用户行为、商品信息、交易记录等数据。如何高效利用...
数据中台建设与技术架构实践方案是指建立一个数据中台架构,旨在满足企业数据分析和应用的需求。该架构包括数据资产、数据治理、数据模型、垂直数据中心、全域数据中心、萃取数据中心、数据服务等多个层次的体系化...
OSChina 技术架构介绍 OSChina(开源中国)作为一个知名的开源技术社区,其背后的技术架构支撑着每日大量的用户访问和交互。以下将详细讲解该平台的技术栈、硬件配置、软件环境、开发流程以及所采用的关键技术。 ...
### 阿里海量数据技术架构详解 #### 技术架构概述 阿里巴巴作为一个拥有庞大用户基础及业务场景的电商平台,其海量数据处理能力是确保业务高效运作的关键之一。本文将详细解析阿里巴巴淘宝平台数据产品的技术架构...
大型网站技术架构是指为满足大型网站高性能、高可用性、可伸缩性、安全性、快速迭代和低成本等需求,所采用的一系列技术解决方案和策略的集合。为了深入理解大型网站技术架构的核心原理,我们可以从以下几个方面展开...
淘宝技术架构介绍V2 淘宝,作为中国最大的电子商务平台之一,其技术架构经历了多次迭代与优化,以应对海量用户和交易带来的挑战。本文将根据给定的文件信息,深入解析淘宝的技术架构,涵盖其发展历程、架构特点以及...
标题与描述均提及了“互联网公司技术架构资料.淘宝.技术架构介绍”,这明确指出了文档的核心内容将围绕淘宝的技术架构展开。以下是对淘宝技术架构发展史及其关键知识点的详细解读。 ### 淘宝技术架构发展概览 淘宝...
淘宝作为中国最大的电子商务平台,其背后的技术架构是一个庞大的系统,支撑着亿级用户的日常交易、浏览和交流。本文将深入探讨淘宝技术架构的核心要素、设计理念以及发展历程,旨在为对技术架构感兴趣的读者提供一个...
藏经阁-反作弊技术架构与设计 反作弊技术架构与设计是阿里云的大数据技术专家胡强在alkibaba集团豌豆荚技术专家分享的反作弊技术架构与设计的经验和心得。以下是对该技术架构与设计的详细解读和知识点总结: 一、...
本文提出了基于云计算的水利综合管理信息平台技术架构,并通过详细分析其层次设计,为水利工程管理提供了现代化解决方案。 首先,文章指出了水利信息化建设的必要性,并指出云计算技术是实现这一目标的有效途径。...