Skip to content

为什么弃用Elasticsearch

es 使用痛点

对于开发来说:

  1. 大批量数据查询导致 es 的 CPU 飙升。
  2. 数据量增大之后,es 的查询效率下降,影响接口性能。
  3. 聚合效率低。

对于运维来说:

  1. 维护成本很大,在数据量大的情况,es 占用磁盘空间很大,没有很好的压缩手段。
  2. es 很占内存,内存配置为整体内存的一半。

问题记录

  • 缓存计算系统评分导致 es 的 cpu 飙升。

    系统评分需要查询 es 的流量信息进行计算,实时查询很慢。做了定时任务计算分数信息并作缓存。

    • 经常发现 es 的 cpu 会被打满。排查发现随着系统的增多,当定时任务跑的时候,批量查询 es 次数太多的时候,es的 cpu 会持续飙升。

业务场景分析

云监控采集的平台数据以流量数据为主,主要是用来进行分析的。

数据一经存入,极少进行增改删操作。是一个很典型的 OLAP(联机分析处理) 场景

ck 和 es 的对比

优点:

  • 硬件资源成本更低,同等场景下,Clickhouse占用的资源更小。
  • 人力成本更低,新人学习、开发单测以及测试方面都更加友好,更容易介入。
  • OLAP场景下Clickhouse比Elasticsearch更适合,聚合计算比Elasticsearch更精确、更快,更节省服务器计算资源。
  • 写入性能更高,同等情况下是Elasticsearch的5倍,写入时消耗的服务器资源更小。
  • Elasticsearch在大量导出情况下频繁GC,严重可能导致宕机,不如Clickhouse稳定。
  • 查询性能平均是Elasticsearch的12.7倍,Clickhouse的查询性能受服务器配置影响较小。

缺点:

  • 关联查询不如单表查询效率高,而且差距很明显。
    • 云监控业务场景极少有关联查询。
  • 在高并发查询上支持的不如Elasticsearch支持的更好。
    • 由于平台是 toB的,不会有很大的 QPS。意味着不会有太多高并发查询。

云监控真实性能对比

  • 压测环境对比组件查询效率提高10倍。
  • 压测环境对比组件写入和更新效果不明显。

技术文章