Skip to content

Latest commit

 

History

History
107 lines (62 loc) · 10.9 KB

LogiEM设计说明.md

File metadata and controls

107 lines (62 loc) · 10.9 KB

1、背景介绍

LogiEM 是基于滴滴内部开发的的一套 ES 搜索平台(内部代号 Arius )优化开源而来,它是滴滴搜索团队的一整套 ES 搜索服务和治理体系化思考的全面展现。

目前滴滴内部 ES 集群的规模在 60+ 集群,2500+ 节点,10PB 的数据,1500w 写入 TPS, 10w+ 查询 QPS。在滴滴内部大量使用 ES 来作为日志检索、Mysql 实时数据快照、分布式文档数据库、搜索引擎服务等业务场景的基础搜索服务,并在开源 Elasticsearch 基础上提供企业级权限管控、离线索引快速导入、跨集群复制、索引模板服务、DSL审核与分析等功能。

但随着业务量的扩大和集群规模的激增,日常的 ES 使用和运维面对着一系列问题,主要分为以下几类:

  • 用户使用侧:ES 的学习成本较高,集群、索引、mapping、dsl查询等概念很多,初级用户理解和使用难度较大,经常存在使用错误的情况;ES 使用灵活,场景丰富,用户存在大量乱用从而导致集群不稳定的情况。大规模用户使用下,用户答疑成本急剧增加,迫切需要平台化建设。

  • 运维管控侧:大量的 ES 集群需要监控和管理,在集群出现出现问题的时候集群的指标需要被快速采集和分析,ES 集群的各种运维操作(重启、升级、扩缩容)需要能做到自动化才能减轻运维同学的日常工作压力。

  • 性能稳定性:千万级写入 TPS,十万级查询 QPS 下,ES 集群的性能和稳定性都受到很大的考验,同时滴滴内部也在积极推进成本优化,所以迫切需要在引擎的性能和稳定性上进行进一步的优化。

2、整体设计

从上面问题的整理和分析来看,三个方面的问题是相互交叉,相互影响的,单从一个点无法解决整体的问题,因此需要一个全面的解决方案,以及一整套的应用服务来支撑。

2.1 设计思路

滴滴内部从平台建设、运维建设、引擎建设三个方面着手,相互配合,相互递进,构建了一整套的搜索服务解决方案。接下来会详细介绍三者的功能,它们的核心功能如下图所示:

1001

2.2 平台分层

在介绍 LogiEM 具体的功能之前,先介绍下 LogiEM 的分层结构,LogiEM 服务是一个典型的分层服务结构,在业务的具体设计和实现上我们分为以下几层:

  • 展现层:LogiEM 提供了一套前端用户平台,并且也提供了一组开放的API供外部系统调用。
  • 服务层:LogiEM 在集群管控和模板管控的基础上,提供了丰富的各式服务。
  • 管控层:LogiEM 主要提供对于 ES 引擎的管控,也提供基于模板的索引管控,具体介绍见后面。
  • 网关层:LogiEM 提供一个兼容 ES Restclient 接口的网关 —— Arius GateWay。
  • 引擎层:LogiEM 支撑管控滴滴开发的 ES 引擎,也支撑开源的 ES 引擎。
  • 资源层:LogiEM 平台支持物理机、虚拟机、容器部署。

1003

2.3 应用功能

接下来介绍下 LogiEM 的应用组成和功能结构,LogiEM 服务由两个后端服务和一个前端应用构成:

  • Arius Web Console:LogiEM 的前端工程,它主要提供展示层的能力,提供界面化操作功能和丰富的指标展示,并且集成了一个内嵌 kibana 可以通过 Arius GateWay 连接所有 LogiEM 纳管的 ES 集群,方便用户使用。
  • Arius Admin:LogiEM 的核心工程,它主要提供管控层和服务层能力,LogiEM 纳管的 ES 集群的所有管理和监控能力在这里实现。
  • Arius GateWay:LogiEM 纳管的 ES 集群的网关系统,它主要是提供网关层能力,实现了一系列查询和写入 ES 集群的特性能力。

LogiEM 提供便捷的部署脚本,具体可以参考:LogiEM 平台部署说明

LogiEM 提供平台、运维、引擎等多维度的能力,LogiEM 的功能图如下图所示:

  • 开源特性:用户只用把自己运维的集群接入到 LogiEM,在开源 LogiEM 上就直接可以使用的能力,如:集群的指标采集和监控、集群索引的监控和管理等、接入 Gateway 后还可以获取到全量的查询写入指标。
  • 开源滴滴特性:用户把自己运维的集群接入到 LogiEM 后,按照 LogiEM 的规则创建好索引模板支持,就可以使用的能力,这一块主要和滴滴开发的索引模板服务相关,如:模板的升级、模板主备、查询写入限流等。
  • 商业特性:用户把自己运维的集群接入到 LogiEM 后,需要商业付费后才可以使用的能力,这一块主要包括 ES 集群管控和 didi-es 引擎开发的一些能力,如:ES 集群运维操作能力、滴滴 ES 引擎的性能优化等。
  • 规划特性:LogiEM 开源之后,后续规划的一些能力,重点关注的能力有:集群拓扑分析、Log 分析诊断、DSL 查询回放、索引重建、索引备份、Trace分析诊断、索引模板反向纳管。

1002

3、平台建设

平台建设的主要目标是解决用户使用 ES 过程中的高频问题,并构建一套 ES 服务和管控系统,用以降低用户使用 ES 的成本,规范用户使用习惯,提升用户使用体验,降低日常开发和运维管理成本。

为了达成以上目标,滴滴搜索平台以索引模板为核心,以及在索引模板的基础上构建的一系列模板服务。 滴滴搜索平台的索引模板是指用户使用的实际物理索引的在搜索平台上的元数据,它包括的模板的名称、存储格式、保存周期、schema(mapping)、责任人、所在集群、分区字段、查询写入限流值等信息。

在索引模板的基础上,我们构建了以下功能和系统:

  • Arius Gateway:它是 LogiEM 体系的 ES 网关,它提供了完全适配原生 ES RestClient 的接口功能,同时还提供了一些附加功能,如:查询/写入限流、权限校验、ES 版本兼容、跨集群访问。通过统一网关的建设,用户对 ES 的查询写入行为得到了监控和有效的控制,从而为后续索引级权限校验、集群跨版本升级、版本兼容、dsl 分析、查询写入限流提供了基础。

  • Arius Admin 模板服务:LogiEM 平台的核心是管理索引模板,所有保存在集群中的索引都需要在 LogiEM 平台上先创建索引对应的模板,基于 LogiEM 平台的索引模板我们开发了一系列模板服务和能力。具体提供的模板服务可以参考:LogiEM 模板服务。这些模板服务再结合前端产品的设计,将用户常见的索引类操作以产品化的形式在平台上呈现,比如:LogiEM 将索引模板的 mapping 以表格化的形式提供用户来配置,降低了用户直接操作 json 格式 mapping 的理解和操作成本。

  • 日常使用最佳实践沉淀:LogiEM 团队结合滴滴内部对 ES 的使用经验,总结了一些使用 ES 和 LogiEM 平台的最佳实践经验。具体可以参考:LogiEM 平台最佳实践。通过最佳实践的整理,用于指导用户的实际使用 ES 的方式,从而从源头开始逐步降低用户不合理使用的情况,从而最终降低用户的问题和答疑工作量。

4、运维建设

针对大规模 ES 集群运维中存在的问题,LogiEM 在运维功能建设过程中主要关注以下三点:

  • 日常集群操作可视化:LogiEM 借助夜莺物理机的命令下发能力(具体参见:xxxx),构建了一整套 ES 集群机器级别的平台化操作和管理的能力,这个在内部叫做 ECM(ES Cluster Manager)。它在滴滴搜索平台上提供了便捷的集群部署、集群重启、集群升级、集群扩容、插件安装、集群配置变更等能力,并提供集群变更过程中详情的进度和日志信息展现,让运维人员日常不需要登录机器就可以快速的进行集群操作和过程查看,极大的降低运维成本。
  • 多维度指标采集和展现:为了提升日常运维过程中问题定位的效率,LogiEM 提供了多种维度的指标采集和展现能力,主要有:集群级别的总览指标、节点级别的详细指标、索引基本指标、网关指标,用户 dsl 统计指标等。
  • 运维常用功能工具化:LogiEM 还把一些运维常用的功能集成到平台上,如:构建 DCDR 主备链路、主备索引切换、索引动态升版本等。

5、引擎建设

结合滴滴内部 ES 集群的使用经验和实际需要,滴滴搜索团队在引擎上的建设主要有以下几点:

  • ES 集群写入性能优化:滴滴搜索团队针对日志大量写入的场景,对 ES 写入过程中的长尾效应进行优化,提升了 ES 集群写入性能,具体可以参考:滴滴 ElasticSearch 千万级 TPS 写入性能翻倍技术解析。
  • ES 集群 master 节点性能优化:滴滴搜索团队针对 ES 集群 master 节点处理性能优化,使得单集群能支持大最大 shard 数从万级提升到数十万级。
  • 滴滴跨集群同步( DCDR ):滴滴搜索团队自研的跨集群同步能力,类似于 ES 官方的 CCR能力。
  • 滴滴索引快速构建插件( FastIndex ):滴滴搜索团队自研的 TB 级别数据离线快速构建索引能力。

6、平台优势

LogiEM 是在滴滴搜索团队多年沉淀的基础上全面优化而来,它从平台、运维、引擎建设三个方面来配合解决大规模 ES 集群使用和运维的各种问题,因此它具有以下优点:

  • 平台侧服务易用性提升:提供功能强大和易用的用户控制台,提供索引、集群、mapping 等常用操作,降低用户使用 ElasticSearch 的成本。
  • 管控侧运维成本降低:提供功能强大和易用的管控平台,开发和运维可以方便的操作集群管控、索引管控、权限管控,降低服务运维成本;提供全面和丰富的监控指标,方便开发和运维快速掌握集群的运行时状态。
  • 引擎侧引擎能力提升:深入引擎定制开发跨集群数据复制、FastIndex 离线索引创建等特性,提升 ElasticSearch 集群稳定性和性能。

7、未来规划

LogiEM 0.1版本开源只是滴滴搜索团队开源的第一个目标,后续我们将继续基于 LogiEM 提供更多的功能,主要有以下几点:

  • 平台侧提供更丰富的能力:进一步的简化用户的使用,提升用户的体验,丰富用户能力,比如:索引重建、索引备份、索引 shard 迁移等、集群索引模板反向构建。
  • 运维侧提供更智能的能力:基于全面的采集和分析的指标,提供更加智能的集群诊断系统,比如:集群总览大盘、集群健康诊断等功能。
  • 引擎侧提供更深入的能力:在引擎上会进一步的提升引擎级别监控和诊断能力,比如:全链路(客户端、网关、引擎)日志诊断系统。