阿里云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月前
|
机器学习/深度学习 存储 监控
Elasticsearch 在日志分析中的应用
【9月更文第2天】随着数字化转型的推进,日志数据的重要性日益凸显。日志不仅记录了系统的运行状态,还提供了宝贵的洞察,帮助企业改进产品质量、优化用户体验以及加强安全防护。Elasticsearch 作为一个分布式搜索和分析引擎,因其出色的性能和灵活性,成为了日志分析领域的首选工具之一。本文将探讨如何使用 Elasticsearch 作为日志分析平台的核心组件,并详细介绍 ELK(Elasticsearch, Logstash, Kibana)栈的搭建和配置流程。
95 4
|
3月前
|
存储 人工智能 自然语言处理
阿里云Elasticsearch AI场景语义搜索最佳实践
本文介绍了如何使用阿里云Elasticsearch结合搜索开发工作台搭建AI语义搜索。
17262 68
|
2月前
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
1月前
|
SQL 人工智能 运维
在阿里云日志服务轻松落地您的AI模型服务——让您的数据更容易产生洞见和实现价值
您有大量的数据,数据的存储和管理消耗您大量的成本,您知道这些数据隐藏着巨大的价值,但是您总觉得还没有把数据的价值变现出来,对吗?来吧,我们用一系列的案例帮您轻松落地AI模型服务,实现数据价值的变现......
132 3
|
2月前
|
消息中间件 监控 Kafka
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
【8月更文挑战第13天】Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
90 3
|
2月前
|
Kubernetes Java 索引
Elasticsearch on K8S 开启慢日志
本文档指导如何在Elasticsearch on PaaS环境中手动配置慢日志。首先通过API设置索引的慢日志阈值,接着创建`log4j2.properties`的ConfigMap以定义日志滚动策略,并修改Elasticsearch配置引入此ConfigMap。最后,通过Kubernetes命令检查Pod内的`logs`目录以查看生成的慢日志文件。需注意,不当配置可能会影响系统性能。[官方文档](https://www.elastic.co/guide/en/elasticsearch/reference/6.8/logging.html)提供更多细节。
108 3
|
2月前
|
机器学习/深度学习 数据采集 缓存
Elasticsearch与机器学习集成的最佳实践
【8月更文第28天】Elasticsearch 提供了强大的搜索和分析能力,而机器学习则能够通过识别模式和预测趋势来增强这些能力。将两者结合可以实现更智能的搜索体验、异常检测等功能。
48 0
|
3月前
|
监控 数据管理 关系型数据库
数据管理DMS使用问题之是否支持将操作日志导出至阿里云日志服务(SLS)
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
2月前
|
敏捷开发 前端开发 测试技术
阿里云云效产品使用合集之如何将云效构建执行过程中产生的日志通过邮件发送
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之appStack部署时没有日志是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。

相关产品

  • 检索分析服务 Elasticsearch版
  • 下一篇
    无影云桌面