假设一张表里有 1000 条命令,每条命令都需要长时间网络 IO (不怎么消耗本地资源),现有若干个微服务,如何让这些微服务平均的分配并执行这些命令?
|
JoooooooooJun 25, 2022
1
要不研究下 cpu 的调度算法, 和你想解决的问题其实是一回事.
|
|
CEBBCATJun 25, 2022
2
我来抬杠了:如何定义均匀?如果只是网络 IO ,那就多开并行数同时请求呗
|
|
5
消息队列,空闲客户端会自动获取任务执行
|
|
aGVsbG93b3JsZAJun 25, 2022
6
@jackiejkl 有 nio ,一个线程就可以发起多个网络 io 请求
|
|
clayyj1210Jun 25, 2022
7
每个微服的线程池设定小一点咯。
|
|
8
|
|
9
@clayyj1210 不对啊,难点在于分配,线程池这里都已经获取到了,要是在线程池里去获取的话就保证不了准时了
|
|
c0tJun 26, 2022 via Android
11
我之前用的方案也是消息队列,命令是幂等的就更好了
|
|
jones2000Jun 26, 2022
13
数据库前面加一个前置的任务调用服务,所有数据库操作都通过这个前置来控制。
|
|
EscYeziJun 26, 2022 via iPhone
14
给每个微服务指定同时运行命令的上限,主线程检测到当前运行命令数小于上限时去数据库取一条命令提交到线程池运行
理论上可以做到比较均匀 |
|
GeralttJun 26, 2022
15
有必要造轮子吗? XXL 、Elastic job 啥的不能满足吗
|
|
sun1993Jun 26, 2022
16
给这 1000 条指令取出来,然后用最基本的轮询算法挨个儿发给这些机器不就得了(可能会错意了,乱说的 233 )
|