Gavin Zhu,携程软件技术专家,负责监控系统运维开发、ES系统运维及Clickhouse技术应用推广及运维工作。
ElasticSearch是一种基于Lucene的分布式全文搜索引擎,携程用ES处理日志,目前服务器规模500+,日均日志接入量大约200TB。随着日志量不断增加,一些问题逐渐暴露出来:一方面ES服务器越来越多,投入的成本越来越高;另一方面用户的满意度不高,日志写入延迟、查询慢甚至查不出来的问题一直困扰着用户;而从运维人员的角度看,ES的运维成本较高,运维的压力越来越大。
一、为什么选择ClickHouse
ClickHouse是一款高性能列式分布式数据库管理系统,我们对ClickHouse进行了测试,发现有下列优势:
ClickHouse写入吞吐量大,单服务器日志写入量在50MB到200MB/s,每秒写入超过60w记录数,是ES的5倍以上。在ES中比较常见的写Rejected导致数据丢失、写入延迟等问题,在ClickHouse中不容易发生。
查询速度快,官方宣称数据在pagecache中,单服务器查询速率大约在2-30GB/s;没在pagecache的情况下,查询速度取决于磁盘的读取速率和数据的压缩率。经测试ClickHouse的查询速度比ES快5-30倍以上。
ClickHouse比ES服务器成本更低。一方面ClickHouse的数据压缩比比ES高,相同数据占用的磁盘空间只有ES的1/3到1/30,节省了磁盘空间的同时,也能有效的减少磁盘IO,这也是ClickHouse查询效率更高的原因之一;另一方面ClickHouse比ES占用更少的内存,消耗更少的CPU资源。我们预估用ClickHouse处理日志可以将服务器成本降低一半。
相比ES,ClickHouse稳定性更高,运维成本更低。ES中不同的Group负载不均衡,有的Group负载高,会导致写Rejected等问题,需要人工迁移索引;在ClickHouse中通过集群和Shard策略,采用轮询写的方法,可以让数据比较均衡的分布到所有节点。ES中一个大查询可能导致OOM的问题;ClickHouse通过预设的查询限制,会查询失败,不影响整体的稳定性。ES需要进行冷热数据分离,每天200T的数据搬迁,稍有不慎就会导致搬迁过程发生问题,一旦搬迁失败,热节点可能很快就会被撑爆,导致一大堆人工维护恢复的工作;ClickHouse按天分partition,一般不需要考虑冷热分离,特殊场景用户确实需要冷热分离的,数据量也会小很多,ClickHouse自带的冷热分离机制就可以很好的解决。
ClickHouse采用SQL语法,比ES的DSL更加简单,学习成本更低。
结合携程的日志分析场景,日志进入ES前已经格式化成JSON,同一类日志有统一的Schema,符合ClickHouse Table的模式;日志查询的时候,一般按照某一维度统计数量、总量、均值等,符合ClickHouse面向列式存储的使用场景。
偶尔有少量的场景需要对字符串进行模糊查询,也是先经过一些条件过滤掉大量数据后,再对少量数据进行模糊匹配,ClickHouse也能很好的胜任。另外我们发现90%以上的日志没有使用ES的全文索引特性,因此我们决定尝试用ClickHouse来处理日志。
二、用ClickHouse处理日志
2.1 ClickHouse高可用部署方案
2.1.1 容灾部署与集群规划
我们采用多Shards、2 Repl
作者简介Gavin Zhu,携程软件技术专家,负责监控系统运维开发、ES系统运维及Clickhouse技术应用推广及运维工作。ElasticSearch是一种基于Lucene的分布式全...
1.背景介绍
数据库性能调优是一项至关重要的技术,它可以帮助企业更高效地利用数据资源,提高业务运行效率。
ClickHouse
是一种高性能的列式数据库,它具有非常快的查询速度和高吞吐量。然而,为了实现更高的性能,我们需要对
ClickHouse
进行一定的调优。
在本文中,我们将讨论如何提高
ClickHouse
数据库查询速度的方法。我们将从背景介绍、核心概念与联系、核心算法原理和具体操作步骤、数学模...