在来新公司差不多3个月的时候,老板让我完成一下组内的KPI — 在公司内部的技术分享会上来波分享。刚开始还是有点慌的,但是换位想想,其实可以把这个机会当成自己这段时间的工作总结,也可以锻炼锻炼分享能力,何乐而不为呢。然后果(you)断(yu)的就答应了。

其实想起来写这篇文章,分享已经结束差不多要一个月了。想想不能就这样结束了,还是要整理一些资料做为产出。所以就有了这篇文章,对分享PPT做了删减和去敏。

前端监控系统

一般的监控系统会分为四个部分,包括采集上报、日志存储、统计分析和数据展示。在我们公司内部是通过两个项目来分拆实现。

下面介绍一下系统流程,我们的数据会通过两种形式上传,一种是性能数据,一种是业务数据。性能数据则会按照流程图的顺序,将数据导入kafka,flink进行消费,然后存入clickhouse,clickhouse再根据相应聚合函数,生成对应的物化视图,便于node查询。因为clickhouse是一个擅长联机分析(OLAP)的数据库,但是对于常规的事务查询不太适合,所以我们会使用postgre作为业务逻辑存储。

上面流程图中讲到,数据存储和清洗的过程,对于前端同学来说,可能还是比较陌生的。我们先来一些下面几个名词。kafka、Flink、Clickhouse、物化视图。

上面这个图大家应该有了大概的认识,我这边重点讲讲物化视图。物化视图和普通视图对比,普通视图其实是SQL的封装,并不存储数据,但物化视图不同,它是会存储查询结果的中间状态,可以理解为是一个非常趋近于表的视图。如图我们举个例子,需要创建物化视图,就需要我们根据图上的SQL语句来创建。创建完成后,(看左下角图)当主表数据添加时,就会触发物化视图的sql,然后结果数据就会存储到由物化视图引擎生成的私有表。下次查询物化视图时,就会直接去查询私有表,而不是主表的数据。这样的实现,其实就是典型的空间换时间的思路。

介绍完数据存储过程,接下来就来看看我们的前端监控系统吧,看看他是如何实现的。整个系统主要分为三个部分,一个是数据层,就是上面讲到的用于保障数据来源。第二是逻辑层,主要负责页面展示逻辑,数据分析逻辑。第三是展示层,主要负责数据分析展示和信息展示。

下面是我们系统主要的几个功能:

自助分析能力

看到自助分析,大家肯定会问,什么是自助分析能力。其实自助分析能力,可以简单理解为可视化的SQL能力。通过一些表单的形式,或者是一些简易的SQL拼装,就能查询到自己想要结果的能力。

那为什么要做自助分析能力呢?主要是下面三方面原因:

下面这张图,主要介绍了我们自助分析能力的几个主要模块:

我抽两个比较重要的模块展开来讲一下,下面这个是我们的查询模块,也是最主要的模块之一了。通过两种不同的查询方式,拆成简单查询和高级查询,简单查询主要是通过表单方式,选择和填写查询条件,最终组装成查询语句。高级查询,则是可以通过sql的方式,进行一些复杂查询,并支持输入联想提示。

实现原来主要是通过对查询语句的拆解、校验和组装,形成一个可靠的查询SQL,得到最终的结果。

另外一个比较重要的模块就是自建看板了,自建看板主要是用于上面查询出的结果的聚合展示,独立分析。

通过将查询类型、查询规则、图表类型和图表配置聚合,形成独立的查询单元。当查询单元和单一的时间组合,就成了自助查询。当多个查询单元和时间、权限组合,就形成了自建看看板。

从上面的介绍可以看出,自助分析能力,主要做了三件事。简化SQL成本,保证数据安全,提高看板灵活度。

以上就是之前分享的主要内容了,总算能给自己一个交代了。