分类 系统设计 下的文章

PromQL 是 Prometheus Query Language 的缩写,是一种用于查询 Prometheus 监控数据的查询语言。以下是一些有用的示例:

显示某个指标的平均值:
avg(metric_name)
这将计算指定指标的所有采样值的平均值。

显示指标的最大值:
max(metric_name)
这会显示指定指标的最大值。

显示过去 5 分钟内某个指标的总和:
sum_over_time(metric_name[5m])
这将计算指定指标在过去 5 分钟内的所有采样值之和。

显示某个指标在某个时间范围内的百分比:
avg_over_time(metric_name[1h]) / ignoring (instance) group_left sum(avg_over_time(metric_name[1h])) * 100
这将计算在过去一小时内,指定指标的平均值与该指标所有实例的平均值之比,并将结果转换为百分比。

Prometheus 官方文档中的 PromQL 部分。

有些业务场景,为了提高查询速度,会将结果存在缓存中,当db数据变化时,将可能出现数据不一致问题。原因有三种:
1.db读写分离,主从延迟
2.时序性
3.原子性

解决方案:
1.强一致性。分布式事务(2pc, 3pc)
2.降低并发时脏数据的概率
3.缩小不一致的时间,保证最终一致性。