相关文章推荐
宽容的黑框眼镜  ·  ~eliasnaur/gio: ...·  1 月前    · 
狂野的麦片  ·  Output Formats ...·  3 月前    · 
含蓄的消防车  ·  学院概况·  5 月前    · 
踢足球的鼠标  ·  错误 199 error C2227: ...·  6 月前    · 

滴滴 Elasticsearch 简介

简介

Elasticsearch 是一个基于 Lucene 构建的开源、分布式、RESTful 接口的全文搜索引擎,其每个字段均可被索引,且能够横向扩展至数以百计的服务器存储以及处理 TB 级的数据,其可以在极短的时间内存储、搜索和分析大量的数据。

滴滴 ES 发展至今,承接了公司绝大部分端上文本检索、少部分日志场景和向量检索场景,包括地图 POI 检索、订单检索、客服、内搜及把脉日志 ELK 场景等。滴滴 ES 在2020年由2.X升级到7.6.0,近几年围绕保稳定、控成本、提效能和优生态这几个方向持续探索和改进,本文会围绕这几个方向展开介绍。

滴滴 ES 整体产品架构如上图所示,目前ES服务基于物理机部署,Gateway 和管控基于容器部署,我们也调研过 ES on K8S,因为我们 ES 的业务场景多是在线端上文本检索,考虑到稳定性,所以最后还是决定使用物理机部署模式。

管控层主要负责实现以下功能:智能 segment Merge(防止 segment 膨胀导致 datanode Full GC),索引生命周期管理,索引预创建(避免每天凌晨索引集中创建,导致 Master/Clientnode OOM),租户管控等。

网关层(Gateway)除了负责读写转发外,还具备查询优化能力(例如,将 BKD 查询改写为数值类型的等值查询或范围查询)、三级限流(包括 AppID、索引模板级别和查询 DSL 级别)、租户鉴权功能以及 SQL 能力(基于 NLPChina 开源的 ES SQL 能力进行魔改并封装到 Gateway)等。我们的检索服务仅对外暴露 Gateway 接口。

用户控制台

用户控制台是我们提供给业务方产品接入的平台,主要功能:

  • 应用管理:允许业务方通过申请 AppID 来获取读写索引的权限。
  • 索引管理:支持新建索引、申请索引读写权限、索引 mapping 创建和更改、以及索引的清理和下线操作。
  • 检索查询提供多种查询方式,包括 Kibana、DSL 和 SQL,以满足不同的查询需求。

    同时业务方可以在查询分析模块看到对应的异常分析和慢查分析等,方便查询优化。监控方面业务方可以查看索引元信息(如文档数及大小等)以及读写速率等,以监控系统运行状态。

    运维管控平台

    运维管控平台主要是满足 RD 和 SRE 日常运维需求,主要功能包括以下几个方面:

  • 集群管控:展示集群信息,对用户暴露的是逻辑集群,一个逻辑集群可包含多个物理集群,如用户看到的集群信息是一个 important 公共集群,但是真实的物理集群包含几十个小的公共 important 集群
  • 租户管理(租户元信息和租户级别的限流)
  • 模版管理:索引模板元数据管理,非更新索引可以通过升版本调整 shard 数,也可以在此处对索引模板限流
  • 异常分析:模版分析、慢查分析及异常分析
  • 操作记录:用户行为及管控定时任务记录
  • Elasticsearch 在滴滴的应用

    业务场景