V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qwer666df
V2EX  ›  Java

Java 读取数据库里有 50w 条网络图片记录然后下载到本地

  •  
  •   qwer666df · 2022-08-15 10:33:47 +08:00 · 1834 次点击
    这是一个创建于 618 天前的主题,其中的信息可能已经有所发展或是发生改变。
    求效率最快的思路
    7 条回复    2022-08-18 11:24:23 +08:00
    someonedeng
        1
    someonedeng  
       2022-08-15 11:06:51 +08:00
    按批次 select 出来塞线程池跑就好了
    lmshl
        2
    lmshl  
       2022-08-15 11:26:56 +08:00
    1. 选一个 reactive stream 库(比如 akka-stream )
    2. 数据源(例如 jdbc )包装为 stream source (一般 reactive stream 已经有包装好的)
    3. 在 mapAsync(parallelism = <根据你的网络与综合性能设定的并行度>) 中实现你的 http download (推荐 akka-http ) 逻辑
    4. 把它润起来

    优点是不需要管理线程池,全程异步,如果网速不快的话,那 CPU 会很低。如果网速足够快,CPU 也不会浪费在无意义的上下文切换
    java253738191
        3
    java253738191  
       2022-08-15 11:41:20 +08:00
    datax+udf
    qwer666df
        4
    qwer666df  
    OP
       2022-08-15 16:50:07 +08:00
    @lmshl 这个好像很高级的样子我=看看

    @someonedeng 目前先这么弄了..感觉很低级就是说
    someonedeng
        5
    someonedeng  
       2022-08-15 22:23:56 +08:00
    @qwer666df 50 万行又不多,随便搞搞就好了
    letitbesqzr
        6
    letitbesqzr  
       2022-08-15 22:32:09 +08:00
    50 多万 就别折腾了... 那些复杂的流程写完以后.. 开多线程都已经下完了
    yuuyoo
        7
    yuuyoo  
       2022-08-18 11:24:23 +08:00
    导入迅雷批量下载
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3216 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 12:04 · PVG 20:04 · LAX 05:04 · JFK 08:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.