一、背景
此搜索平台主要解决以下场景问题:
- 大数据下的模糊检索、范围查询、聚合分析,mysql实现比较吃力。
- 半结构化数据的存取(比如日志),mysql无法做到nosql动态扩展字段。
- 数仓、数分统计的hive表,通过搜索平台高效快速接入并同步数据,对外提供服务。(搜索平台也是数据中台的在线查询服务)
- 推荐系统的推荐池存取,k2i(基于关键字召回item)引擎实现等。
- app搜索(文本召回,分词器定制等)。
二、实现
admin UI设计:
- 提供集群节点上线、下线,以及基础的监控、报警功能;在线集群、离线集群区分【集群管理】。
- 提供简洁、高效的接入页面,以及数据表查询和导出功能【业务接入、查询管理】。
- 提供索引节点调度管理页面,索引日志查看功能【索引节点管理】。
索引节点设计:
- 对于离线结构化的数据源(比如hive,mysql),接入页面可直接选择库、表、字段,审核通过即可同步数据;hive同步数据采用hive-solr组件(基于开源二次开发);mysql同步数据先用sqoop转成hive外表,再hive-solr。(主要借助大数据集群优势快速索引,也可自写索引组件)
- binlog实时数据源采用canal作为CDC方案。
- kafka实时数据源目前只支持zookeeper配置,后续可支持broker配置;借助kafka保证数据写入顺序(key相同写同一个partition)
- rpc、http索引支持,主要满足不同业务服务端需要。
统一查询服务:
- rpc服务(基于dubbo)
- http服务
注:基于历史原因,我们使用solr作为底层引擎,其实elasticsearch在吞吐、延时、成本、sql支持等方面更有优势,后续将重构成基于elasticsearch实现。
三、页面原型
hive接入页面
业务接入列表页面
业务查询页面
索引节点管理页面
集群节点管理页面
统一查询接口