前面说了那么多异步的知识,全是说的概念知识,这章我们来说说现实一点的东西,那就是异步的特点,直接关系到用户体验。
优点:
- 异步操作无须额外的线程负担,使用回调的方式进行后续处理,在设计良好的情况下,处理函数可以不必使用共享变量,减少了死锁的可能。
- 线程数量的减少,减少了线程上下文在CPU切换的开销。
- 微服务环境加上了上层接口的响应时间,以为这增加了上层接口的吞吐量。
劣势:
- 异步操作传统的做法都是通过回调函数来实现的,与同步思维有些差异,而且难以调试。
- 当前环境有操作顺序的要求,异步操作为了保证执行的顺序需要额外的操作。
- 由于多数情况下异步的回调过程中的执行线程并非原来的线程,所以在补货异常,上下文传递等方面需要做特殊处理,特别是不同线程共享代码或共享数据时极易出错。
最后,为了系统性能,不要让任何设备停下来休息是我们的工作。
- 在并发量小的情况下,阻塞式IO和异步IO的差距几乎不怎么明显,但随着并发量的增加,异步IO的优势将会越来越大,吞吐率和性能上的差距也会越来越明显。
- 在压力小的情况下,一般异步请求的响应时间大于同步请求的时间,因为异步的回调也是需要时间的。
- 在打并发的情况下,采用异步调用的程序所用的线程数要远远小于同步调用程序程序所用的线程数,COU使用率也一样。
|