1、在线检测流程及开发
文章目录
1.1 计算代码需要具备的功能
- 验证数据是否是有效数据
- 验证数据的完整性
- 是否会出现重复数据
- 计算要有实时性,即关即停,即开即算,能够最大程度减小停机对系统的影响
1.2 日志系统需要具备的功能
- 能够帮助开发人员对数据和计算过程起到非常有效的监控作用
- 禁止在代码中使用print打印,所有想要知道的信息都由日志打印(防止出现print打印数据和日志粘连在一起,提高日志分析难度)
1.3 整体代码需要具备的条件
- 代码需要具有较高性能,
- 能够考虑到一些地方出错可能性,在代码上得到体现
- 配置和代码分开,便于以后修改配置;
- 异常问题需要考虑到
2、 存在的难点以及解决办法
2.2 解决办法
2.2.1 假设所有数据都能够做到正确无误
那么用字典做缓存,这样就可以用所有办法来对某指标进行检测了
2.2.2 如果数据存在失误
2.2.2.1 数据库中的数据有缺失
缺失存在两种情况
- 一种是某个时刻没有采样到
- 一种是采样时间发生了偏移
2.2.2.2 数据库中的数据有重复
针对重复数据如何处理
2.2.2.3 数据库中的数据有null值
2.2.2.4 kafka来的数据顺序存在混乱问题
顺序存在问题,
第一个,如何检测到顺序混乱
第二个,如何解决顺序混乱
2.2.2.5 kafka来的数据存在null值情况
如果出现null值,就写入日志中,并且提高告警级别
2.2.2.6 用什么数据结构来存储历史数据
总结
其实开发确实和编程非常像
- 要想清楚处理流程;
- 要把会遇见的一些问题给想到,并且能够想到办法去解决它们,有时候想不出来解决办法,就多想几遍;
- 分模块编程,没有必要考虑到其他模块是不是没有准备好,也不要指望其他模块能够给出一个标准的数据格式,对于数据复杂状态的了解程度,是数据处理模块应该去做的事情,只是这个过程,确实需要一段时间;
4、编程规范要做好,不要自己写的程序,自己都不乐意看;