某个计数器应用采集端分析
在我们应用经常需要统计一些计数,比如调用次数等。典型代码如下:
??处理流程:
1.? 初始化:
MonitorLog被加载时执行其static区代码:
// 循环把已经写入文件的数据从datas中减少 for (Keys key: tmp.keySet()) { long[]values = tmp.get(key).getValues(); appDatas.get(key).deductCount(values[0],values[1]); }?e.? 同样方式刷中间件的日志数据
f.? MonitorLog刷到磁盘的数据,会由哈勃的agent定期回收到哈勃服务端存储
?
????? 小结:
1.?使用Map务必注意map引起的内存泄漏问题,size检查必不可少
2.?Flush线程和业务线程并发控制很重要,使用CAS以提高并发性能
3.?需要对同一个对象的不同属性进行原子更新时,可以使用AtomicReference+CAS实现
?
?