美文网首页
大数据量补数据、修数据的一些思路

大数据量补数据、修数据的一些思路

作者: wangxiaowu241 | 来源:发表于2018-12-07 10:07 被阅读0次

    正常开发中,因为迭代速度较快,有时候业务可能要求新做的一些需求和原来有冲突,比如说订单价格以前就是简单的价格显示,后来要求显示原价、优惠券优惠价格等等,那么我们就要将旧数据批量处理下。简单的可以通过SQL去处理,复杂一点的,掺杂一些较复杂逻辑判断的,我们就要通过程序去处理,那么在新功能上线之后,就要通过一些方式去批量处理这些旧数据。
    以下个人在批量处理一些数据时的愚见,仅供参考。

    补数据、修数据:
    1.先将补数据所需条件,如调用service层所需的一些参数等初始化到一张临时表中。这里一般不建议直接操作业务表,可能会对正常业务造成压力。
    2.创建线程池,此线程池大小不易太大,不着急的业务可以创建拥有单个线程的线程池慢慢跑,这样开发起来不用担心多线程的问题。
    3.创建线程内任务,任务具体内容就是先从数据库表中将参数查询出来,然后调用service层接口或者其他服务接口。
    4.最好不要直接掉service层,如果可以,最好和正常流程一样,调用自己接口,保证逻辑一样,后续排查问题也方便。如果调用自己服务service层,切记不能加@Transcation注解,会锁表,因为数量太多,建议每一千条操作更新操作状态(成功/失败)到数据库(酌情增减)
    5.注意原子性,参数表中加字段标识已处理完成,万一因为发版、服务不可用等其他因素,还可以追溯,方便再次补数据
    6.如果多个线程一起补数据,记得分片处理,充分发挥多个线程的能力。
    7.每一千条,建议Thread.sleep()一会,避免对CPU造成过大压力。
    8.如果服务内部有全链路监控的话,建议将traceId或者spanId也存入参数表中,有失败的数据,方便直接根据tracId直接查询到失败原因。

    相关文章

      网友评论

          本文标题:大数据量补数据、修数据的一些思路

          本文链接:https://www.haomeiwen.com/subject/saizcqtx.html