Loki支持BloomFilter的调研

本文调研了Loki如何通过引入BloomFilter提高针对特定Key(如requestid)的日志检索性能。预计在某些场景下可实现约8000倍的性能提升。成本增加主要是日志存储占比提升约0.25%,以及可能的查询语句转换和Schema管理的挑战。
摘要由CSDN通过智能技术生成

方案概要

  1. Loki支持对于用户指定的Key可以开启BloomFilter,解决根据requestid等在时间上分布集中的字段来检索日志的性能问题

性能预估和成本估计

假设:

  1. 单条日志500字节,压缩比5,单个chunk大小压缩后4MB,一个chunk中有50000条日志,1个chunk对应一个bloomfilter
  2. BloomFilter参数:误判率0.9%,散列函数个数5,1个元素占用10bit。参见附录

性能提升预估

1、requestId场景,假设在M个chunk中存在该数据

2、若没有BloomFilter,需要扫描N个chunk的数据,即需要对50000*N条日志进行json序列化和grep计算

3、若采用BloomFilter,N * 99.1%的chunk进行5次散列计算,0.9*N的chunk需要进行扫描确认;另外命中的M个chunk也需要扫描

4、假设json序列化和grep计算的性能和单次散列的耗时一样,实际情况散列的性能应该会好很多

有BloomFilter的计算次数 没有BloomFilter的计算次数
5.855 * N + M * 50000 50000*N

若 M << N,则性能优化大约为8000倍

成本增加预估

暂不考虑对于写入性能的影响导致ingester机器数目则增加

1条日志需要10bit,单条日志500 Byte;所以存储占比 1.25/500 = 0.25%

流程示意</

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值