点击上方蓝色字体,选择“设为星标

回复”资源“获取更多资源

国内现在有大量的公司都在使用 Elasticsearch,包括携程、滴滴、今日头条、饿了么、360安全、小米、vivo等诸多知名公司。

除了搜索之外,结合Kibana、Logstash、Beats,Elastic Stack还被广泛运用在大数据近实时分析领域,包括日志分析、指标监控、信息安全等多个领域。它可以帮助你探索海量结构化、非结构化数据,按需创建可视化报表,对监控数据设置报警阈值,甚至通过使用机器学习技术,自动识别异常状况。

一、京东到家订单中心 Elasticsearch 演进历程

京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调用量都非常大,造成了订单数据读多写少的情况。京东到家的订单数据存储在MySQL中,但显然只通过DB来支撑大量的查询是不可取的,同时对于一些复杂的查询,Mysql支持得不够友好,所以订单中心系统使用了Elasticsearch来承载订单查询的主要压力。

Elasticsearch 做为一款功能强大的分布式搜索引擎,支持近实时的存储、搜索数据,在京东到家订单系统中发挥着巨大作用,目前订单中心ES集群存储数据量达到10亿个文档,日均查询量达到5亿。随着京东到家近几年业务的快速发展,订单中心ES架设方案也不断演进,发展至今ES集群架设是一套实时互备方案,很好的保障了ES集群读写的稳定性。

如上图,订单中心ES集群架设示意图。整个架设方式通过VIP来负载均衡外部请求,第一层gateway节点实质为ES中client node,相当于一个智能负载均衡器,充当着分发请求的角色。第二层为data node,负责存储数据以及执行数据的相关操作。整个集群有一套主分片,二套副分片(一主二副),从网关节点转发过来的请求,会在打到数据节点之前通过轮询的方式进行均衡。集群增加一套副本并扩容机器的方式,增加了集群吞吐量,从而提升了整个集群查询性能。

当然分片数量和分片副本数量并不是越多越好,在此阶段中,对选择适当的分片数量做了近一步探索。分片数可以理解为Mysql中的分库分表,而当前订单中心ES查询主要分为两类:单ID查询以及分页查询。分片数越大,集群横向扩容规模也更大,根据分片路由的单ID查询吞吐量也能大大提升,但对于聚合的分页查询性能则将降低。分片数越小,集群横向扩容规模更小,单ID的查询性能也将下降,但对于分页查询,性能将会得到提升。所以如何均衡分片数量和现有查询业务,我们做了很多次调整压测,最终选择了集群性能较好的分片数。

由于大部分ES查询的流量都来源于近几天的订单,且订单中心数据库数据已有一套归档机制,将指定天数之前已经关闭的订单转移到历史订单库。

架构的快速迭代源于业务的快速发展,正是由于近几年到家业务的高速发展,订单中心的架构也不断优化升级。而架构方案没有最好的,只有最合适的。相信再过几年,订单中心的架构又将是另一个面貌,但吞吐量更大,性能更好,稳定性更强,将是订单中心系统永远的追求。

二、携程Elasticsearch应用案例

1. 携程酒店订单Elasticsearch实战

选择对分片后的数据库建立实时索引,把查询收口到一个独立的 Web Service,在保证性能的前提下,提升业务应用查询时的便捷性。

最终我们选择了 Elasticsearch,看中的是它的轻量级、易用和对分布式更好的支持,整个安装包也只有几十兆。

http://developer.51cto.com/art/201807/579354.htm

2. 携程机票ElasticSearch集群运维驯服记

这个是比较通用的数据的流程,一般会通过Kafka分离产生数据的应用程序和后面的平台,通过ETL落到不同的地方,按照优先级和冷热程度采取不同的存储方式。一般来说,冷数据存放到HDFS,如果温数据、或者热数据会采用Database以及Cache。

一旦数据落地,我们会做两方面的应用,第一个方面的应用是传统BI,比如会产生各种各样的报表,报表的受众是更高的决策层和管理层,他们看了之后,会有相应的业务调整和更高层面的规划或转变。这个使用路径比较传统的,在数据仓库时代就已经存在了。现在有一种新兴的场景就是利用大数据进行快速决策,数据不是喂给人的,数据分析结果由程序来消费,其实是再次的反馈到数据源头即应用程序中,让他们基于快速分析后的结果,调整已有策略,这样就形成了一个数据使用的循环。

这样我们从它的输入到输出会形成一种闭环,而且这个闭环全部是机器参与的,这也是为什么去研究这种大规模的,或者快速决策的原因所在。如果数据最终还会给人本身来看的话,就没有必要更新那么快,因为一秒钟刷新一次或者10秒钟刷新一次对人是没有意义的,因为我们脑子不可能一直转那么快,基于数据一直的做调整也是不现实的,但是对机器来讲,就完全没有问题。

http://www.sohu.com/a/199672012_411876

3. 携程:大规模 Elasticsearch 集群管理心得

目前,我们最大的日志单集群有120个data node,运行于70台物理服务器上。数据规模如下:

  • 单日索引数据条数600亿,新增索引文件25TB (含一个复制片则为50TB)

  • 业务高峰期峰值索引速率维持在百万条/秒

  • 历史数据保留时长根据业务需求制定,从10天 - 90天不等

  • 集群共3441个索引、17000个分片、数据总量约9300亿, 磁盘总消耗1PB

https://www.jianshu.com/p/6470754b8248

三、去哪儿:订单中心基于elasticsearch 的解决方案

15年去哪儿网酒店日均订单量达到30w+,随着多平台订单的聚合日均订单能达到100w左右。原来采用的热表分库方式,即将最近6个月的订单的放置在一张表中,将历史订单放在在history表中。history表存储全量的数据,当用户查询的下单时间跨度超过6个月即查询历史订单表,此分表方式热表的数据量为4000w左右,当时能解决的问题。但是显然不能满足携程艺龙订单接入的需求。如果继续按照热表方式,数据量将超过1亿条。全量数据表保存2年的可能就超过4亿的数据量。所以寻找有效途径解决此问题迫在眉睫。由于对这预计4亿的数据量还需按照预定日期、入住日期、离店日期、订单号、联系人姓名、电话、酒店名称、订单状态……等多个条件查询。所以简单按照某一个维度进行分表操作没有意义。Elasticsearch分布式搜索储存集群的引入,就是为了解决订单数据的存储与搜索的问题。

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

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

系统伸缩性:Elasticsearch 中索引设置了8个分片,目前ES单个索引的文档达到1.4亿,合计达到2亿条数据占磁盘大小64G,集群机器磁盘容量240G。

https://elasticsearch.cn/article/6197

四、Elasticsearch 在58集团信息安全部的应用

全面介绍 Elastic Stack 在58集团信息安全部的落地,升级,优化以及应用。

包括如下几个方面:接入背景,存储选型,性能挑战,master node以及data node优化,安全实践,高吞吐量以及低延迟搜索优化;kibana 的落地,本地化使其更方便产品、运营使用。

https://elasticsearch.cn/slides/124

五、滴滴Elasticsearch多集群架构实践

滴滴 2016 年初开始构建 Elasticsearch 平台,如今已经发展到超过 3500+ Elasticsearch 实例,超过 5PB 的数据存储,峰值写入 tps 超过了 2000w/s 的超大规模。

Elasticsearch 在滴滴有着非常丰富的使用场景,例如线上核心的打车地图搜索,客服、运营的多维度查询,滴滴日志服务等近千个平台用户。

先看看滴滴 Elasticsearch 单集群的架构:

滴滴在单集群架构的时候,写入和查询就已经通过 Sink 服务和 Gateway 服务管控起来。

1. Sink服务

滴滴几乎所有写入 Elasticsearch 的数据都是经由 kafka 消费入到 Elasticsearch。kafka 的数据包括业务 log 数据、mysql binlog 数据和业务自主上报的数据,Sink 服务将这些数据实时消费入到 Elasticsearch。

最初设计 Sink 服务是想对写入 Elasticsearch 集群进行管控,保护 Elasticsearch 集群,防止海量的数据写入拖垮 Elasticsearch,之后我们也一直沿用了 Sink 服务,并将该服务从 Elasticsearch 平台分离出去,成立滴滴 Sink 数据投递平台,可以从 kafka 或者 MQ 实时同步数据到 Elasticsearch、HDFS、Ceph 等多个存储服务。

有了多集群架构后,Elasticsearch 平台可以消费一份 MQ 数据写入多个 Elasticsearch 集群,做到集群级别的容灾,还能通过 MQ 回溯数据进行故障恢复。

2. Gateway 服务

所有业务的查询都是经过 Gateway 服务,Gateway 服务实现了 Elasticsearch 的 http restful 和 tcp 协议,业务方可以通过 Elasticsearch 各语言版本的 sdk 直接访问 Gateway 服务,Gateway 服务还实现了 SQL 接口,业务方可以直接使用 SQL 访问 Elasticsearch 平台。

Gateway 服务最初提供了应用权限的管控,访问记录,限流、降级等基本能力,后面随着平台演进,Gateway 服务还提供了索引存储分离、DSL 级别的限流、多集群灾备等能力。

https://mp.weixin.qq.com/s/K44-L0rclaIM40hma55pPQ

六、Elasticsearch实用化订单搜索方案

搜索引擎中,主要考虑到Elasticsearch支持结构化数据查询以及支持实时频繁更新特性,传统订单查询报表的痛点,以及Elasticsearch能够帮助解决的问题。

订单搜索系统架构

整个业务线使用服务化方式,Elasticsearch集群和数据库分库,作为数据源被订单服务系统封装为对外统一接口;各前、后台应用和报表中心,使用服务化的方式获取订单数据。

你爱或者不爱,他都在那里 - 云/边/端三协同下的边缘计算

突破性能瓶颈!ElasticSearch百亿级数据检索优化案例

ElasticSearch读写底层原理及性能调优

欢迎点赞+收藏+转发朋友圈素质三连

文章不错?点个【在看】吧! 

Elasticsearch在各大互联网公司的应用案例相关推荐

  1. Elasticsearch 在各大互联网公司大量真实的应用案例!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:Rickie cnblogs.com/rickie/p/11 ...

  2. Elasticsearch对垒8大竞品技术,孰优孰劣?

    来自:DBAplus社群 作者介绍 李猛(ynuosoft),Elastic-stack产品深度用户,ES认证工程师,2012年接触Elasticsearch,对Elastic-Stack开发.架构. ...

  3. Elasticsearch对垒8大竞品技术

    Elasticsearch当前热度排名很高 青出于蓝,而胜于蓝. 入行Elastic-Stack技术栈很久很久,为了免于知识匮乏眼光局限,有必要到外面的世界看看,丰富自己的世界观.本篇内容从Elast ...

  4. 超详攻略!Databricks 数据洞察 - 企业级全托管 Spark 大数据分析平台及案例分析

    简介: 5分钟读懂 Databricks 数据洞察 ~ 更多详细信息可登录 Databricks 数据洞察 产品链接:https://www.aliyun.com/product/bigdata/sp ...

  5. BDTC 2017 | “TOP10大数据应用最佳案例实践”十佳获奖单位精彩分享

    [CSDN现场报道]12月7-9日,由中国计算机学会主办,CCF 大数据专家委员会承办,中国科学院计算技术研究所.中科天玑数据科技股份有限公司.CSDN协办的2017中国大数据技术大会(BDTC 20 ...

  6. 20大互联网公司金融业务史上最全盘点

    - 文丨不凡商业记者 石富元 - 金融已经成为继广告和游戏之后的第三大流量变现工具. 曾经的互联网金融是不折不扣的风口,但是随着最近P2P的行业的整体波动,很多人也开始重新审视互金. 互金的历史并不长 ...

  7. 各大互联网公司架构演进之路汇总 | 2020最新最全

    △Hollis, 一个对Coding有着独特追求的人△ 整理 l Hollis 来源 l Hollis(ID:hollischuang) 在互联网行业中,有两种优秀的技术人,一种是热衷于分享技术的,一 ...

  8. [转]国内各大互联网公司相关技术站点2.0版 (集合腾讯、阿里、百度、搜狐、新浪、360等共49个)...

    利用闲暇时间整理了一份国内各大互联网公司的相关技术站点,希望能够对大家有所帮助,也欢迎各位帮忙补充. 腾讯系列(13)  阿里系列(18)  百度系列(3)  搜狐系列(3)  新浪系列(2)  36 ...

  9. 大数据处理平台与案例

    大数据能够在国内得到快速发展,甚至是国家层面的支持,最为重要的一点就是我们纯国产大数据处理技术的突破以及跨越式发展.在互联网深刻改变我们的生活.工作方式的当下,数据就成为了最为重要的资料.尤其是数据安 ...

最新文章

  1. 背景图片等比缩放的写法background-size简写法
  2. vs2010快捷方式
  3. 2019-11-10 秩和奇异的一些概念
  4. mysql命令:查看表结构
  5. codeforces1493 D. GCD of an Array(数论)
  6. lastindexof方法_Java Vector lastIndexOf()方法与示例
  7. 定时任务 cron 表达式详解
  8. 移动端拖拽排序 html,移动端拖拽排序
  9. carsim中质心加速度_Carsim整车建模参数.doc
  10. js中判断数组中是否包含某元素的方法
  11. shell 提取sql 的字段名表名_Mysql常用SQL语句集锦 |建议转发收藏
  12. ESL系统的Docker化部署
  13. 使用MyBatis快速生成代码
  14. win7下安装PADS2007
  15. 《码出高效---java》PDF,有学习java的小伙伴可以看看,阿里巴巴出版的书籍
  16. dft频谱泄漏matlab,对于DFT频谱泄漏问题的研究
  17. 柳永 天涯 青砚1989
  18. 从Logistic回归到神经网络的一点感悟
  19. 有个美剧叫美国恐怖故事_5个系统管理员恐怖故事
  20. revit二次开发 创建标注标记

热门文章

  1. Windows 服务器系统安全防御加固方法
  2. 计算机操作系统——分时系统和实时系统
  3. 操作系统之多道批处理,分时,实时系统
  4. 单片机差分升级算法(STM32,M0,M3,M4等芯片都适用)
  5. 小楷的由来,小楷适合写小字
  6. php+mysql 留言板系统 登录 管理员 审核回复 学生适用
  7. org.eclipse.wst.xsl.jaxp.debug.invoker.TransformationException
  8. Python 异步库 asyncio、aiohttp
  9. C2429 语言功能“结构化绑定“需要编译器标志“/std:c++17“
  10. Xib与Nib区别联系