请问大佬们 如何将数据库中的任务给微服务均匀执行? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jackiejkl
V2EX    Java

请问大佬们 如何将数据库中的任务给微服务均匀执行?

  •  
  •   jackiejkl 2022-06-25 00:11:26 +08:00 2636 次点击
    这是一个创建于 1210 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设一张表里有 1000 条命令,每条命令都需要长时间网络 IO (不怎么消耗本地资源),现有若干个微服务,如何让这些微服务平均的分配并执行这些命令?
    16 条回复    2022-06-26 19:28:48 +08:00
    Jooooooooo
        1
    Jooooooooo  
       2022-06-25 00:15:36 +08:00
    要不研究下 cpu 的调度算法, 和你想解决的问题其实是一回事.
    CEBBCAT
        2
    CEBBCAT  
       2022-06-25 01:04:15 +08:00
    我来抬杠了:如何定义均匀?如果只是网络 IO ,那就多开并行数同时请求呗
    jackiejkl
        3
    jackiejkl  
    OP
       2022-06-25 02:24:01 +08:00
    @CEBBCAT 那万一其中一个微服务开了 1000 条线程在那等呢?
    CEBBCAT
        4
    CEBBCAT  
       2022-06-25 02:56:39 +08:00 via iPhone
    @jackiejkl 等就等呗
    controller
        5
    controller  
       2022-06-25 08:15:40 +08:00 via Android   2
    消息队列,空闲客户端会自动获取任务执行
    546L5LiK6ZOt
        6
    546L5LiK6ZOt  
       2022-06-25 08:49:38 +08:00
    @jackiejkl 有 nio ,一个线程就可以发起多个网络 io 请求
    clayyj1210
        7
    clayyj1210  
       2022-06-25 08:53:29 +08:00
    每个微服的线程池设定小一点咯。
    jackiejkl
        8
    jackiejkl  
    OP
       2022-06-25 13:37:30 +08:00
    @546L5LiK6ZOt
    @clayyj1210
    可以,我学一下
    jackiejkl
        9
    jackiejkl  
    OP
       2022-06-25 13:39:19 +08:00
    @clayyj1210 不对啊,难点在于分配,线程池这里都已经获取到了,要是在线程池里去获取的话就保证不了准时了
    THESDZ
        10
    THESDZ  
       2022-06-25 15:25:04 +08:00
    @jackiejkl 一个服务做推送,其他的服务去队列拿呗
    c0t
        11
    c0t  
       2022-06-26 12:21:25 +08:00 via Android
    我之前用的方案也是消息队列,命令是幂等的就更好了
    jackiejkl
        12
    jackiejkl  
    OP
       2022-06-26 13:24:33 +08:00
    @THESDZ 那如果没有一个专门的服务做推送咋办..
    jones2000
        13
    jones2000  
       2022-06-26 13:36:39 +08:00
    数据库前面加一个前置的任务调用服务,所有数据库操作都通过这个前置来控制。
    EscYezi
        14
    EscYezi  
       2022-06-26 13:53:24 +08:00 via iPhone
    给每个微服务指定同时运行命令的上限,主线程检测到当前运行命令数小于上限时去数据库取一条命令提交到线程池运行
    理论上可以做到比较均匀
    Geraltt
        15
    Geraltt  
       2022-06-26 15:17:50 +08:00
    有必要造轮子吗? XXL 、Elastic job 啥的不能满足吗
    sun1993
        16
    sun1993  
       2022-06-26 19:28:48 +08:00
    给这 1000 条指令取出来,然后用最基本的轮询算法挨个儿发给这些机器不就得了(可能会错意了,乱说的 233 )
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1488 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 16:40 PVG 00:40 LAX 09:40 JFK 12:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86