【设计】时序类数据 统计

主要用于服务的打点、数值分布以及延时统计。

实现分成下面几个部分:

1.客户端sdk;

2.发送进程;

3.接收进程;

4.web客户端展示;

 

1.sdk:

提供类似如下的接口:

log(name, count, value)

name是统计名称,与业务相关;

count是计数器;

value是分布的值,比如延迟;

count与value可以不同时存在,看具体使用需求。

业务进程调用sdk发送,sdk可以在业务进程内按时间做一个聚合,然后写入本地。

 

2.发送:

有一个专门的发送进程,负责将本地的聚合数据发送至远程数据服务器,可以是kafka等。这样业务进程的压力小。

 

3.接受:

接受聚合数据,落地存储。es,nosql之类的。需要支持多维度查询。

 

4.web展示:

grafana等。

 

 

 

工具类Util提供一个count接口:

count(name, c)。

Util存一个map,这里的name就是key,name可以是要监控的接口名。c表示接口调用次数,调一次接口c就是1。所以c一般就是1。Util会把name的value加一个c。这样这个name的value就会一直递增下去。我们可以让这个Util每隔一段时间t就发送一次map,这里可以做成异步的。下游有一个接收器,取到map的value就显示与上一个周期发来的value的差,那么这个数就可以表示在这个周期内接口的调用次数。最后可以把这个做成折线图,就做出一个简单的服务监控系统。

当然还可以监控延迟:

count(name,c,time),这里的time表示生成这个c的接口的调用的时间。还是周期性的发送map,只不过如果有time值,那么就在这个周期内按time排序,返回周期内time的最大值,平均值等,用来度量这个周期的平均延迟或者最大延迟。

 

当然设计的时候这个Util应该提供static方法,map应该是concurrentHashmap,而且value加c的时候要注意并发,最好使用atomic包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值