1 集群环境下,利用多实例处理复杂的单一请求
我们开发之中常常遇到这样的场景,单一的一个请求处理某一批数据,
或者对某一批数据进行计算,例如定时任务需要批量处理某些数据,
那么定时任务的job服务,调用对应服务的时候,由网关分配了某一个实例进行处理,
这种场景,如果用普通的开发方式会有一些弊端,无法合理的利用服务器资源,
出现某一个实例一直高负荷运转,其他实例空闲的情况,
对请求的处理也花了更多的执行时间。
## 2 思路:
利用生产者消费者的方式,单一的请求负责生产数据,
获取到需要计算的资源放到共享队列里,利用每个服务实例实现多消费者去消费。
## 2 方案:
定时任务调用的接口只负责将待处理的数据放到数据库,或者redis,
每个实例启动对应的监控线程或线程池,检测到数据,
则加锁取一部分数据(根据计算机的处理能力)进行处理,处理完之后再次检测,
如果有数据则继续获取进行处理。获取数据的同时修改当前数据的状态,
防止其他实例再次获取,引起重复消费。