大数据软件应用图谱之搜索引擎 Elasticsearch

大数据主流应用软件包括:数据引擎 hadoop、HIVE、spark;数据分析搜索:solr、Elasticsearch;数据存储应用:hbase、mongodb、redis。这里讲讲Elasticsearch在大数据应用里充当什么角色,其它软件请文章栏目里查找。

长期探索方面,我们结合大数据图谱来介绍。整个大数据领域,按照数据量、延时要求等特点,可以划分为三部分:第一部分是 Data Engineering,包含我们熟悉的批量计算、流式计算;第二部分是 Data Discovery,包含交互式分析、搜索等;第三个部分是 Data Apps,主要用于支撑在线服务。

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

Elasticsearch 运行在一个分布式的环境中,从设计之初就考虑到了这一点,目的只有一个,让您永远高枕无忧。我们的集群可以随着您的需求的增长而增长——只需再添加一个节点就行。

本次分享的主要内容包含:首先介绍 ES 在腾讯的丰富应用场景及各种场景的典型特点;然后给出我们在大规模、高压力、丰富多样的使用场景下遇到的挑战;针对这些挑战,我们重点介绍腾讯在 ES 内核方面进行的高可用性、低成本、高性能等优化实践;最后简单分享我们在 ES 未来规划以及开源贡献方面的思考。

我们先来看下 ES 在腾讯的应用场景。最初我们使用 ES 于日志实时分析场景,典型日志如下:运营日志,比如慢日志、异常日志,用来定位业务问题;业务日志,比如用户的点击、访问日志,可以用来分析用户行为;审计日志,可以用于安全分析。ES 很完美的解决了日志实时分析的需求,它具有如下特点:

  • Elastic 生态提供了完整的日志解决方案,任何一个开发、运维同学使用成熟组件,通过简单部署,即可搭建起一个完整的日志实时分析服务。
  • 在 Elastic 生态中,日志从产生到可访问一般在 10s 级。相比于传统大数据解决方案的几十分钟、小时级,时效性非常高。
  • 由于支持倒排索引、列存储等数据结构,ES 提供非常灵活的搜索分析能力。
  • 支持交互式分析,即使在万亿级日志的情况下,ES 搜索响应时间也是秒级。

日志是互联网行业最基础、最广泛的数据形式,ES 非常完美的解决了日志实时分析场景,这也是近几年 ES 快速发展的一个重要原因。

第二类使用场景是搜索服务,典型场景包含:商品搜索,类似京东、淘宝、拼多多中的商品搜索;APP 搜索,支持应用商店里的应用搜索;站内搜索,支持论坛、在线文档等搜索功能。我们支持了大量搜索服务,它们主要有以下特点:

  • 高性能:单个服务最大达到 10w+ QPS,平响 20ms~,P95 延时小于 100ms。
  • 强相关:搜索体验主要取决于搜索结果是否高度匹配用户意图,需要通过正确率、召回率等指标进行评估。
  • 高可用:搜索场景通常要求 4 个 9 的可用性,支持单机房故障容灾。任何一个电商服务,如淘宝、京东、拼多多,只要故障一个小时就可以上头条。
展开阅读全文

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java