阿里云Elasticsearch日志场景最佳实践及引擎内核优化

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 本文整理自阿里巴巴技术专家郭嘉梁(梁楹)在 阿里云Elasticsearch 自研引擎年度发布 的演讲。

摘要本文整理自阿里巴巴技术专家郭嘉梁(梁楹)在 阿里云Elasticsearch 自研引擎年度发布 的演讲。主要内容包括:

  1. 阿里云Elasticsearch 日志场景最佳实践
  2. 阿里云Elasticsearch 引擎内核优化
  3. 阿里云Elasticsearch 性能评测
  4. 阿里云Elasticsearch 产品演示


一、阿里云Elasticsearch 日志场景最佳实践

1. 阿里云Elasticsearch 日志场景概况 

阿里云Elasticsearch(简称ES)在线上拥有1W+的集群和6W+节点,为用户提供线上检索和分析服务,在这些集群中,日志集群占比35%,其平均CPU核数超过40个,数据量达到PB级别。日志集群具有数量多、单集群规模大的特点,覆盖包括游戏、医药、汽车等领域。

 

2. 日志场景集群特点

在进行引擎内核优化之前,首先需要了解日志场景集群的共性特点:

 

  • 写入吞吐高:在线头部用户的单日写入吞吐量可达数十TB级;
  • 查询秒级响应:日志场景集群通常会作为微服务的问题排查,或监控数据的大盘展示,因此查询端的响应是否及时,直接影响用户端的体验;
  • 存储数据量大:日志场景集群的单日写入量大,数据存储周期长;
  • 倾向访问近期数据


image.png

3. 日志场景自建集群的痛点:性价比低

  • 贵:写入吞吐高, 存储时间长,导致计算资源和存储资源成本高;
  • 慢:数据量大,导致扩容/宕机恢复慢, 数据迁移慢;
  • 差:冷/热查询没有隔离机制,导致稳定性差;
  • 难:索引多, 生命周期不同,导致冷/热数据迁移难管理;

 

4. 日志场景最佳实践大图

基于以上痛点,ES日志场景进行了诸多优化,主要包含以下五个方面:



image.png


  • 冷热查询共享计算资源:冷热数据查询隔离,在维持查询稳定性的基础上,将用户计算成本降低50%;
  • 低成本自研海量存储引擎:存储成本降低70%;
  • 计算存储分离:海量冷数据快速恢复、快速弹性;
  • 冷/热数据自动迁移:免运维;
  • 托管写入:引入 Indexing Service 写入托管服务,用户无需为索引构建消耗资源,写入性能提升10倍以上;



5. 日志场景最佳实践成果

ES 日志场景最佳实践,为用户提供了高性价比的服务,主要体现在四个方面:

 

  • 高稳定:
  • 通过 IndexingService 让写入性能提升10倍;
  • 针对自研海量存储引擎进行存储优化使查询秒级响应;

  • 低成本:
  • 自研海量存储引擎让存储成本降低70%;
  • 冷热共享计算资源技术让计算成本降低50%;


  • 高易用:
  • 冷热数据自动迁移,高级监控功能实现免运维,全观测;

  • 高可用:
  • 通过自研海量存储引擎共享存储,以及计算存储分离技术,使用户的海量冷数据可以做到快速弹性,快速恢复;


二、阿里云Elasticsearch 引擎内核优化


1. 共享冷/热计算资源

image.png

  • 计算成本降低50%:ES 提供冷热共享计算规格组,用户无需为冷数据单独购买 ECS 资源;
  • AJDK 租户隔离技术:将冷/热查询的线程池置于不同租户中,当冷查询的线程或 CPU 资源影响到热查询,会优先保证热查询返回;
  • 查询隔离等;


2. 查询性能优化

  • 冷存储(Lucene查询剖析)

自研海量存储引擎的单次IO访问延迟可达到100毫秒以上,使用Lucene原生查询框架的端到端查询,对于这种延迟是无法接受的。


Lucene查询模型分为四个步骤(见下图):


  • 根据用户的查询语句进行倒排链求交,获取文档ID列表;
  • 如用户有排序或聚合的需求,根据文档ID列表串行查询 DocValue 索引,获取文档ID对应的指定字段值;
  • 对指定字段值进行排序和聚合操作;
  • 如客户有召回原文的需求,则需要查询原文索引并返回原文;


image.png


其中第二步访问 DocValue 的随机查询,是导致查询延迟高的重点。假设用户召回100个文档ID,单次IO查询是100毫秒,那么100个文档的排序或聚合操作就有10秒的端到端查询延迟。


  • 冷存储

针对上述查询延迟问题,对Lucene的原生执行模式进行了如下改造:

  • 按行查询→按列查询(见下图):由多线程完成获取 DocValue 文档值;


image.png


  • AJDK 的 Wisp 协程技术:降低多线程间的切换开销;
  • 预读:采用块的预读策略,以加速倒排链的访问;
  • Codec 优化:采用大块压缩技术使单次IO可以返回多个文档值,从而降低总体IO次数。

 

  • 冷存储(智能缓存)

在查询模式基础上提供智能缓存机制,在自研海量存储引擎中加入 SmartCache,对多种不同类型的索引采用自适应的淘汰策略,可以适配多种查询场景。比如针对 DocValue 索引采用了 N-LRU 的淘汰策略,防止一次对历史数据的分析型查询直接将 DocValue 的 Cache 刷满,导致淘汰一些有效数据。


image.png

3. 写入性能优化

使用 Indexing Service 中心化索引构建集群。

  • 写入性能提升10倍:用户集群在收到写入请求后,将写入请求转发至 Indexing Service 集群,整个索引构建过程是在中心化集群完成,因此用户集群无需为索引构建消耗计算资源;
  • 后端双集群互备保障高可用;
  • 写入托管, 按量计费,进一步降低用户的使用成本。

image.png

4. 计算存储分离

冷数据采用自研海量存储引擎的存储介质,属于共享存储,用户的写入只在主分片进行构建,所有副本节点都是加载共享存储中的数据,真正做到一写多读,以及计算和存储解耦。由于数据只存储一份,在节点扩容或节点宕机时,无需进行节点间的数据拷贝,彻底消除海量数据迁移的开销。


image.png

三、阿里云Elasticsearch 性能评测


1. 自研海量存储引擎查询性能评测 

a.  自研海量存储引擎成本

自研海量存储引擎的存储单价是0.15元/GB/月,对比高效云盘的0.35元/GB/月,降低了60%;对比SSD的1元/GB/月,降低80%以上;

image.png

b.  自研海量存储引擎查询延迟

优化后的自研海量存储引擎,对比高效云盘在查询延迟方面有显著降低。

image.png

在自研海量存储引擎与高效云盘的查询延迟对比图中,查询数据级是1.5TB索引,在24个16C64GB节点进行测试,单位是毫秒,针对两种查询语句分别进行测试,一种是只有对时间字段的简单查询,一种是对指定字段有AGG聚合分析的分析型查询。测试结果表明,自研海量存储引擎的查询性能更好,查询延迟降低了30%左右。


综上对比高效云盘,自研海量存储引擎的成本降低了60%,而总体查询性能提升了30%,自研海量存储引擎为用户提供了高性价比的存储介质选择。


2. IndexingService 写入性能评测

针对开启 Indexing Service 的集群和通用商业版集群进行写入 TPS 对比,对三种不同规格组(2C8GB,4C16GB,8C32GB)进行对比。对比结果显示:无论在哪个规格组,Indexing Service 的写入性能比原生 ES 写入性能提高了7-10倍。


image.png


四、阿里云Elasticsearch 产品演示

1. 进入阿里云Elasticsearch 产品控制台

https://elasticsearch.console.aliyun.com/


image.png


2. 创建 Elasticsearch 实例

image.png

3. 进入阿里云Elasticsearch 购买页面

其中有两种类型的集群供选择:通用商业版和日志增强版。日志增强版提供上面提到的针对日志场景的内核优化,如果用户需要存储日志数据,并希望享受阿里云提供的自研能力,可以选择日志增强版进行创建。


image.png

4. 进行集群配置

用户可以选择实例所在区域和可用区。在实例规格栏可以看到提供的冷热共享资源规格组和自研海量存储引擎存储。

image.png

5. 进入集群网络资源配置,选择专有网络和虚拟交换机。

image.png

6. 设置集群实例名称、登录名称及密码。


image.png

7. 进入订单确认页面,注意要勾选服务协议。

image.png

8. 通过控制台的 Kibana 访问 ES 实例。

image.png

9. Kibana 可视化控制默认公网无法访问,因此需要先配置公网的白名单入口

image.png

配置公网访问的白名单IP:

image.png

10. 进入 Kibana 登录页面,输入集群的用户名和密码后进入 Kibana 控制台。

image.png

image.png

11. 在 Kibana 开发工具中进行 ES 集群 API 访问,如访问集群元数据,创建索引,创建文档并插入数据,搜索数据等。


image.png

访问集群元数据:

image.png

创建索引:

image.png

创建文档并插入数据:

image.png

搜索数据:

image.png

12. 高级监控和报警功能。

用户在高级监控页面可以看到集群层面和节点层面的监控信息,同时可以根据集群或节点的使用水位,配置相应的报警规则。

image.png


13. 日志数据查询。

为方便集群问题排查,系统提供了集群的日志展示,包括主日志,Searching 慢日志,Indexing 慢日志,GC 日志和 ES 访问日志。

image.png

用户在搜索框输入自定义查询语句和指定时间范围,即可进行日志数据查询。

image.png

以上是 Elasticsearch 控制台中的案例体验 Demo。欢迎大家到阿里云Elasticsearch 平台进行实例体验。

image.png

END


阿里云 ES 团队积极参与社区建设,与 Elasticsearch 社区和国内团队紧密合作,基于 Elasticsearch 在云原生的实践,推出了包括开发者报告、Elasticsearch 全观测、技术解析等电子书,对 ES 感兴趣的朋友可以多多关注。同时,在 ES 社区也会有丰富的线上线下活动,欢迎大家参与。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
|
存储 SQL 监控
|
1月前
|
自然语言处理 监控 数据可视化
|
1月前
|
运维 监控 安全
|
1月前
|
存储 数据采集 监控
开源日志分析Elasticsearch
【10月更文挑战第22天】
50 5
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
290 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
10天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
|
2月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
318 3
|
20天前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
|
2月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1699 14
|
1月前
|
存储 监控 安全
什么是日志管理,如何进行日志管理?
日志管理是对IT系统生成的日志数据进行收集、存储、分析和处理的实践,对维护系统健康、确保安全及获取运营智能至关重要。本文介绍了日志管理的基本概念、常见挑战、工具的主要功能及选择解决方案的方法,强调了定义管理目标、日志收集与分析、警报和报告、持续改进等关键步骤,以及如何应对数据量大、安全问题、警报疲劳等挑战,最终实现日志数据的有效管理和利用。

热门文章

最新文章

相关产品

  • 检索分析服务 Elasticsearch版