阅读量:0
面试题如下:
题目要求你实现一个 Monitor.counter(String code, String dim)
接口,用于监控数据统计。
具体要求:
- 数据聚合: 你需要按照
code
和dim
的组合进行数据聚合,code
代表监控项的唯一标识,dim
为自定义维度。 - 上报频率: 每分钟上报一次聚合后的数据。
- 数据保证: 要确保数据不能丢失,即使
Monitor.counter
接口调用频繁且code
和dim
的组合数量可控。 - 上报接口: 你可以使用已有的
Monitor.report(String code, String dim, long count)
接口上报数据,其中count
是对应code
和dim
组合在一分钟内的计数。
需要考虑的问题
- 对于监控场景,统计用户pv,数据量可能贼大,所以这个每次都上报数据,会导致监控系统负载比较大,而且监控数据不需要特别实时,所以可以现在本地聚合,然后再上报。比如每分钟上报一次。
- 涉及到本地聚合,数据不能丢失,需要考虑到线程安全的问题,避免数据混乱统计错误。