棋德隆东强 (@flagpig) 在 佬们求解高并发场景的问题 中发帖
接手了同事一个高并发的场景问题,理论上峰值一秒要处理500次请求,
之前他和领导是讨论开发了这么一个方案:用redis做消息队列存储初始请求,然后写了一个定时任务定时扫描线程池里队列空闲的数量,如果队列有空闲值,从redis消息队列里消费数据,压到线程池里执行业务操作,以此循环。
大概代码过程
定时任务A {
1.判断线程池是否有空闲队列
2.从redis中获取消息
3. 线程池操作调用方法B
executor.execute(() -> {
方法B(xxx);
});
}
方法B进行了一些业务操作,然后调用了一个查询表数据的方法
方法B(xxx):{
long time1 = System.currentTimeMillis();
log.info("业务【" + xxx + "】time1 " ...