基于日志查询的并发调度算法优化
背景:
高峰日志查询时,单机开多并发查询日志,会出现io负载过重,影响服务稳定性,优化单机并发处理。
名词解释:A、B、C 机器列表
A1 为机器A的第一个实例
前提:脚本获取机器列表为单机顺序排序(A1、A2、B1、B2、C1),如果按照顺序执行,会导致单机不同实例并发执行影响机器性能
执行过程:如并发数是3,执行过程为第一阶段 A1、A2、B1 第二阶段 B2、C1
解决思路:在任务执行前打乱任务顺序,实现不同机器的并发。
1.根据机器顺序,赋予哈希值
哈希算法:对于第N个的机器第M个实例赋值为N+(M-1)*总实例数
结果:([A1,1]、[A2,6]、[B1,2]、[B2,7]、[C1,3])
2.根据哈希值排序
结果:([A1,1]、[B1,2]、[C1,3]、[A2,6]、[B2,7])
执行过程:如并发数是3,执行过程为第一阶段 A1、B1 、C1第二阶段 A2、B2