博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据处理程序的一点经验
阅读量:5069 次
发布时间:2019-06-12

本文共 853 字,大约阅读时间需要 2 分钟。

      背景:前几天,同事告诉我DSR(内部一个数据处理应用)又挂了,这次的数据丢失特别严重,有25天的数据受到影响。这已经是上线来的第三次出问题了,如果再不认真处理,下次肯定还会有这种问题。

结合同事经常抱怨的事情和我自己的经验,数据处理程序里常见的坑点有:
     1.程序升级、迁移等运维需求导致配置错误
     2.程序自身的bug
     3.外部依赖项的变更
     4.部分内容缺少相应的测试环境,测试困难
      对于第一点,比较好的方案是使用两套配置文件:开发和线上,基于maven的profile,可以很方便地做到这点,这样把配置的工作的将由程序来完成,可以减少人工出错,也便于开发和维护。同时,在修改完成配置后,需要去检查配置到底生效没有
      对于第2个问题,我觉得既然bug无法彻底消除,那就要想办法降低它的伤害,并提高调试开发的工作效率。首先就是要把原始的数据记录下来,例如,从消息队列中读取的每条消息,都可以存起来,这样当程序没有正确保存数据时,还可以在修复完数据之后把这部分数据追加回去。其次是记录程序中发生的异常,并在关键逻辑节点上输出日志,这样调试找问题的时候就会非常简单。
     第3个问题的话,就需要引入监控,外部依赖项的变更导致的各种异常,如输出数据的数量、外部接口的调用情况、异常的次数等,通过统计程序的运行情况,可以较快地发现,从而减少这个依赖项变化带来的破坏。
其他的经验还包括:
    a.对于数据处理程序应该有至少两种运行模式:
        1.定时运行的正常模式
        2.补充数据时的批处理模式,最好允许在命令中输入参数,对于调试会比较方便
        3.测试接口和验证特定数据的测试模式,可选
    b.过早的优化是魔鬼。先弄清楚需求,搞清楚数据量、接口吞吐量等功能非功能性需求之后,再去考虑性能等问题,过早的优化只会让自己陷入泥潭
    c.对程序的关键/重要依赖项和指标进行监控,出现问题里及早修复
  以上就是这段时间主要碰到的问题和解决方式

转载于:https://www.cnblogs.com/showstone/p/4433340.html

你可能感兴趣的文章
【Unity入门】编辑器常用视图介绍
查看>>
bzoj-2243 2243: [SDOI2011]染色(树链剖分)
查看>>
在CentOS上构建.net自动化编译环境
查看>>
企业信息管理与大数据
查看>>
document.ready和window.onload的区别
查看>>
PL/SQL集合 ----- varrays
查看>>
BZOJ 3585: mex【莫队+树状数组】
查看>>
Perl数据类型
查看>>
深度和广度查找
查看>>
Windows Server 2003开机自动启动MySQL服务设置方法
查看>>
js math atan2
查看>>
spring 配置 Java配置类装配bean
查看>>
LDAP服务端 - 调研
查看>>
EventBus的粘性事件
查看>>
基于ivy的源代码调试方法
查看>>
田忌赛马之最弱马又克制最强马问题。
查看>>
P3796 【模板】AC自动机(加强版)
查看>>
MongoDB比较两列大小 使用$subtract函数
查看>>
BMW INPA / EDIABAS full iso torrent Free download
查看>>
iOS开发关于Block代码错误
查看>>