zoukankan      html  css  js  c++  java
  • 多线程处理海量数据的解决方案

    背景:

      近期发现系统数据有不准确的现象发生,究其原因是因为上有数据导致的,而由于上游有多个渠道组成,所以无法要求上游统一修复数据。所以只能自己想办法每天修复错误数据。

    初步解决方案:

      1,从商城库存那边拿到所有SKU+库存的信息。

      2,通过拿到的SKU+库存信息,修复现有的数据。

    遇到的问题:

      1,库存那边的数据是以SKU+仓库id+配送中心id为维度,但是我们这边需要的是SKU+ORG维度。

      2,全量库存数据有1.2个亿。

    解决办法:

      1,先把库存的原始数据(SKU+仓库ID+配送中心id)数据落地。

      2,将原始数据清洗为SKU+ORG维度。

      3,将清洗好的数据中过滤掉,不需要的库存信息。

      4,开启多个多线程同时修复数据。

    多线程部分:

      共同时开启4个线程(0、1、2、3),用SKU_ID对4取模

      也就是说:

      线程0处理的数据范围为:SKU_ID%4=0 的数据。

      线程1处理的数据范围为:SKU_ID%4=1 的数据。

      线程2处理的数据范围为:SKU_ID%4=2 的数据。

      线程3处理的数据范围为:SKU_ID%4=3 的数据。

    每个线程,每次再分页处理数据,即可。经过尝试,1.2个亿的数据分4个线程大概半个小时,即可处理完。

  • 相关阅读:
    CODE[VS] 1018 单词接龙
    Linux提示BOOT空间不足问题
    CODE[VS] 1017 乘积最大
    关于printf输出结果的一些问题
    CODE[VS] 1220 数字三角形
    redux
    Promise面试题
    学习Promise笔记
    js 事件委托 事件代理
    前端通信、跨域
  • 原文地址:https://www.cnblogs.com/FranklinD/p/7266362.html
Copyright © 2011-2022 走看看