SysLog个人经验总结和分享

本文记录了SysLog从初期的简单实现到逐步优化的过程,包括如何通过数据库优化、缓存策略、分表策略、多线程和并发控制提高性能。通过定时计算、数据分表、使用线程池和ConcurrentHashMap等技术,提升了查询速度和入库效率,解决了数据量增大带来的问题。
摘要由CSDN通过智能技术生成

写这篇文章算是对我来淘宝平台架构组实习的一个总结吧。

开始接手SysLog的时候,那时候SysLog是比较粗糙的,一天只有几万条数据,显示图的曲线都是一路往上涨的,数据的值是直接累加,很难看出某个时间点的值,只能从曲线的曲率上大概判断现在是不是增长的很快。开始的时候需求很简单,毕玄只是让只是要让曲线按照每一分钟的实际值显示就行了。

还记得当时改的时候真的是一步三回头,在学校的时候哪有这种经历,自己做的东西马上要给别人用了。那次是查了又查,还是担心。虽然真的就改了一点点东西。这感觉相信每个从学校刚出来的人都会经历的:紧张,激动,兴奋&&担忧。

其实当时的结构还是比较简单直接的。数据库中一个月才一张表,就是原始数据表,那时候一个一天才几万的数据量。

实现方案

入库:

接收到客户端数据解析直接入库

查看:

获取参数从原始数据表取数据处理数据展示

这时候没学到多少技术,学到最多的是就是debug,其实就debug的步骤没什么好说的:设置断点,单步跟踪,运行到返回,运行到下一个断点更重要的是在debug之前,造成错误结果的可能的原因在哪,先找到原因再下断点。当然肯定会有无从下手的时候,那没办法,从开始就下断点,一步步的跟踪,每一步对比跟是不是预期值,这个要是错过了一步可能就得从头再来,比较恶心。

=================================下面是历史的改进==============================

问题一:如何让用户更快速的查看历史或当前的数据?

当数据量开始增大的时候,从每天几万条增长到几十万条,程序不做优化,mysql有点开始有点吃力了。

记得某天早上,华黎师兄过来跟我说:小伙,现在访问一个页面要10分钟才能刷出来,都不敢刷新啊。我大囧。然后黎叔给我了一些建议,说用缓存吧,以至于我建的表名都是listCachexxx(其实就是把中间结果存起来)

优化一:对已经入库的数据定时的进行计算,将计算结果存放至另外的表中。用户请求数据直接返回计算好的结果

实现方案:

入库:

接收到agent的数据解析直接入库

更新:

接受更新请求取出原始数据中需要更新的数据处理原始数据放入缓存

查看:

获取参数缓存表取数据展示数据

优化结果:请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值