原理
QPS(Query per second):每秒请求数,是衡量服务器处理能力的一个指标。
面对高QPS需要提高应用服务器吞吐量的时候可以用 缓冲、并行线程、异步 等方法。
这里主要讲一下异步线程:
可以把跟客户端(或者说客户)无关但又系统必需的逻辑操作放进线程里,而后交给线程处理器执行,也就是说执行完用户关心的逻辑后就可以返回结果了,很明显这样可以提高响应速度。但要注意的是,如果异步线程里执行的操作比较无关紧要,项目需求也不是很在意这里是否成功的话,那异步线程内抛个异常打印个日志就罢了。而如果异步线程里发生错误会影响数据完整性一致性,或者是系统要求必须的操作,那一定要用线程池/队列来保证该线程正确执行。
事实上,我认为如果主线程内招架得住,就还是不要异步了,尤其是那些“不能忍受错误的”操作更是不要这么干了。
代码
/*上面是必需的处理逻辑*/
//创建一个线程,然后交给线程执行器处理
//这个线程里要执行的操作比较无关紧要,且能允许错误(包括向用户发短信、使用户关注商户等逻辑)
executorTask.doExecute(new DealDoneTaskThread(Long.parseLong(account), order, jdbId, Long.parseLong(model.getTotalAmount()), this));
/*下面就是return返回结果*/