七个生产案例告诉你BATJ为什么选择ElasticSearch!应用场景和优点!

本文来源于公众号【胖滚猪学编程】,转载请注明出处。mysql

从今天开始,想和你一块儿死磕ElasticSearch,学习分布式搜索引擎,跟着胖滚猪就对了!sql

既然是ES的第一课,那么最重要的是让你爱上它!不想说那些单纯的优点、概念了,直接上大厂的生产案例,才是最能吸引你的!跟着大厂走,没问题的!数据库

为啥选择ES?

一个技术服务组件,首先须要了解全面它的使用场景,才能更针对性的去研究及推广。所以第一要务是搞懂为何要学习ElasticSearch,开头po先一张排行图,大哥的地位可不是瞎搞来的,没点实力能上位?凭这排名就是你要学习它的理由!编程

image.png

凭啥排这么前呢?不就是个搜索引擎吗。额,也许提到Elasticseach,你第一反应就是"搜索引擎"。相似百度搜索、淘宝搜索那种。而我写这篇文章就是为了纠正你这个"错误"的观点。后端

Elasticseach 确实是作搜索引擎出家的,可是到如今已经进化成了一个全能型的数据产品。所以你的思惟决不能限制在搜索引擎上。安全

本文经过一线大厂的八个案例,全方位让你了解ElasticSearch的应用场景和优点,包括:性能优化

  • 日志实时分析
  • 搜索服务
  • 数据分析
  • 数据监控
  • 查询服务
  • 后端存储

ElasticSearch在腾讯的应用

ElasticSearch在腾讯的应用很是普遍,主要有三:日志实时分析场景、搜索服务、时序数据分析。服务器

  • 搜索服务: 例如像腾讯文档基于 ES 作全文检索,电商客户拼多多、蘑菇街等大量的商品搜索都是基于 ES。
  • 日志分析: 这个是 ES 应用最普遍的领域,支持全栈的日志分析,包括各类应用日志、数据库日志、用户行为日志、网络数据、安全数据等等。ES 拥有一套完整的日志解决方案,能够秒级实现从采集到展现。
  • 时序分析: 典型的场景是监控数据分析,好比云监控,整个腾讯云的监控都是基于 ES 的。此外还包括物联网场景,也有大量的时序数据。时序数据的特色是写入吞吐量特别高,ES 支持的同时也提供了丰富的多维统计分析算子。

日志实时分析

image.png
典型日志以下:网络

  • 运营日志,好比慢日志、异常日志,用来定位业务问题;
  • 业务日志,好比用户的点击、访问日志,能够用来分析用户行为;
  • 审计日志,能够用于安全分析。ES 很完美的解决了日志实时分析的需求,它具备以下特色:

Elastic 生态提供了完整的日志解决方案,任何一个开发、运维同窗使用成熟组件,经过简单部署,便可搭建起一个完整的日志实时分析服务。数据结构

  • 在 Elastic 生态中,日志从产生到可访问通常在 10s 级。相比于传统大数据解决方案的几十分钟、小时级,时效性很是高。ES 拥有一套完整的日志解决方案(ELK),能够秒级实现从采集到展现。

  • 因为支持倒排索引、列存储等数据结构,ES 提供很是灵活的搜索分析能力。

  • 支持交互式分析,即便在万亿级日志的状况下,ES 搜索响应时间也是秒级。

日志是互联网行业最基础、最普遍的数据形式,ES 很是完美的解决了日志实时分析场景,这也是近几年 ES 快速发展的一个重要缘由

搜索服务

image.png
搜索服务,典型场景包含:商品搜索,相似京东、淘宝、拼多多中的商品搜索;APP 搜索,支持应用商店里的应用搜索;站内搜索,支持论坛、在线文档等搜索功能。咱们支持了大量搜索服务,它们主要有如下特色:

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

时序数据分析

image.png
时序数据分析,典型的时序数据包含:Metrics,即传统的服务器监控;整个腾讯云的监控都是基于 ES 的。APM,应用性能监控;物联网数据,智能硬件、工业物联网等产生的传感器数据。时序数据的特色是写入吞吐量特别高,ES 支持的同时也提供了丰富的多维统计分析算子。这类场景具备如下特色:

  • 高并发写入:线上单集群最大规模达到 600+节点、1000w/s 的写入吞吐。

  • 高查询性能:要求单条曲线 或者单个时间线的查询延时在 10ms~。

  • 多维分析:要求灵活、多维度的统计分析能力,好比咱们在查看监控的时候,能够按照地域、业务模块等灵活的进行统计分析。

上面经过腾讯的案例咱们了解了三大应用场景,

  • 日志实时分析场景

  • 搜索服务

  • 时序数据分析

另外从这三大应用场景咱们也能够概括出ES的几大优点:

一、具备高可用性、高扩展性;

二、查询速度快,性能佳;

三、搜索功能强大,高度匹配用户意图。

所以,能够看出,ES在日志实时分析和搜索方面的应用优点简直是无敌的!起码目前,在这两方面,尚未强劲的对手!

ElasticSearch在京东的应用

经过京东的案例,聊一聊ES在查询、检索、数据分析方面的应用场景

因为较高的性能和较低的使用门槛,京东内部有不少的场景都在使用 Elasticsearch。覆盖了京东多条业务线,同时也覆盖了不少应用场景:
image.png

补充关系型数据库的结构化数据查询

主要应用的业务是商品、促销、优惠券、订单、收银台、物流、对帐、评论等大数据量查询。此场景的核心诉求是高性能、稳定性和高可用性,部分场景会有检索要求,一般用于加速关系型数据库,业务系统经过 binlog 同步或业务双写完成数据同步。

全文检索功能

主要的应用场景是应用、安全、风控、交易等操做日志,以及京东部分品类商品搜索。此类日志化场景对写要求很高,查询性能及高可用等要求相对较低,大的业务写会达到数千万 / 秒,存储以 PB 为单位来计算。
这些场景对磁盘、内存有比较高的要求,所以,京东也作了相应优化,用于减小内存消耗,提高磁盘总体使用率,使用更廉价的磁盘来下降成本等等。

实时数据分析引擎,造成统计报表

主要应用的业务是物流单的各类分析、订单数据分析、用户画像等。由于业务数据分析纬度较多,flink、storm 等流式分析对于某些报表场景不太适用,批处理实时性又成为问题,因此近实时分析的 Elasticsearch 就成为了这些业务的选择。

从京东的案例中,咱们彷佛看到了,能够利用ES在某些场景下代替关系型数据库哦!不只如此,ES在实时数据分析领域,竟然也有一席之地!

ElasticSearch在去哪儿的应用

经过去哪儿的案例,聊一聊ES在查询方面的应用场景,能够简单的理解为"代替"mysql。注意代替加了引号,闭着眼睛想都不可能彻底代替。好比事务性。

15年去哪儿网酒店日均订单量达到30w+,随着多平台订单的聚合日均订单能达到100w左右。

原来采用的热表分库方式,即将最近6个月的订单的放置在一张表中,将历史订单放在在history表中。history表存储全量的数据,当用户查询的下单时间跨度超过6个月即查询历史订单表,此分表方式热表的数据量为4000w左右,当时能解决的问题。可是显然不能知足携程艺龙订单接入的需求。

若是继续按照热表方式,数据量将超过1亿条。全量数据表保存2年的可能就超过4亿的数据量。因此寻找有效途径解决此问题迫在眉睫。因为对这预计4亿的数据量还需按照预约日期、入住日期、离店日期、订单号、联系人姓名、电话、酒店名称、订单状态……等多个条件查询。因此简单按照某一个维度进行分表操做没有意义。

显然只经过DB来支撑大量的查询是不可取的,同时对于一些复杂的查询,Mysql支持得不够友好,因此Elasticsearch分布式搜索储存集群的引入,就是为了解决订单数据的存储与搜索的问题。

对订单模型进行抽象和分类,将经常使用搜索字段和基础属性字段剥离。DB作分库分表,存储订单详情;Elasticsearch存储搜素字段。

订单复杂查询直接走Elasticsearch,基于OrderNo的简单查询走DB,以下图所示。

从去哪儿的案例中,咱们彷佛看到了,关系型数据库撑不起的复杂查询,ES能够胜任

总结

何时应该用ElasticSearch?

一、典型搜索场景:闭着眼用它!

二、典型日志分析场景:闭着眼用它!

三、关系型数据库查询有瓶颈:考虑下用它!为啥是考虑?ES的优势在于查询,然而实践证实,在被做为数据库来使用,即写完立刻查询会有延迟。

四、数据分析场景:考虑下用它!为啥是考虑?简单通用的场景需求能够大规模使用,但在特定业务场景领域,仍是要选择更加专业的数据产品,如复杂聚合,ClickHouse相比 Elasticserach 作亿级别数据深度聚合需求会更加合适。

ElasticSearch有什么优点呢?

一、很简便的横向扩容,分布式的架构,能够轻松地对资源进行横向纵向扩缩容,能够知足不一样数据量级及查询场景对硬件资源的需求。能由数百台到万台机器搭建知足PB级的快速搜索,也能搭建单机版服务小公司。

二、查询速度快:ES底层采用Lucene做为搜索引擎,并在此之上作了多重优化,保证了用户对数据查询数据的需求。可"代替"传统关系型数据库,也可用于复杂数据分析,海量数据的近实时处理等。

三、相关性高:ES内部提供了完善的评分机制,会根据分词出现的频次等信息对文档进行相关性排序,保证相关性越高的文档排序越靠前。另外还提供了包括模糊查询,前缀查询,通配符查询等在内的多种查询手段,帮助用户快速高效地进行检索。

四、功能点多但使用比较简便,开箱即用,性能优化比较简单

五、生态圈丰富,社区活跃,适配多种工具。以下图,处理日志和输出到Elasticsearch,您可使用日志记录工具,如Logstash(www.elastic.co/products/logstash),搜索和可视化界面分析这些日志,你可使用Kibana(www.elastic.co/产品/ kibana),即传说中的ELK技术栈。另外当前主流的大数据框架也几乎都支持ES,好比Flink和ES就是个完美搭档。

image

本文参考:

腾讯万亿级 Elasticsearch 技术解密

搜索引擎怎么选?携程酒店订单Elasticsearch实战

Elasticsearch在京东的使用场景

本文来源于公众号:【胖滚猪学编程】。一枚集颜值与才华于一身,不算聪明却足够努力的女程序媛。用漫画形式让编程so easy and interesting!求关注!

相关文章
相关标签/搜索