年初加入搜索组到现在快一年过去了,期间有幸经历了团队由小变大、系统从若变强的原始积累过程,回顾下走过来的技术体系,也算是年终总结

搜索支撑的业务线包括商品、店铺、订单、用户等大大小小20多个,双11期间搜索量在2亿/天,实体服务器超过100台。按功能分为分布式实时引擎、dump中心、数据分析和运维平台几大块
dump中心,
实质是根据实例搜索与展现的需求将数据库中相关字段组装成document,并生成索引替换上线的过程。我们的dump分为全量和增量模式。
全量模式,依赖hadoop的批处理方式流程如下

(1) 将业务涉及到的 db 数据表加载到 hdfs 上, db 表的每天快照对应 hive 上的一个日期分区
增量模式,binlog+canal+mq的方式
采 用 canal 解析 db 主库 binlog ,将 update/insert 的 record 主键信息存入 mq ,消费 mq 拿到主键后查询 slave 库,组装 record 生成 document 并实时写入。这里有个细节需要注意,就是当 binlog 的解析比数据库自身主从同步快时,可能会导致从 slave 库查不出更新的记录导致增量丢失,在我们的实际场景中确实发生过基于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 就可以实时返回新增的文档数据分析
主要是基于埋点日志的数据挖掘,支撑了业务指标计算、商品离线导航、相关性统计排序、链路监控优化等日常工作
hesearch平台
是我们的后台MVC系统,提供搜索数据服务、监控报警、配置管理、机器运维、元数据及权限管理的功能模块

被折叠的 条评论
为什么被折叠?



